來自:菜鳥學Python(微訊號:cainiao_xueyuan)
伴隨著自然語言技術和機器學習技術的發展,越來越多的有意思的自然語言小專案呈現在大家的眼前,聊天機器人就是其中最典型的應用,今天小編就帶領大家用不到20行程式碼,運用兩種方式搭建屬於自己的聊天機器人。
01
神器wxpy庫
首先,小編先向大家介紹一下本次運用到的python庫,本次專案主要運用到的庫有wxpy和chatterbot。
wxpy是在 itchat庫 的基礎上,透過大量介面最佳化,讓模組變得簡單易用,併進行了功能上的擴充套件。什麼是介面最佳化呢,簡單來說就是使用者直接呼叫函式,並輸入幾個引數,就可以使用了,不需要關心函式的底層實現。
Chatterbot是一個基於機器學習的聊天機器人引擎,基於python編寫而成,它可以自可以從已有的對話中進行記憶匹配。
Wxpy因為採用大量的介面整合,所以在使用的時候非常方便,下圖是簡單的wxpy使用,透過進入互動式介面,可以與指定的好友進行交談。程式碼及效果如下圖所示:
上述的程式碼中print_msg函式採用了wxpy庫的裝飾器,裝飾器在這裡的作用可以查閱其原始碼進行檢視,主要是用於註冊訊息的配置。例如print_msg函式,可以將對方的回覆訊息進行輸出。而在手機微信上我們同樣看到了雙方之間交流,所以從某個層面上來講,wxpy就是PC端的微信。
02
圖靈聊天機器人
下麵我們將會實現第一個聊天機器人,該機器人是wxpy內整合的圖靈機器人,由於圖靈機器人的高度專業,所以製作出來的聊天機器人交流也非常的順暢。那如何將圖靈機器人嵌入到我們的交流中呢?首先我們需要去圖靈機器人官網註冊得到我們自己的機器人,註冊完成後,我們便可以生成圖靈機器人,並得到一個api_key,如下圖所示:
這個api_key便是我們後續製作聊天機器人的關鍵。圖靈聊天機器人的程式碼和效果圖如下圖所示:
由上圖右邊的聊天記錄來看,依託圖靈機器人的聊天機器人效果非常的出色,而且還可以進行天氣查詢等功能。
03
自己訓練的聊天機器人
下麵我們不依託於圖靈機器人,而是依靠ChatterBot來製作一款機器人,這款機器人,雖然效果較上一款效能差距較大,但是它可以訓練我們自己的語料庫,下麵是程式碼和效果的展示。
由上圖可以看出,或許是受制於語料庫資源過少,而且也不能夠主動上網查詢。所以要想使其能夠回答和提問基本吻合還需要大量的工作。
難道除了這些我們就沒有其它可以做的了嗎?當然不是,ChatterBot為我們提供了可以訓練的方式,我們可以提供素材來讓其進行訓練。程式碼和效果如下圖所示:
我們首先定義了一個chatbot,然後將訓練資料加入進去,讓模型匹配我們的問題,得到訓練的結果。
右邊的圖展示了我們的結果,由結果可以看出,由於我們的訓練集中沒有“在”這個資料,所以得到的回答很莫名其妙,而對於“你好”和“你叫什麼名字?”這兩個問題的回答則得到了很完美的答覆,這就是加入訓練資料集的優勢所在。
trainer.train([
"你好",
"你好,很高興認識你",
"你叫什麼名字?",
"我叫chat-robot-2.",
])
(訓練集的資料)
你也可以加入你想要訓練的語料庫進行訓練,一樣會得到不錯的效果。有的同學可能會問這是如何訓練的呢?答案就在chatterbot的原始碼裡,開啟原始碼我們可以這裡的chatbot選擇的訓練方法是“BestMatch”,也即最匹配方式,從訓練的對話中找到最相識的陳述句,然後根據對話提供回答。
Python做機器學習的專案是不是很有趣,以上就是小編為大家帶來的兩款聊天機器人的設計,大家趕快動手設計一款屬於自己的聊天機器人吧!
朋友會在“發現-看一看”看到你“在看”的內容