自動(dòng)聊天示例
聊天1:
user: 在嗎粘昨?
bot: 在
user: 在干嘛呢晚吞?
bot: 看電視
user: 看啥電視呀
bot: 活色生香
user: 很好看嗎学歧?
bot: 特搞笑
user: 你在哪里呀?
bot: 家里
user: 家里就你一個(gè)人嘛唆垃?
bot: 我喜歡一個(gè)人玩
user: 那我過(guò)來(lái)找你胁住?
bot: 不可以趁猴,乖乖上班去
聊天2:
Q: 在嗎?
A: 在
Q: 干嘛呢彪见?
A: 沒(méi)事
Q: 陪我去逛街嘛儡司?
A: 嗯
Q: 你在打游戲?
A: 沒(méi)有
Q: 那去不去余指?
A: 去
這是基于200萬(wàn)聊天記錄訓(xùn)練出來(lái)的捕犬,你可以用自己和女朋友的記錄訓(xùn)練了試試效果 :P
至于微信機(jī)器人怎么用,你可以 GitHub
搜搜看哈
項(xiàng)目說(shuō)明
chatbot
是一個(gè)通過(guò)已知對(duì)話數(shù)據(jù)集快速生成回答的 Go 問(wèn)答引擎酵镜。
為啥會(huì)有 chatbot
項(xiàng)目呢或听?
好多年前,當(dāng)我們需要一個(gè)聊天機(jī)器人的時(shí)候笋婿,我是先用了 ChatterBot
,但是使用下來(lái)顿颅,我們的1.2億對(duì)話語(yǔ)料訓(xùn)練后的模型回答一個(gè)問(wèn)題需要21秒左右缸濒,實(shí)在沒(méi)法接受。仔細(xì)看了 ChatterBot
源碼之后粱腻,我用 Go 重新實(shí)現(xiàn)了一個(gè)庇配,并用 go-zero 的 MapReduce 框架做了并行優(yōu)化,結(jié)果我們一個(gè)回答平均耗時(shí)大概18毫秒绍些。
國(guó)慶假期捞慌,我有點(diǎn)空閑時(shí)間,所以就把這個(gè)項(xiàng)目整理了開(kāi)源出來(lái)柬批,一是給大家一個(gè)實(shí)際的 go-zero 的 MapReduce 示例啸澡;二是也提供大家一個(gè)閑聊機(jī)器人的項(xiàng)目玩玩。
BTW:后續(xù)我可能會(huì)開(kāi)源智能客服機(jī)器人的項(xiàng)目氮帐,可以關(guān)注我的github:
代碼目錄和命令行使用說(shuō)明
bot
問(wèn)答引擎嗅虏,可以自定義自己的匹配算法
cli
-
train
訓(xùn)練給定的問(wèn)答數(shù)據(jù)并生成
.gob
文件-
-d
讀取指定目錄下所有json
和yaml
語(yǔ)料文件 -
-i
讀取指定的json
或yaml
語(yǔ)料文件,多個(gè)文件用逗號(hào)分割 -
-o
指定輸出的.gob
文件 -
-m
定時(shí)打印內(nèi)存使用情況
-
-
ask
一個(gè)示例的問(wèn)答命令行工具
-
-v
verbose -
-c
訓(xùn)練好的.gob
文件 -
-t
數(shù)據(jù)幾個(gè)可能的答案
-
數(shù)據(jù)格式
如果你有語(yǔ)料數(shù)據(jù)上沐,可以自行整理用來(lái)訓(xùn)練皮服。
數(shù)據(jù)格式可以通過(guò) yaml
或者 json
文件提供,參考 https://github.com/kevwan/chatterbot-corpus
里的格式。大致如下:
categories:
- AI
conversations:
- - 什么是ai
- 人工智能是工程和科學(xué)的分支,致力于構(gòu)建具有思維的機(jī)器龄广。
- - 你是什么語(yǔ)言編寫(xiě)的
- Python
- - 你聽(tīng)起來(lái)像機(jī)器
- 是的,我受到造物者的啟發(fā)
- - 你是一個(gè)人工智能
- 那是我的名字硫眯。
致謝
go-zero - https://github.com/zeromicro/go-zero
go-zero
的 core/mr
包的 MapReduce
實(shí)現(xiàn)使 chatbot
的回答效率得到了巨大的提升!
ChatterBot - https://github.com/gunthercox/ChatterBot
最早我是使用 ChatterBot 的择同,但由于回答太慢两入,所有后來(lái)只能自己實(shí)現(xiàn)了,感謝 ChatterBot奠衔,非常棒的項(xiàng)目谆刨!
項(xiàng)目地址
https://github.com/kevwan/chatbot
歡迎使用并 star 支持!