
兩種開源聊天機(jī)器?的性能測試(?)——ChatterBot
因?yàn)樽罱趯W(xué)習(xí)?然語?處理的相關(guān)知識,QQ?冰這個(gè)東西最近?很熱,所以就試著玩了下兩個(gè)開源聊天機(jī)器?,在這?分享?點(diǎn)?經(jīng)驗(yàn),希望對有共同興趣的?能起到那么?點(diǎn)作?。
我主要測試了兩個(gè)聊天機(jī)器?,?個(gè)是ChatterBot,另外?個(gè)是基于tensorflow的chatbot。我們?先看?下ChatterBot。
我的測試是通過和聊天機(jī)器?進(jìn)?閑聊型、任務(wù)型、知識型三種話題的交互進(jìn)?的,下?正式進(jìn)?測試。
?先我的測試環(huán)境是Ubuntu14.04(64位),Pycharm-Edu-4.0。基于tensorflow的chatbot基本環(huán)境也是如此。
具體的步驟如下:
1.安裝:命令?下輸?sudo pip install chatterbot
如果安裝了pip3建議使?sudo pip3 install chatterbot,這樣就不需要第2步操作,可以直接進(jìn)?第三步測試。
2.默認(rèn)情況下,chatterbot是安裝在python2下的,?要想使?中?語料庫進(jìn)?訓(xùn)練,需要在python3下才可
以,否則會報(bào)UnicodeDecodeError。這?我們使?超級管理員?份登陸系統(tǒng),然后將剛才安裝的chatterbot及其依賴從
python2(/usr/local/lib/python2.7/dist-packages/)下復(fù)制到python3(/usr/local/lib/python3.4/dist-packages/)下。具體?件夾如下圖:
(如果這些?件夾不好找出來,可以看右側(cè)的已修改時(shí)間,時(shí)間最新的即是)
復(fù)制好?件夾后進(jìn)?Pycharm新建?個(gè)?程MyChatterBot,然后點(diǎn)擊File>>Settings找到Project:MyChatterBot點(diǎn)開下三?,點(diǎn)擊ProjectInterpreter,點(diǎn)擊窗?右上?Project Interpreter下三?選擇python3.4然后Apply,如圖所?:
3.測試性能
?先測試閑聊。
由于在正式測試之前我嘗試了?下它的訓(xùn)練功能,所以關(guān)于問答它多學(xué)了?句,以下測試都是基于我的簡單訓(xùn)練的基礎(chǔ)上。先把我訓(xùn)練的代碼放上來:
#!/usr/bin/python
# -*- coding: utf-8 -*-
from chatterbot import ChatBot
ainers import ListTrainer
my_bot = ChatBot("Training demo")
my_bot.t_trainer(ListTrainer)
ain([
"你叫什么名字?",
"我叫ChatterBot。",
"今天天?真好",
"是啊,這種天?出去玩再好不過了。",
"那你有沒有想去玩的地??",
"我想去有?有?的地?。你呢?",
"沒錢哪都不去",
"哈哈,這就?較尷尬了",
])
while True:
print(_respon(input("ur:")))
下?正式開始聊天。
其中ur表??戶,前??標(biāo)注的為機(jī)器?。
測試代碼如下:
#!/usr/bin/python
# -*- coding: utf-8 -*-
from chatterbot import ChatBot
ainers import ChatterBotCorpusTrainer
chatbot = ChatBot("myBot")
chatbot.t_trainer(ChatterBotCorpusTrainer)
# 使?中?語料庫訓(xùn)練它
lineCounter = 1
# 開始對話
while True:
_respon(input("(" + str(lineCounter) + ") ur:"))) lineCounter += 1
測試結(jié)果如下:
(1) ur:你好
你好
(2) ur:你叫什么名字
我叫ChatterBot。
(3) ur:你多?了
你好
(4) ur:你是男的還是?的
它是什么樣的?
(5) ur:長?形的,??充滿了?字
我也還不錯
(6) ur:什么還不錯
那很好.
(7) ur:那是什么
你想了解哪???
(8) ur:關(guān)于計(jì)算機(jī)的
它是什么樣的?
(9) ur:我也不知道什么樣?的
你想了解哪???
(10) ur:關(guān)于程序員的
你使?什么語?呢?
(11) ur:C++和python
我不怎么喜歡 Java.
(12) ur:我?沒問你喜不喜歡。你是程序員嗎?
我是個(gè)程序員
(13) ur:你使?什么語??
我經(jīng)常使? Python,Java 和 C++ .
(14) ur:我不怎么喜歡Java
什么使你?煩?
(15) ur:我不?煩啊,我只是學(xué)你說話
我也不錯.
(16) ur:不錯個(gè)啥?
那很好.
(17) ur:你真蠢
你好
(18) ur:好啊。你聽說過圖靈測試嗎?
我對你的感情,是?類和bot之間獨(dú)有的信任和友誼 你可以把它叫做愛。(19) ur:這才沒聊?句,就談感情啊
還有其他美味的東西?
(20) ur:沒有了,已經(jīng)被我吃完了
其他東西也?
(21) ur:有個(gè)糖你要嗎?
我對你的感情,是?類和bot之間獨(dú)有的信任和友誼 你可以把它叫做愛。(22) ur:你腦?有問題吧?
什么問題?
(23) ur:回路有點(diǎn)長
謝謝
(24) ur:真是?語了
我能幫你什么嗎?
(25) ur:拜托你回答的正常點(diǎn)
吃喝睡 還有旅?。 你喜歡旅?嗎?
(26) ur:喜歡啊。你呢?
太棒了,找個(gè)時(shí)間我們?起去周游世界吧!
(27) ur:說的好聽。你有錢嗎?
我對你的感情,是?類和bot之間獨(dú)有的信任和友誼 你可以把它叫做愛。(28) ur:好了好了,我知道了。說點(diǎn)別的吧
說的好聽。你有錢嗎?
(29) ur:我沒錢,你有錢啊?
我也還不錯
(30) ur:你想去哪玩?
我想去有?有?的地?。你呢?
(31) ur:和你?樣吧。推薦個(gè)地?吧?
我想去有?有?的地?。你呢?
(32) ur:我也想去有?有?的地?,你想去哪?
沒錢哪都不去
(33) ur:好吧好吧,你喜歡看電影嗎?
愛麗絲漫游仙境
(34) ur:這部電影怎么樣?
沒什么.
(35) ur:說說嘛
我沒錢,你有錢啊?
(36) ur:別?談錢,談錢傷感情
我也還不錯
(37) ur:?了,我不想跟你聊了。拜拜
那你有沒有想去玩的地??
現(xiàn)在給出關(guān)于閑聊話題的正確率:我們認(rèn)為(1)(2)(10)(11)(12)(13)(20)(22)(26)(30)(32)(33)(34)是正確的,正確率約為35.14%。其中(2)(30)(32)是經(jīng)過我簡單訓(xùn)練后才回答正確的,所以去除這些,如果?github上的原始語料庫,正確率約為27.03%。
任務(wù)型
測試代碼仍然使?上述代碼。測試結(jié)果如下:
(1) ur:幫我查詢武漢到北京今天的?車票
是啊,這種天?出去玩再好不過了。
(2) ur:幫我查詢武漢?車站附近酒店
那很好.
(3) ur:明天天?
是啊,這種天?出去玩再好不過了。
(4) ur:查詢明天上海迪?尼樂園余票
?常感謝你.
(5) ur:查詢武漢漢?站光?未來之光的路線
它是什么樣的?
(6) ur:查詢電腦?名為ChatterBot的?件夾的位置
今天天?真好
(7) ur:查詢本機(jī)操作系統(tǒng)類型