定製個機器人幫你和Ta聊天

kevinwan發表於2021-10-08

自動聊天示例

聊天1:

user: 在嗎?
bot: 在
user: 在幹嘛呢?
bot: 看電視
user: 看啥電視呀
bot: 活色生香
user: 很好看嗎?
bot: 特搞笑
user: 你在哪裡呀?
bot: 家裡
user: 家裡就你一個人嘛?
bot: 我喜歡一個人玩
user: 那我過來找你?
bot: 不可以,乖乖上班去

聊天2:

Q: 在嗎?
A: 在
Q: 幹嘛呢?
A: 沒事
Q: 陪我去逛街嘛?
A: 嗯
Q: 你在打遊戲?
A: 沒有
Q: 那去不去?
A: 去

這是基於200萬聊天記錄訓練出來的,你可以用自己和女朋友的記錄訓練了試試效果 :P

至於微信機器人怎麼用,你可以 GitHub 搜搜看哈

專案說明

chatbot 是一個通過已知對話資料集快速生成回答的 Go 問答引擎。

為啥會有 chatbot 專案呢?

好多年前,當我們需要一個聊天機器人的時候,我是先用了 ChatterBot,但是使用下來,我們的1.2億對話語料訓練後的模型回答一個問題需要21秒左右,實在沒法接受。仔細看了 ChatterBot 原始碼之後,我用 Go 重新實現了一個,並用 go-zero 的 MapReduce 框架做了並行優化,結果我們一個回答平均耗時大概18毫秒。

國慶假期,我有點空閒時間,所以就把這個專案整理了開源出來,一是給大家一個實際的 go-zero 的 MapReduce 示例;二是也提供大家一個閒聊機器人的專案玩玩。

BTW:後續我可能會開源智慧客服機器人的專案,可以關注我的github:

https://github.com/kevwan

程式碼目錄和命令列使用說明

bot

問答引擎,可以自定義自己的匹配演算法

cli

  • train

    訓練給定的問答資料並生成 .gob 檔案

    • -d 讀取指定目錄下所有 jsonyaml 語料檔案
    • -i 讀取指定的 jsonyaml 語料檔案,多個檔案用逗號分割
    • -o 指定輸出的 .gob 檔案
    • -m 定時列印記憶體使用情況
  • ask

    一個示例的問答命令列工具

    • -v verbose
    • -c 訓練好的 .gob 檔案
    • -t 資料幾個可能的答案

資料格式

如果你有語料資料,可以自行整理用來訓練。

資料格式可以通過 yaml 或者 json 檔案提供,參考 https://github.com/kevwan/chatterbot-corpus 裡的格式。大致如下:

categories:
- AI
conversations:
- - 什麼是ai
  - 人工智慧是工程和科學的分支,致力於構建具有思維的機器。
- - 你是什麼語言編寫的
  - Python
- - 你聽起來像機器
  - 是的,我受到造物者的啟發
- - 你是一個人工智慧
  - 那是我的名字。

致謝

go-zero - https://github.com/zeromicro/...

go-zerocore/mr 包的 MapReduce 實現使 chatbot 的回答效率得到了巨大的提升!

ChatterBot - https://github.com/gunthercox...

最早我是使用 ChatterBot 的,但由於回答太慢,所有後來只能自己實現了,感謝 ChatterBot,非常棒的專案!

專案地址

https://github.com/kevwan/chatbot

歡迎使用並 star 支援!

相關文章