不到20行代碼用Python做一個(gè)智能聊天機(jī)器人

伴隨著自然語(yǔ)言技術(shù)和機(jī)器學(xué)習(xí)技術(shù)的發(fā)展,越來(lái)越多的有意思的自然語(yǔ)言小項(xiàng)目呈現(xiàn)在大家的眼前,聊天機(jī)器人就是其中最典型的應(yīng)用,今天小編就帶領(lǐng)大家用不到20行代碼,運(yùn)用兩種方式搭建屬于自己的聊天機(jī)器人。
1.神器wxpy庫(kù)
首先,小編先向大家介紹一下本次運(yùn)用到的python庫(kù),本次項(xiàng)目主要運(yùn)用到的庫(kù)有wxpy和chatterbot。
wxpy是在 itchat庫(kù) 的基礎(chǔ)上,通過(guò)大量接口優(yōu)化,讓模塊變得簡(jiǎn)單易用,并進(jìn)行了功能上的擴(kuò)展。什么是接口優(yōu)化呢,簡(jiǎn)單來(lái)說(shuō)就是用戶直接調(diào)用函數(shù),并輸入幾個(gè)參數(shù),就可以使用了,不需要關(guān)心函數(shù)的底層實(shí)現(xiàn)。
Chatterbot是一個(gè)基于機(jī)器學(xué)習(xí)的聊天機(jī)器人引擎,基于python編寫而成,它可以自可以從已有的對(duì)話中進(jìn)行記憶匹配。
Wxpy因?yàn)椴捎么罅康慕涌诩?,所以在使用的時(shí)候非常方便,下圖是簡(jiǎn)單的wxpy使用,通過(guò)進(jìn)入交互式界面,可以與指定的好友進(jìn)行交談。代碼及效果如下圖所示:

上述的代碼中print_msg函數(shù)采用了wxpy庫(kù)的裝飾器,裝飾器在這里的作用可以查閱其源碼進(jìn)行查看,主要是用于注冊(cè)消息的配置。例如print_msg函數(shù),可以將對(duì)方的回復(fù)消息進(jìn)行輸出。而在手機(jī)微信上我們同樣看到了雙方之間交流,所以從某個(gè)層面上來(lái)講,wxpy就是PC端的微信。
2.圖靈聊天機(jī)器人
下面我們將會(huì)實(shí)現(xiàn)第一個(gè)聊天機(jī)器人,該機(jī)器人是wxpy內(nèi)集成的圖靈機(jī)器人,由于圖靈機(jī)器人的高度專業(yè),所以制作出來(lái)的聊天機(jī)器人交流也非常的順暢。那如何將圖靈機(jī)器人嵌入到我們的交流中呢?首先我們需要去圖靈機(jī)器人官網(wǎng)注冊(cè)得到我們自己的機(jī)器人,注冊(cè)完成后,我們便可以生成圖靈機(jī)器人,并得到一個(gè)api_key,如下圖所示:

這個(gè)api_key便是我們后續(xù)制作聊天機(jī)器人的關(guān)鍵。圖靈聊天機(jī)器人的代碼和效果圖如下圖所示:

由上圖右邊的聊天記錄來(lái)看,依托圖靈機(jī)器人的聊天機(jī)器人效果非常的出色,而且還可以進(jìn)行天氣查詢等功能。
3.自己訓(xùn)練的聊天機(jī)器人
下面我們不依托于圖靈機(jī)器人,而是依靠ChatterBot來(lái)制作一款機(jī)器人,這款機(jī)器人,雖然效果較上一款性能差距較大,但是它可以訓(xùn)練我們自己的語(yǔ)料庫(kù),下面是代碼和效果的展示。

由上圖可以看出,或許是受制于語(yǔ)料庫(kù)資源過(guò)少,而且也不能夠主動(dòng)上網(wǎng)查詢。所以要想使其能夠回答和提問(wèn)基本吻合還需要大量的工作。
難道除了這些我們就沒(méi)有其它可以做的了嗎?當(dāng)然不是,ChatterBot為我們提供了可以訓(xùn)練的方式,我們可以提供素材來(lái)讓其進(jìn)行訓(xùn)練。代碼和效果如下圖所示:

