圖1.專案主頁
Apache NLPCraft是基於Java語言的開源庫,可以用於向任何應用程式新增自然語言應用。它可以與任何私有或公共資料來源一起使用,並且沒有硬體或軟體限制。您可以使用任何基於JVM的語言(例如Java,Scala,Kotlin,Groovy等)為NLPCraft構建模型。NLPCraft公開了REST API,以與可以用任何語言或系統編寫的使用者應用程式整合。
NLPCraft的關鍵功能之一是其使用高階語義建模,該語義建模是針對特定於領域的自然語言介面量身定製的。它不需要涉及模型訓練或語料庫開發的傳統ML方法,從而可以進行更簡單,更快速的實現。
NLPCraft雖然只能夠處理英語。但是它可以使NLPCraft能夠提供前所未有的易用性,並具有無與倫比的開箱即用英語輸入理解能力。已經表明,在單個框架中支援多種語言會導致功能淡化或配置,培訓和使用過於複雜。
NLPCraft是一個Apache基金會正在孵化的專案。剛開始的時候可能有一些地方會不太盡如人意。但是相信其在後續的版本更新中會有所改善。
使用NLPCraft時,您將處理三個主要元件:
資料模型資料探針REST伺服器圖2. NLPCraft架構
資料模型NLPCraft採用按模型編碼的方法,其中整個資料模型是NCModel Java介面的實現,可以使用Java,Scala,Kotlin或Groovy等任何JVM程式語言進行開發。資料模型實現定義瞭如何解釋使用者輸入,以及如何查詢或控制特定資料來源。程式碼即程式碼本機支援Java生態系統中的任何軟體生命週期工具和框架。
通常,模型的宣告部分將儲存在單獨的JSON或YAML檔案中,以簡化維護。對於模型的複雜程度或可使用的其他工具,沒有任何實際限制。資料模型使用NLPCraft提供的現成的基於意圖的匹配。
要使用資料模型,必須將其部署到資料探針中。
資料探針資料探針是一種輕量級的容器應用程式,旨在安全地部署和管理資料模型。每個探針可以部署和管理多個模型,並且許多探針可以連線到REST伺服器(或REST伺服器群集)。資料探針的主要目的是將資料模型託管與管理來自客戶端的REST呼叫分開。雖然通常只有一臺REST伺服器,但是您可能有多個數據探針部署在不同的地理位置,並且配置不同。
只要有來自REST伺服器的入口連線,資料探針就可以部署和執行在任何地方,並且通常部署在DMZ或靠近目標資料來源的位置:本地,雲中等。資料探針使用強大的256位加密和進入口連線,用於與REST伺服器進行通訊。
REST伺服器REST伺服器(或負載均衡器後面的REST伺服器群集)為使用者應用程式提供URL終結點,以透過資料探針中部署的資料模型使用NLI安全地查詢資料來源。其主要目的是接受來自使用者應用程式的REST-over-HTTP呼叫,管理連線的資料探針,以及將使用者請求路由到請求的資料探針或從請求的資料探針路由。
與每次更改模型(即在開發過程中)時都會重新啟動的資料探針不同,REST伺服器是一個“啟動後忘記”元件,可以啟動一次,而各種資料探針可以不斷地重新連線到它。它通常可以在本地或在雲上作為Docker映像執行。
瞭解有關資料模型,資料探針和REST伺服器的更多資訊。
官網還提供了幾個例子的教程。也可以去看看。都還比較簡單
比如:
開關電燈的例子這個簡單的示例為NLI供電的電燈開關提供了非常簡單的實現。您可以說“關閉整個房子的燈”或“開啟主臥室壁櫥的照明”之類的內容。您可以使用HomeKit或基於Arduino的控制器輕鬆修改意圖回撥以執行實際的燈光切換。
語音設定鬧鐘的例子這個簡單的示例提供了“鬧鐘”實現,您可以在其中請求將計時器設定為從現在開始的特定持續時間,以小時,分鐘和/或秒錶示。您可以說“在3分鐘內ping我”,“在1小時15分鐘內給我報警”或“設定我的鬧鐘30秒”。當計時器計時到時,它將在資料探針控制檯中簡單地打印出“ BEEP BEEP BEEP”。
天氣機器人的例子此示例演示了相對完整的基於NLI的天氣服務,具有JSON輸出和非平凡的意圖匹配邏輯。它使用Apple的DarkSky REST服務獲取實際的天氣資訊。
儘管這些例子相對來說比較簡單,並且僅支援英語。
但是我相信這種類似的支援中文的開源專案也會慢慢多起來的。
並且應用場景也會逐漸的豐富起來!