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