手機智能語言助手開發難度如何?

本科畢業設計,想做一個類似siri的手機應用,但偏向於智能,即要能理解用戶所說的話,這幾天看了相關資料,大概知道開發的難點在於語義識別,涉及自然語言處理領域,以前沒有學過,不知道對於本科畢設來說是不是太難了?另外,要開始著手開發的話需要哪些知識呢?


我曾經對這個方向也很感興趣,也調查過對話系統相關的工作,嘗試回答一下。

語音助手的主要模塊目前有很優秀的現成的工具可以利用,站在巨人的肩膀上自己稍微發揮一下,實現一個demo級的語音助手並不困難。

語音助手無外乎三個部分:

1、語音識別用戶命令

2、分析用戶命令生成對應的指令(比如打電話、添加日程)

3、執行對應的指令

第一部分,可以直接使用開放的語音識別API,記得我當初開發android時SDK里就配了一個例子(那時候還是android2.2)演示了如何使用google提供的語音識別介面。

不過現在開發的話有更好的選擇,就是一眾國內優秀的語音識別服務商:

思必馳:http://cn.aispeech.com/conversation2.html

科大訊飛: http://open.voicecloud.cn/

雲之聲:http://dev.hivoice.cn/index.jsp

他們都提供了手機開發的SDK,具體收費沒細看,應該有免費的吧~

作為現在在搞語音的人,這裡得說一下,目前國內語音相當強,不說超過微軟谷歌也是旗鼓相當。我實際用過思必馳的,感覺相當不錯,另兩家沒試過所以排在下面,但是口碑也都很好。

最關鍵的,國內的這些服務是支持中文的!

so,直接使用他們提供的SDK,語音識別部分so easy。

第二部分,其實應該就是樓主最關心的語義理解部分。

突然發現上面那三家也都提供了語義分析功能……可以像語音識別模塊一樣直接調用它們提供的介面完成語義分析。

具體例子可以參考科大訊飛的在線demo:

http://open.voicecloud.cn/index.php/services/osp

或雲之聲提供的在線demo:

http://dev.hivoice.cn/exp_center/nlu/nlu.jsp

思必馳貌似也提供了語義分析功能,只是沒有在線demo

所謂的語義理解,其實就是對用戶輸入的語句判斷類型(是要打電話?要發簡訊?要添加日程?),然後識別特定信息(比如電話號碼,簡訊內容,日程事件的時間地點)

舉個例子:

輸入1:打電話給張三

輸入2:給張三打電話

這兩個輸入經過語義理解模塊後輸出相同,都是:

類別:call telephone

特定信息(呼叫人):張三

不論是判斷句子類型還是識別關鍵信息,想要做好都不簡單。

上面那個例子比較簡單,你可能會覺得沒啥難的,直接寫規則就可以實現:

首先查詞典,把所有人名都識別出來。

然後寫幾個規則,比如句子里出現了「打電話」,那這個句子就是"call telephone"類的。

這個思路沒有問題,但數據量一大時,就會出現各種問題。

比如對每個新來的句子都要自己設計規則,非常瑣碎。規則之間也可能有衝突、有重複。寫到最後規則完全一團混亂。

解決方法是要麼設計出清晰有序的規則管理框架,要麼使用機器學習的方法來自動「學習規則」,不管哪一個方法工作量都不小。

所以這部分樓主如果想要自己做,難度很大,這裡會涉及大量的自然語言處理的知識,比如分詞、文本分類、句法分析、語義角色標註,這些知識不了解,相應演算法不會用,基本上不可能做出效果好的語義分析模塊。相當於選了hard模式。

選easy模式的話就直接調用SDK提供的介面就好了。

或者二者兼有,在SDK的輸出基礎上再加一些自己的規則。

第三部分,得到語義理解後的結構化的命令後,這部分只是調用手機的API執行命令。沒啥特別的技術難點,打電話、發簡訊、添加日程都有相應的API可以調用,網上的demo例子也有很多。

總結,在國內優秀的語音助手SDK的幫助下,自己搭建一個語音助手demo基本上沒有技術難點。只是看懂SDK怎麼用,然後組裝起來就行了。但即使思路看起來就這麼簡單,真正做起來時還會有各種瑣碎的細節要處理,還有UI要設計製作,還可以添加自己靈光一現的貼心小功能,所以都處理好能正常跑起來工作量還是不小的,完全夠的上一個畢設的工作量。

如果按照我上面列出的思路來做,需要的知識只是

1、智能手機開發的基本知識

2、那三家中的其中一家的SDK的使用方法


推薦閱讀:

基於中文文本的情感分析發展到了什麼水平(研究,商業應用,領先公司等角度)?
C++解析Word、Excel、PPT、PDF等格式的文件用什麼庫?
自然語言處理方向值得讀博士么?
用卷積神經網路做情感分析時(句子級),為什麼輸入向量可以隨機初始化,在訓練的時候調整?

TAG:自然語言處理 | Siri |