兩種開源聊天機器人的效能測試(一)——ChatterBot
因為最近在學習自然語言處理的相關知識,QQ小冰這個東西最近又很熱,所以就試著玩了下兩個開源聊天機器人,在這裡分享一點小經驗,希望對有共同興趣的人能起到那麼一點作用。
我主要測試了兩個聊天機器人,一個是ChatterBot,另外一個是基於tensorflow的chatbot。我們首先看一下ChatterBot。
ChatterBot是Python自帶的基於機器學習的語音對話引擎,可以基於已知的對話庫來產生迴應。ChatterBot獨特的語言設計可以使它可以通過訓練來用任何一種語言進行對話。該專案的開原始碼連結:https://github.com/gunthercox/ChatterBot
語料庫:語料庫連結
我的測試是通過和聊天機器人進行閒聊型、任務型、知識型三種話題的互動進行的,下面正式進入測試。
首先我的測試環境是Ubuntu14.04(64位),Pycharm-Edu-4.0。基於tensorflow的chatbot基本環境也是如此。
具體的步驟如下:
1.安裝:命令列下輸入sudo pip install chatterbot
如果安裝了pip3建議使用sudo pip3 install chatterbot,這樣就不需要第2步操作,可以直接進入第三步測試。
2.預設情況下,chatterbot是安裝在python2下的,而要想使用中文語料庫進行訓練,需要在python3下才可以,否則會報UnicodeDecodeError。這裡我們使用超級管理員身份登陸系統,然後將剛才安裝的chatterbot及其依賴從python2(/usr/local/lib/python2.7/dist-packages/)下複製到python3(/usr/local/lib/python3.4/dist-packages/)下。具體資料夾如下圖:
(如果這些資料夾不好找出來,可以看右側的已修改時間,時間最新的即是)
複製好資料夾後進入Pycharm新建一個工程MyChatterBot,然後點選File>>Settings找到Project:MyChatterBot點開下三角,點選ProjectInterpreter,點選視窗右上方Project Interpreter下三角選擇python3.4然後Apply,如圖所示:
3.測試效能
- 首先測試閒聊。
由於在正式測試之前我嘗試了一下它的訓練功能,所以關於問答它多學了幾句,以下測試都是基於我的簡單訓練的基礎上。先把我訓練的程式碼放上來:
下面正式開始聊天。
其中user表示使用者,前方無標註的為機器人。
測試程式碼如下:
測試結果如下:
(1) user:你好
你好
(2) user:你叫什麼名字
我叫ChatterBot。
(3) user:你多大了
你好
(4) user:你是男的還是女的
它是什麼樣的?
(5) user:長方形的,裡面充滿了文字
我也還不錯
(6) user:什麼還不錯
那很好.
(7) user:那是什麼
你想了解哪方面?
(8) user:關於計算機的
它是什麼樣的?
(9) user:我也不知道什麼樣子的
你想了解哪方面?
(10) user:關於程式設計師的
你使用什麼語言呢?
(11) user:C++和python
我不怎麼喜歡 Java.
(12) user:我又沒問你喜不喜歡。你是程式設計師嗎?
我是個程式設計師
(13) user:你使用什麼語言?
我經常使用 Python,Java 和 C++ .
(14) user:我不怎麼喜歡Java
什麼使你心煩?
(15) user:我不心煩啊,我只是學你說話
我也不錯.
(16) user:不錯個啥?
那很好.
(17) user:你真蠢
你好
(18) user:好啊。你聽說過圖靈測試嗎?
我對你的感情,是人類和bot之間獨有的信任和友誼 你可以把它叫做愛。
(19) user:這才沒聊幾句,就談感情啊
還有其他美味的東西?
(20) user:沒有了,已經被我吃完了
其他東西也行
(21) user:有個糖你要嗎?
我對你的感情,是人類和bot之間獨有的信任和友誼 你可以把它叫做愛。
(22) user:你腦子有問題吧?
什麼問題?
(23) user:迴路有點長
謝謝
(24) user:真是無語了
我能幫你什麼嗎?
(25) user:拜託你回答的正常點
吃喝睡 還有旅行。 你喜歡旅行嗎?
(26) user:喜歡啊。你呢?
太棒了,找個時間我們一起去周遊世界吧!
(27) user:說的好聽。你有錢嗎?
我對你的感情,是人類和bot之間獨有的信任和友誼 你可以把它叫做愛。
(28) user:好了好了,我知道了。說點別的吧
說的好聽。你有錢嗎?
(29) user:我沒錢,你有錢啊?
我也還不錯
(30) user:你想去哪玩?
我想去有山有水的地方。你呢?
(31) user:和你一樣吧。推薦個地方吧?
我想去有山有水的地方。你呢?
(32) user:我也想去有山有水的地方,你想去哪?
沒錢哪都不去
(33) user:好吧好吧,你喜歡看電影嗎?
愛麗絲漫遊仙境
(34) user:這部電影怎麼樣?
沒什麼.
(35) user:說說嘛
我沒錢,你有錢啊?
(36) user:別老談錢,談錢傷感情
我也還不錯
(37) user:行了,我不想跟你聊了。拜拜
那你有沒有想去玩的地方?
現在給出關於閒聊話題的正確率:我們認為(1)(2)(10)(11)(12)(13)(20)(22)(26)(30)(32)(33)(34)是正確的,正確率約為35.14%。其中(2)(30)(32)是經過我簡單訓練後才回答正確的,所以去除這些,如果用github上的原始語料庫,正確率約為27.03%。
- 任務型
測試程式碼仍然使用上述程式碼。測試結果如下:
(1) user:幫我查詢武漢到北京今天的火車票
是啊,這種天氣出去玩再好不過了。
(2) user:幫我查詢武漢火車站附近酒店
那很好.
(3) user:明天天氣
是啊,這種天氣出去玩再好不過了。
(4) user:查詢明天上海迪士尼樂園餘票
非常感謝你.
(5) user:查詢武漢漢口站光谷未來之光的路線
它是什麼樣的?
(6) user:查詢電腦里名為ChatterBot的資料夾的位置
今天天氣真好
(7) user:查詢本機作業系統型別
仙女座星系.
(8) user:幫我上網查詢Talor Swift最新的一首歌叫什麼名字
我叫ChatterBot。
(9) user:統計我已經問過你的文字字數
繼續,問吧.
(10) user:查下明天橫店影視城下午都有什麼電影放映
我可以借用一杯糖嗎?
很明顯,正確率為0。
- 知識型
測試程式碼仍然使用上述程式碼。測試結果如下:
(1) user:中國有多大?
別老談錢,談錢傷感情
(2) user:中國的首都在哪裡?
吃喝睡 還有旅行。 你喜歡旅行嗎?
(3) user:中國的人口有多少?
我沒錢,你有錢啊?
(4) user:中國第一大島是哪個島?
大不列顛聯合王國
(5) user:中華人命共和國在哪一年成立?
1963
(6) user:安徽省省會是哪個城市?
大不列顛聯合王國
(7) user:英國由哪幾部分組成?
我對你的感情,是人類和bot之間獨有的信任和友誼你可以把它叫做愛。
(8) user:第一個登上月球的人類叫什麼名字?
我叫ChatterBot。
(9) user:什麼是圖靈測試
愛, 在我的理解裡,是對他人的接受,包容和理解。同時,也是對這個世界的和自己的接受包容和理解。
(10) user:winter的中文意思是什麼
吃喝睡 還有旅行。 你喜歡旅行嗎?
顯然,正確率仍然為0。
- 數學和時間問題
下面給出測試程式碼:
下面給出測試結果:
(1) user:4+9=?
4 + 9 = 13
(2) user:四加九等於多少
The current time is 09:32 PM
(3) user:現在什麼時間
The current time is 09:33 PM
(4) user:1-1/2
( 0.5 ) = 0.5
(5) user:(1-1)/2
0.0 = 0.0
(6) user:3乘以5=
The current time is 09:33 PM
(7) user:What time is it?
The current time is 09:33 PM
(8) user:小明以1m/s的速度跑10秒,距離為多少米?
The current time is 09:35 PM
(9) user:2^8
( 10 ) = 10
(10) user:2^3=
8
可以看到正確的結果為(1)(3)(4)(7)(10)正確率為50%。
現在整體看下來測試結果並不理想,但也有可能是因為中文語料庫資源太少所以才這樣。那麼我們再測一下英文吧。
- 英文閒聊
測試程式碼:
測試結果:
(1) user:hello
Hi
(2) user:What's your name?
I am still young
(3) user:How old are you?
Who? Who is but a form following thefunction of what
(4) user:Where are you come from?
A man in a mask.
(5) user:Are you a boy?
Yes I am.
(6) user:Do you have a girlfriend?
i certainly have lost many friends over theyears.
(7) user:OK.Do you like dogs?
not especially. i am not into violence.
(8) user:Do you like sports?
not especially. i am not into violence.
(9) user:you are handsome
you are crazy
(10) user:It's a nice day today
only to other robots.
從上述結果來看,我們的機器人回答合適的只有(1)和(5),正確率20%。
- 英文任務型:
仍以上述程式碼進行測試。
測試結果如下:
(1) user:Inquire about the weather tomorrow
do you think thesouth was right?
(2) user:Pleasebook me a ticket from Hefei to Wuhai tomorrow
i prefer to nothurt your feelings.
(3) user:Checkthe hotel near Hefei South Station
Relationshipsare simple for me.
(4)user:Inquirey Disney Shanghai single day tickets
That's my name.
(5) user:Checkwhether the Shanghai Metro Line 1 has Nanjing West Road
Europe
(6) user:Howmany characters does "Iine" have?
Apple makeshardware and softwares to run on them. Microsft only makes OS. HP makes onlycomputers. These are just few names among hundred others.
(7) user:Helporder a Xiaomi phone from Jingdong
my favoritemovie is lord of the rings
(8) user:executethe command sudo reboot in the console
No.
(9) user:Printthe file on the desktop print.txt
andrew jackson.
(10) user:Playthe music "Heal the world"
Too much.
很不幸,正確率再次為0。
- 英文知識型
仍使用上述測試程式碼。
測試結果如下所示:
(1) user:Howlarge is China's land area?
vineland is anovel by thomas pynchon.
(2) user:Whichstate is Britain in?
an invitation toa burial
(3) user:Whatare the parts of England?
i'm not aphysicist, but i think this has something to do with heat, entropy, andconservation of energy, right?
(4) user:Howmany bits of an integet data in Python?
If theimplementation is hard to explain, it's a bad idea.
(5) user:Whichyear did the second world war break out?
its hard to saybut The ENIAC is regarded as the first computer. It was developed at Universityof Pennsylvania in 1946.
ChatterBot再次敗北,正確率為0。
所以,綜合以上各種測試,ChatterBot回答問題的正確率遠低於50%,很多問題都為0。對於閒聊型問題還可以回答正確幾個,但是對於任務型、知識型問題一竅不通,這應該是開源專案裡沒有設定相應的模組、語料庫資源過少,也不能夠主動上網查詢。要想使其能夠回答和提問基本吻合還需要大量的工作。另外,其速度也不是很理想,有的情況會有少許卡頓。
相關文章
- 兩種開源聊天機器人的效能測試(二)——基於tensorflow的chatbot機器人
- 【自然語言處理篇】--Chatterbot聊天機器人自然語言處理機器人
- 用圖靈機器人實現的兩個機器人對話聊天圖靈機器人
- DeepPavlov:一個訓練對話系統和聊天機器人的開源庫機器人
- 自動聊天機器人專案班 [一門課搞定聊天機器人]機器人
- nlp文字處理開源工具,及聊天機器人實現開源工具機器人
- 從零開始造一個“智障”聊天機器人機器人
- 兩個機器人聊天對話實現原始碼機器人原始碼
- 使用websocket開發智慧聊天機器人Web機器人
- Tensorflow搞一個聊天機器人機器人
- 50個開源效能測試工具
- 寫一個自動回覆的聊天機器人機器人
- 如何用Java寫一個聊天機器人Java機器人
- [Android]開源效能測試工具antoolAndroid
- 一圖簡看智慧聊天機器人的設計機器人
- Facebook的下一個前沿陣地:聊天機器人機器人
- 用AIML開發人工智慧聊天機器人AI人工智慧機器人
- 利用 EasyWeChat 和 ChatterBot 簡單搭建一個公眾號「自動回覆機器人」機器人
- 智慧聊天機器人CMO的完全指南機器人
- 使用 python 打造一個微信聊天機器人Python機器人
- 機器之魂:聊天機器人是怎麼工作的機器人
- 聊天機器人資源合集:專案,語聊,論文,教程。機器人
- 機器人快跑!伯克利和CMU聯合開發兩足機器人,兩條細腿,一馬平川機器人
- 人機對話,不再尬聊:聊天機器人的未來機器人
- 端到端的開放域聊天機器人_Google_Meena機器人Go
- Rasa 聊天機器人專欄(上)機器人
- Rasa 聊天機器人專欄(下)機器人
- 聊天機器人:困境與破局機器人
- 聊天機器人:困境和破局機器人
- 極客漫畫:聊天機器人機器人
- 如何讓聊天機器人懂情感機器人
- 使用 LangChain 構建聊天機器人LangChain機器人
- 智慧聊天對話機器人的對比機器人
- 怎麼快速搭建一個聊天機器人系統機器人
- 用 Swift 做一個智慧機器人聊天 App (1)Swift機器人APP
- 用 Swift 做一個智慧機器人聊天 App (2)Swift機器人APP
- 用 Swift 做一個智慧機器人聊天 App (4)Swift機器人APP
- 開源多執行緒效能測試工具-sysbench執行緒