我們首先定義了一個(gè)chatbot,然后將訓(xùn)練數(shù)據(jù)加入進(jìn)去,讓模型匹配我們的問(wèn)題,得到訓(xùn)練的結(jié)果。
右邊的圖展示了我們的結(jié)果,由結(jié)果可以看出,由于我們的訓(xùn)練集中沒(méi)有“在”這個(gè)數(shù)據(jù),所以得到的回答很莫名其妙,而對(duì)于“你好”和“你叫什么名字?”這兩個(gè)問(wèn)題的回答則得到了很完美的答復(fù),這就是加入訓(xùn)練數(shù)據(jù)集的優(yōu)勢(shì)所在。
trainer.train([ "你好", "你好,很高興認(rèn)識(shí)你", "你叫什么名字?", "我叫chat-robot-2.",])
(訓(xùn)練集的數(shù)據(jù))
你也可以加入你想要訓(xùn)練的語(yǔ)料庫(kù)進(jìn)行訓(xùn)練,一樣會(huì)得到不錯(cuò)的效果。有的同學(xué)可能會(huì)問(wèn)這是如何訓(xùn)練的呢?答案就在chatterbot的源碼里,打開源碼我們可以這里的chatbot選擇的訓(xùn)練方法是“BestMatch”,也即最匹配方式,從訓(xùn)練的對(duì)話中找到最相識(shí)的語(yǔ)句,然后根據(jù)對(duì)話提供回答。

總結(jié)
以上所述是小編給大家介紹的不到20行代碼用Python做一個(gè)智能聊天機(jī)器人,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
Python利用omegaconf庫(kù)輕松實(shí)現(xiàn)配置文件管理
omegaconf是一個(gè)靈活且強(qiáng)大的Python配置管理庫(kù),支持YAML,dict,列表等多種數(shù)據(jù)格式,下面我們就來(lái)看看如何使用omegaconf實(shí)現(xiàn)配置文件管理吧2025-02-02
使用Docker制作Python環(huán)境連接Oracle鏡像
這篇文章主要為大家介紹了使用Docker制作Python環(huán)境連接Oracle鏡像示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
python驗(yàn)證碼識(shí)別的實(shí)例詳解
現(xiàn)在的網(wǎng)站為了防止機(jī)器人提交表單,圖片驗(yàn)證碼是很常見的應(yīng)對(duì)手段之一。這里就不詳細(xì)介紹了,相信大家都遇到過(guò)?,F(xiàn)在這篇文章就給出用Python識(shí)別驗(yàn)證碼的詳細(xì)示例代碼,文中介紹的很詳細(xì),有需要的可以參考借鑒。2016-09-09
裝了python再裝anaconda該怎么操作保姆級(jí)教程
本文詳細(xì)介紹了在已安裝Python的情況下如何正確安裝和配置Anaconda環(huán)境,包括Python環(huán)境變量的配置、Anaconda的下載安裝以及環(huán)境變量配置,文中通過(guò)代碼就介紹的非常詳細(xì),需要的朋友可以參考下2024-11-11
Python連接Mysql實(shí)現(xiàn)圖書借閱系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了Python連接Mysql實(shí)現(xiàn)圖書借閱系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
python如何解析配置文件并應(yīng)用到項(xiàng)目中
這篇文章主要介紹了python如何解析配置文件并應(yīng)用到項(xiàng)目中,如果我們更換了電腦也可以繼續(xù)使用原來(lái)的文件,只要把里面的數(shù)據(jù)拷貝到游戲執(zhí)行的配置文件里面就可以了,我們重新再進(jìn)入就不用重新設(shè)置內(nèi)掛的配置了,需要的朋友可以參考下2019-06-06
python3解析庫(kù)BeautifulSoup4的安裝配置與基本用法
簡(jiǎn)單來(lái)說(shuō),BeautifulSoup就是Python的一個(gè)HTML或XML的解析庫(kù),我們可以用它來(lái)方便地從網(wǎng)頁(yè)中提取數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于python3解析庫(kù)BeautifulSoup4的安裝配置與基本用法的相關(guān)資料,需要的朋友可以參考下2018-06-06
Swift中的協(xié)議(protocol)學(xué)習(xí)教程
協(xié)議中可以定義一些基本的需要被實(shí)例化的屬性,這里我們就來(lái)看一下Swift中的協(xié)議(protocol)學(xué)習(xí)教程,需要的朋友可以參考下2016-07-07

