MATLAB如何製作聊天機器人
來自專欄 MATLAB如何17 人贊了文章
對於今天的主題,聊天機器人,事實上是一個十分偶然,臨時起意的想法。從技術上而言,並沒有大家想像的那麼高大上,只是單純的通過API與目前現有的聊天機器人實現交互。用一種很不幸的說法來講,拿來主義罷了。
不過,我想通過這篇帖子,來聊一聊這段心路歷程,為什麼要寫這麼一個功能。
工程師有三痛。相信不同的工程師,不同的工作屬性,痛點也不盡相同。對於我而言,Top3分別是:
1. 白天開會,下班幹活
2. Resource永遠不夠
3. 有一種Deadline叫儘快
而前不久,我一度在妄想,既然沒有headcount去招人,那為什麼不嘗試自己造一個工程師。於是,我將這個個人項目取名為VE計劃 (虛擬工程師項目Virtual Engineer Project)。目前針對虛擬工程師項目,個人的需求主要包括五點:
1. 工具的管理及調用
2. 項目相關的賬號自動登錄
3. 交付文檔的自動生成
4. 自動模擬
5. 工作日誌的管理及追蹤
虛擬工程師項目,當前暫定一年的時間去完成,並在這個過程中拓展功能。在未來的一年中,將會不定期分享這個項目的進展與成果。
回歸到這篇帖子的主題上來。既然項目的主體定位為一個工程師,我並不希望最終的結果只是一個冰冷的執行器
我希望這個工程師還能夠具備基本的聊天功能
不過聊天功能並不是虛擬工程師的核心功能,算是錦上添花的一項功能,加之時間上的限制。因此我第一選擇是通過現有聊天機器人的API進行數據交互,目前看來,效果還是不錯的,至少已經達到了我最初的期許。
在完成聊天功能之後,我又根據目前的痛點,嘗試性的加入了幾項基本的功能。
關注公眾號較久的朋友應該比較了解,我平時比較喜歡寫工具。算上大大小小的工具,已經將近70個有餘。但是每當要用到的時候,總是要花一些時間去翻文件夾,去運行工具。曾經我為此專門寫了一個工具管理的工具。
這個工具中,只有集成了幾個平常比較常用的工具。不過,每一次開發了一個新工具之後,都要重新對這個管理工具進行設計,包括嵌入按鈕,添加事件,修改尺寸等等。如果真的要把70多個工具都集成到管理工具中,相信這個工具應該是奇醜無比。
不過有了這個虛擬工程師之後,只需要一句是個人都能懂的命令,就能開啟工具,就拿曲線工具來說。
除此之外,還可以通過一句簡單的命令打開常見的網頁
可能這個不是一個優秀的例子,因為用我媳婦的話來說,不明白這個功能的意義在哪,因為直接打開瀏覽器,輸入百度也很方便。
不過這個例子僅僅只是一個起點,在此之後,還會有無數個需要賬戶登錄的網頁或者是軟體,可以通過一個簡單的命令實現自動登錄。
類似的高效功能還有許多有待集成進去。不過今天這方面的暢想到此為止。
接下來還是回到這篇帖子的主題上來,MATLAB版的聊天機器人是如何實現的。
我使用的是圖靈機器人的API,在註冊成功之後,每個賬戶能夠免費生成5個機器人,每個機器人每天有1000句的限額,不過相信5000句已經足夠一天的使用了,畢竟虛擬工程師的功能並不是每天與你閑聊的。
圖靈機器人官網上有API的使用說明,有興趣的朋友可以在公眾號後台回復「圖靈API」,獲取相關信息。
當然,在使用圖靈機器人的過程中,有可能會發現,聊天並不是十分智能,主要體現在兩個方面,一個是聊天沒有關聯性,另一個聊天只是單向性,機器人是不會主動向你提問的。
這段時間,我也看了很多帖子,了解過當下聊天機器人的發展情況。知乎上有一篇帖子講的蠻好的,帖子的題目叫做「八一八聊天機器人」,雖然帖子寫在一年之前,但是分析很客觀。其中有一句話挺深刻的,「問答系統實用化根本不可能,聊天機器人的定位應該是自動化」。有興趣的朋友,可以在公眾號後台回復「818」來查看這個帖子。
MATLAB調用這個API的方式很簡單,使用的urlread函數。對這個函數不了解的朋友,可以在MATLAB命令窗口輸入doc urlread來查看這個函數的用法。其中,parameter部分,需要包含:機器人所對應的key值,以及你想發送的消息。
截止目前,已經完成了最基本的聊天功能。不過在工具的製作過程中,還有一個細節十分有趣,就是通過回車鍵發送消息的功能。
最開始的時候,正如你們所見,也是設計的send按鈕。但是每次聊天打完字之後,再用滑鼠去點擊發送的按鈕,實在是太蠢了,同樣也跟平時比如QQ聊天的使用習慣相悖。於是,我花了一些時間在這件事上。
後來解決的方式是,在edit空間定義中,加入KeyPressFcn,去識別return的按鈕。當識別有回車動作時,調用send按鈕事件。這個細節非常有趣,建議有興趣的朋友一定要去嘗試一下。
以上就是當前虛擬機器人項目的第一次分享帖子。對聊天機器人功能感興趣的朋友,可以在公眾號後台回復「HaoChat」,獲取工具下載鏈接,來感受一下聊天的過程。
最後祝大家,周末愉快!
有興趣的朋友,歡迎關注我的微信公眾號「打浦橋程序員」,謝謝
http://weixin.qq.com/r/YS13b53E9cCKrdkM93hz (二維碼自動識別)
推薦閱讀:
※智能音箱語音交互的五種情景模式
※聊天機器人-結構化內容如何驅動你建立一個聊天用戶界面並使用聊天機器人提供用戶助手
※時尚雜誌X聊天機器人 混搭效果會如何?
※對話清華大學周昊,詳解IJCAI傑出論文及其背後的故事
※聊天機器人設計指南·一:什麼是Chatbot?