20行代碼搭建微信聊天機(jī)器人
共 1468字,需瀏覽 3分鐘
·
2022-02-09 17:28
介紹了如何用20行Python搭建一個微信聊天機(jī)器人,并討論了其可能的拓展方向。
引子
在之前一邊文章中介紹客服機(jī)器人:AI實(shí)戰(zhàn):搭建客服機(jī)器人,本文將在此基礎(chǔ)上制作一個聊天機(jī)器人,前一篇文章的重點(diǎn)在于問答,而本文的重點(diǎn)在于如何接入微信。
環(huán)境配置
實(shí)現(xiàn)一個微信機(jī)器人,最重要的有兩件事:
- 接入微信
- 智能回復(fù)
第一個功能,可以借助wxpy;而對于第二個功能,則使用之前已經(jīng)實(shí)踐過的ChatterBot。在開源社區(qū)有不少接入微信的庫,而開源的聊天機(jī)器人也有很多,之所以選擇二者是因?yàn)樗麄兊奈臋n都非常齊全,因此本文也不會對如何使用這兩個庫做過多講解。
注意!Python版本要求3.5,wxpy和ChatterBot都可以通過pip安裝,不贅述。
編寫代碼
實(shí)際的代碼不超過20行(果然人生苦短、我用Python),這里添加一些注釋便于理解
#!/usr/bin/env python3.5
from wxpy import *
from chatterbot import ChatBot
from chatterbot.trainers import ChatterBotCorpusTrainer
chatbot = ChatBot("deepThought")# 用于回復(fù)消息的機(jī)器人
chatbot.set_trainer(ChatterBotCorpusTrainer)
chatbot.train("chatterbot.corpus.chinese")# 使用該庫的中文語料庫
bot = Bot(cache_path=True)# 用于接入微信的機(jī)器人
group_2 = bot.groups("友誼是")[0]# 進(jìn)行測試的群
group_2.send("大家好,我是人工智障")
@bot.register(group_2)
def reply_my_friend(msg):
print(msg)
return chatbot.get_response(msg.text).text# 使用機(jī)器人進(jìn)行自動回復(fù)
# 堵塞線程,并進(jìn)入 Python 命令行
embed()效果演示
掃碼登陸(為防止知乎識別二維碼已打碼):
進(jìn)入人工智障模式:
后臺效果:
一點(diǎn)思考
這是一個非常簡單的例子,因?yàn)闆]有對機(jī)器人的知識庫進(jìn)行定制,所以機(jī)器人的回復(fù)十分簡單,十幾句對話就會被識破。但基于這兩個庫所能做的事情絕不僅限于此,本文只是拋磚引玉,可以在此基礎(chǔ)上做出更多有意思的東西,比如:
- 監(jiān)測微信群對話,以此為語料庫訓(xùn)練機(jī)器人。其實(shí)我之前有一個想法就是利用海賊王里面的對話(又或者金庸的小說)作為訓(xùn)練的語料,可以得到一個滿滿海賊王畫風(fēng)(又或者武俠風(fēng)格)的聊天機(jī)器人。
- 完成一些自動化的任務(wù),比如每天定時跟女票道早安(這個的難點(diǎn)在于首先得有一個女票)。最近在鵝廠實(shí)習(xí),每天早晨都需要微信簽到,可以考慮自動化(因?yàn)槌绦騿T的信條就是不做重復(fù)性的工作)。
- Demo中機(jī)器人對每句話都做了回復(fù),可以增強(qiáng)其表現(xiàn),比如只回復(fù)@了自己的以及語料庫匹配度比較高的消息(對應(yīng)實(shí)際情景中聊天者比較熟悉的話題),這樣就更能以見亂真了。
以上,是我比較期望的三點(diǎn),如有時間、精力可以試試。此外,除了使用庫,了解背后的原理也十分有必要。比如,要實(shí)現(xiàn)一個wxpy可能就需要對微信抓包,分析他的通信協(xié)議;要實(shí)現(xiàn)一個ChatterBot功能類似的庫可能就需要實(shí)現(xiàn)一種NLU算法,選擇合適的機(jī)器學(xué)習(xí)模型和數(shù)據(jù)庫等。風(fēng)格良好的文檔可以幫助我們快速上手,但要游刃有余還需深入源碼!
以上,一點(diǎn)思考。
