基於開源語意理解框架 Clause 實現聊天機器人

2020-10-13 11:00:17

在國外,有知名的開源專案 Rasa 實現 Task Chatbot,對各種業務場景通過自然語言互動,在對話中識別意圖、收集資料,提高業務流程自動化。

那麼,中文有沒有優秀的聊天機器人開源框架呢?

這就是答案

Chatopera Language Understanding Service,Chatopera 語意理解服務

https://github.com/chatopera/clause

Clause Quick Start Guide / Clause 快速開始

Chatopera Language Understanding Service,Chatopera 語意理解服務

在這裡插入圖片描述

前提

下載映象

下載範例程式碼

git clone https://github.com/chatopera/clause-quick-start.git
cd clause-quick-start

安裝依賴

安裝 Clause Python Package

cd clause-quick-start
pip install -r requirements.txt

執行範例程式

cd clause-quick-start       # demo目錄
CL_HOST=127.0.0.1           # 設定 Clause 服務的 IP 地址
CL_PORT=8056                # 設定 Clause 服務的埠
python bot.py               # 執行demo指令碼

該指令碼執行的範例程式碼bot.py內有註釋介紹如何完成:

步驟說明
1清除該機器人之前的資料
2建立自定義詞典
3新增自定義詞條
4建立意圖
5新增意圖槽位
6新增意圖說法
7訓練機器人
8建立對談
9和機器人對話

範例程式是一個點餐程式,輸出內容如下:

[connect] clause host 127.0.0.1, port 8056
[clean_up_bot] remove intent take_out
[clean_up_bot] remove customdict food
[create] dict name food
[create] intent name take_out
[create] intent slot time
[create] intent slot loc
[create] intent slot food
[create] intent utter 我想訂一份{food}
[create] intent utter 我想點外賣
[create] intent utter 我想點一份外賣,{time}用餐
[create] intent utter 我想點一份{food},送到{loc}
[train] start to train bot ...
[train] in progress ...
[chat] human: 我想點外賣,來一份漢堡包
[chat] bot: 您想什麼時候送到?
[chat] human: 今天下午5點
[chat] bot: 您希望該訂單送到哪裡?
[chat] human: 送到大望路5號20樓
[chat] bot: 好的
[session] 訂單資訊: 收集資訊已完畢 True
    intent: take_out
    entities:
        food: 漢堡包
        time: 今天下午5點
        loc: 大望路5號

詳細瞭解程式,參考檔案

輸入檔案

需要強調的是,該範例程式使用了 profile.json 檔案作為機器人的輸入資料,該檔案描述了機器人的詞典、說法和槽位等資訊。

profile.json 內容如下:

{
  "chatbotID": "bot007",
  "dicts": [
    {
      "name": "food",
      "dictwords": [
        {
          "word": "漢堡",
          "synonyms": "漢堡包;漢堡;漢堡包"
        }
      ]
    }
  ],
  "intents": [
    {
      "name": "take_out",
      "description": "下外賣訂單",
      "slots": [
        {
          "name": "time",
          "dictname": "@TIME",
          "requires": true,
          "question": "您想什麼時候送到?"
        },
        {
          "name": "loc",
          "dictname": "@LOC",
          "requires": true,
          "question": "您希望該訂單送到哪裡?"
        },
        {
          "name": "food",
          "dictname": "food",
          "requires": true,
          "question": "您需要什麼食物?"
        }
      ],
      "utters": [
        {
          "utterance": "我想訂一份{food}"
        }
      ]
    }
  ]
}

開發者可以很方便的通過修改這個檔案複用bot.py指令碼訓練和請求機器人對話服務。

停止服務並清空資料

恢復該範例專案到初始狀態。

cd clause-quick-start
docker-compose down
docker-compose rm

sudo rm -rf ./var/mysql/data/*
sudo rm -rf ./var/activemq/data/*
sudo rm -rf ./var/redis/data/*
sudo rm -rf ./var/local/workarea/*

Clause 伺服器端技術棧

以下僅列出部分 Clause 使用的框架/開源軟體,

Apache Thrift, C++, Docker, LevelDB, ActiveMQ, Jieba, Xapian, LAC/PaddlePaddle, Google Protobuf, etc.

選擇標準:開源並且商業友好、高效能、適合叢集大規模生產環境使用、適用 Cloud Native開發部署、微服務模式、多語言 SDK、可部署於廉價的硬體資源、可維護性強、成熟。

在這裡插入圖片描述

瞭解更多

https://github.com/chatopera/clause/wiki

開源許可協定

Apache License Version 2.0

王海良@Chatopera 聊天機器人 機器學習 智慧客服
Chatopera 聯合創始人 & CEO,運營聊天機器人平臺 https://bot.chatopera.com,讓聊天機器人上線!2012年開始從事業務流程雲,業務流程引擎開發,2015年開始探索聊天機器人的商業應用,實現基於自然語言互動的流程引擎、語音識別、自然語言理解,2018年出版《智慧問答與深度學習》一書。