
nlu.png
NLU(自然語言理解)系統(tǒng)是任何現代語音系統(tǒng)的最關鍵模塊。如上圖nlu.png所示,第二部分NLP Tool就是我們這篇文章要討論的,我們這里不討論NLU和NLP的區(qū)別,都以NLU指代。
NLU的輸入輸出
- 輸入是一段人類語言文本,如上圖1模塊所示
- 輸出是一段結構化數據(json/xml etc.),如上圖模塊3所示。主要包含意圖(Intent)和實體(Entities)的抽取結果
NLU服務提供商
正如上圖模塊2所指示,現在很多服務以Restful API和SDK形式向外提供服務。
-
國外:
- Dialogflow 也就是改名前的API.ai (被Google收購的公司)
- Wit.ai (被Facebook收購的公司)
- LUIS (微軟的服務)
-
國內:
筆者用過Dialogflow做英文,也是支持中文,但是服務國內可能被墻;使用過UNIT做中文;同時了解過其他幾個,給出建議是:
- 英文用Dialogflow,免費好用
- 中文可以直接試試DUI,思必馳的這個開放比較晚,更接近Dialogflow的感覺,UNIT對于需要大規(guī)模自己訓練內容的領域來說,泛化效果一般
- 當然,大家自己都可以試試,有好的結果還望相互交流
自己搭建NLU平臺的原因
- 數據敏感
因為前面提到過的平臺都是需要將數據上傳訓練才能獲得服務,對于數據敏感的需求,顯然不能滿足。 - 領域效果差
開放平臺都是通用NLU平臺,各個公司的不收費還愿意提供服務的原因就是想要更多的數據上傳來訓練自己的模型,那么你們業(yè)務所在領域的模塊如果是重要的模型,這些平臺不一定開放已經訓練好的模型。那么結果就是你自己需要大量的訓練。 - 本地支持
如果你還需要本地NLU,而不僅僅是聯網NLU,顯然也不符合要求。
開源NLU引擎選擇
NLU是一個巨大的輪子,沒有足夠的資源自己是搞不起的,尋找開源方案是最快速實現商業(yè)模式的方法,目前找到兩家:
-
Rasa nlu
- 開源時間長,社區(qū)稍微活躍
- 官方還不支持中文,但是有童鞋已經搭建了中文版,引用并感謝他
- 支持本地部署,但是是python程序,各種平臺得自己解決,比如android, ios等等
-
Snips nlu
- 剛剛開源
- 官方不支持中文,也沒有童鞋搞過中文版
- 支持本地部署,而且跨平臺支持,是Rust實現
所以結論
本人NLU小白,想要快速達到效果并可實現,得站在巨人肩膀。所以計劃如下:
- 基于Rasa nlu來實現
- 密切關注Snips nlu