首頁>技術>

圖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服務獲取實際的天氣資訊。

儘管這些例子相對來說比較簡單,並且僅支援英語。

但是我相信這種類似的支援中文的開源專案也會慢慢多起來的。

並且應用場景也會逐漸的豐富起來!

16
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • Java中主要的List結構——概述