基於人工智慧標記語言 (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)主要程式碼

源碼介紹與處理流程

  1. 預處理
    限制字數
    過濾敏感詞(噁心、政治、色情、違法……)

    當你需要增加敏感詞時候直接在sensitive.txt中添加即可

當你需要更改敏感詞庫位置時候請在config.cfg中修改filter_file

  1. 知識庫匹配(AIML)
    基本功能:打招呼、閑聊……
    異常處理:問題太長、空白問題、找不到回復……
    情緒回答:表情、誇獎、嘲笑……
    如果匹配不到回答,進行步驟三
  2. 任務型對話匹配
    如果可以請不要完全依賴於本人提供的任務功能,請自行修改介面和對應的匹配關鍵詞。因為本人提供的介面隨時可能失效,無法保證效果。
    你可以自行添加功能和匹配關鍵詞。包括但不限制於天氣查詢、漢字查詢、空氣品質查詢、百科等機器人功能

    任務型對話系統(Task)功能函數建議放在search.py

關鍵詞邏輯判斷建議寫在crawl.py文件中
同時你可要單獨寫一個功能文件調用,例如給出的例子weather.py用於取天氣

  1. 神經網路
    與原作者相同,我也暫時實現不了神經網路部分功能,同樣使用了API代替,同時加入了NLP文本相似度計算。

    如果你需要使用API請到deep.py對應的函數中填入自己的api_key

在deep.py的bot_reply()函數中,你可以選擇使用的API介面和個數,同時也支援你自己添加API

學習功能

利用AIML模板+shelve存儲,同時修復了已知BUG

學習功能模板為learn.aiml庫,可以自定義修改

    • 說錯 *
    • 答錯 *
  1. ……

效果展示:

效果1
效果2

源碼

歡迎Star歡迎━(`∀´)ノ亻!
github

參考

基於人工智慧標記語言 (AIML)和開放域問答(WebQA)的深度智慧對話模型
中文相似度匹配演算法
wenyangchou/SimilarCharactor
敏感詞過濾的幾種實現+某1w詞敏感詞庫