基於人工智慧標記語言 (AIML)和任務型對話系統(Task)的深度智慧對話機器人demo
起因
本demo基於基於人工智慧標記語言 (AIML)和開放域問答(WebQA)的深度智慧對話模型而來
無意間發現一個基於人工智慧標記語言 (AIML)和開放域問答(WebQA)的深度智慧對話模型,但由於年代久遠程式碼已經跑不通了,而且採用的是py2,於是邊看變改,在自己摸索下,寫了一個相對完整的demo且有相對完整的注釋,特此開源供各位參考學習
源碼與介紹
本項目相較於原項目
實現功能
- 知識庫匹配(AIML)回答問題
- 任務型對話系統(Task)
- 利用API完成的閑聊系統回答問題
- 待更新….
特點
- AIML知識庫更多(共35個)
- 敏感詞庫更廣(共1.5W個),同時敏感詞判斷更合理
- 新增NLP功能,用於處理文本相似度。
- 針對文本相似度使用了:音形碼演算法+餘弦相似度演算法
- 更多的API介面demo可以調用(支援莉莉、青雲客、ownthink、如意、mcenjoy)
使用方法
首先下載解壓你會得到一個這樣一個目錄結構
目錄結構
chatbot_aiml_task_demo
├─ init.py
└─ core
├─ init.py
├─ chatbot.py
├─ config.cfg
├─ crawler
│ ├─ init.py
│ ├─ crawl.py
│ ├─ search.py
│ ├─ stationID.json
│ └─ weather.py
├─ deeplearning
│ ├─ NLP.py
│ ├─ …….
│ ├─ SimilarCharactor
│ ├─ init.py
│ └─ deep.py
├─ log
│ ├─ .gitkeep
│ └─ …….
├─ resources
│ ├─ Book.aiml
│ ├─ …….
│ ├─ save.aiml
│ ├─ load.aiml
│ ├─ main.aiml
│ ├─ sensitive.txt
│ ├─ …….
│ └─ …….
└─ tool
├─ init.py
└─ filter.py
其中:
chatbot.py 是主程式
config.cfg 是各種路徑的配置文件
tool文件夾 下是存放的是用於敏感詞過濾使用的filter.py文件
resources文件夾 建議存放AIML知識庫和敏感詞庫
deeplearning文件夾 存放的是NLP主要程式碼
crawler文件夾 存放的是任務型對話系統(Task)主要程式碼
源碼介紹與處理流程
- 預處理
限制字數
過濾敏感詞(噁心、政治、色情、違法……)當你需要增加敏感詞時候直接在sensitive.txt中添加即可
當你需要更改敏感詞庫位置時候請在config.cfg中修改filter_file
- 知識庫匹配(AIML)
基本功能:打招呼、閑聊……
異常處理:問題太長、空白問題、找不到回復……
情緒回答:表情、誇獎、嘲笑……
如果匹配不到回答,進行步驟三 - 任務型對話匹配
如果可以請不要完全依賴於本人提供的任務功能,請自行修改介面和對應的匹配關鍵詞。因為本人提供的介面隨時可能失效,無法保證效果。
你可以自行添加功能和匹配關鍵詞。包括但不限制於天氣查詢、漢字查詢、空氣品質查詢、百科等機器人功能任務型對話系統(Task)功能函數建議放在search.py中
關鍵詞邏輯判斷建議寫在crawl.py文件中
同時你可要單獨寫一個功能文件調用,例如給出的例子weather.py用於取天氣
- 神經網路
與原作者相同,我也暫時實現不了神經網路部分功能,同樣使用了API代替,同時加入了NLP文本相似度計算。如果你需要使用API請到deep.py對應的函數中填入自己的api_key
在deep.py的bot_reply()函數中,你可以選擇使用的API介面和個數,同時也支援你自己添加API
學習功能
利用AIML模板+shelve存儲,同時修復了已知BUG
學習功能模板為learn.aiml庫,可以自定義修改
-
- 說錯 *
-
- 答錯 *
- ……
效果展示:
源碼
歡迎Star歡迎━(`∀´)ノ亻!
github
參考
基於人工智慧標記語言 (AIML)和開放域問答(WebQA)的深度智慧對話模型
中文相似度匹配演算法
wenyangchou/SimilarCharactor
敏感詞過濾的幾種實現+某1w詞敏感詞庫