天天看點

微服務與chatbot

chatbot

就是我們所說的聊天機器人,目前有開源的項目,也有自己建構知識圖譜進行建構的。

微服務與chatbot

這裡介紹的是一款落成的聊天系統ChatterBot,ChatterBot的優點:

  1. 訓練語料可存放在多種媒體上
  2. 訓練結果可存放在多種媒體上
  3. 應答比對算法支援多種應答比對算法:相似度比對、數學估值算法等
  4. 可訓練支援任何語言的聊天機器人

ChatterBot的缺點:

  1. 性能較低:收到聊天請求時,其需要周遊所有語料以找到相似度最高的語句,并提取對應的應答語句。是以,訓練語料過多時(超過1萬條),應答時延可能已無法讓人接受。
  2. 場景有限:其隻能應用到一些情況簡單、場景單一的環境。由于性能較低,是以,無法使用過多的語料對ChatterBot進行訓練,這也必然限制了應用場景。

安裝

使用PyPi的方式進行安裝,輸入如下指令:

1pip install ChatterBot      

安裝過程如圖所示:

微服務與chatbot

出現如下提示代表安裝成功:

1Successfully installed ChatterBot-0.8.5 PyYAML-3.12 chatterbot-corpus-1.1.2 future-0.16.0 mathparse-0.1.1 nltk-3.3 oauthlib-2.0.7 pymongo-3.6.1 python-dateutil-2.6.1 python-twitter-3.4.1 requests-oauthlib-0.8.0 sqlalchemy-1.2.7      

chatbot訓練

首先是準備語料,然後根據語料進行訓練,流程如圖所示:

微服務與chatbot

測試聊天

以下測試都是基于我的簡單訓練的基礎上。先把我訓練的代碼放上來:

1# -*- coding: utf-8 -*-
 2"""
 3Created on Tue May  8 10:03:29 2018
 4@author: zhangfeng
 5"""
 6#!/usr/bin/python
 7# -*- coding: utf-8 -*-
 8from chatterbot import ChatBot
 9from chatterbot.trainers import ListTrainer
10my_bot = ChatBot("Training demo")
11my_bot.set_trainer(ListTrainer)
12my_bot.train([
13    "你叫什麼名字?",
14    "我叫張鋒。",
15    "今天天氣真好",
16    "是啊,這種天氣出去玩再好不過了。",
17    "那你有沒有想去玩的地方?",
18    "我想去有山有水的地方。你呢?",
19    "沒錢哪都不去",
20    "哈哈,這就比較尴尬了",
21])
22while True:
23    print(my_bot.get_response(input("user:")))      

然後,運作測試,就能夠看到聖誕中輸出的内容。

正式聊天訓練

訓練代碼如下:

1# -*- coding: utf-8 -*-
 2"""
 3Created on Tue May  8 11:05:27 2018
 4@author: zhangfeng
 5"""
 6#!/usr/bin/python
 7# -*- coding: utf-8 -*-
 8from chatterbot import ChatBot
 9from chatterbot.trainers import ChatterBotCorpusTrainer
10chatbot = ChatBot("myBot")
11chatbot.set_trainer(ChatterBotCorpusTrainer)
12# 使用中文語料庫訓練它
13chatbot.train("chatterbot.corpus.chinese")
14lineCounter = 1
15# 開始對話
16while True:
17    print(chatbot.get_response(input("(" + str(lineCounter) + ") user:")))
18    lineCounter += 1      

運作并且測試一下:

1ai.yml Training: [####################] 100%
 2botprofile.yml Training: [####################] 100%
 3conversations.yml Training: [####################] 100%
 4emotion.yml Training: [####################] 100%
 5food.yml Training: [####################] 100%
 6gossip.yml Training: [####################] 100%
 7greetings.yml Training: [####################] 100%
 8history.yml Training: [####################] 100%
 9humor.yml Training: [####################] 100%
10literature.yml Training: [####################] 100%
11money.yml Training: [####################] 100%
12movies.yml Training: [####################] 100%
13politics.yml Training: [####################] 100%
14psychology.yml Training: [####################] 100%
15science.yml Training: [####################] 100%
16sports.yml Training: [####################] 100%
17trivia.yml Training: [####################] 100%
18(1) user:你好
19你好
20(2) user:今天天氣怎麼樣啊
21是啊,這種天氣出去玩再好不過了。
22(3) user:咱們之前聊過嗎?
23我對你的感情,是人類和bot之間獨有的信任和友誼 你可以把它叫做愛。      

可以看到除了速度外,效果還不錯!

微服務

顧名思義,微服務得從兩個方面去了解,什麼是"微"、什麼是"服務", 微 狹義來講就是體積小、著名的"2 pizza 團隊"很好的诠釋了這一解釋(2 pizza 團隊最早是亞馬遜 CEO Bezos提出來的,意思是說單個服務的設計,所有參與人從設計、開發、測試、運維所有人加起來 隻需要2個披薩就夠了 )。 而所謂服務,一定要差別于系統,服務一個或者一組相對較小且獨立的功能單元,是使用者可以感覺最小功能集。

兩者的關系

在運維團隊被告知新的事件之後,他們會從診斷開始。第一步是在錯誤中隔離元件。在隔離之後,調查将繼續觀察到底發生了什麼,以及可以做些什麼來盡快恢複服務。在許多服務互相依賴的體系結構中,許多人可能需要協作。微服務的關鍵概念之一是支援多語言和多平台,支援專家間的互動,包括開發人員。“ChatOps”這個術語描述了這個過程,在這個過程中,人們使用即時消息通信平台來進行中小企業之間的協作。通過ChatOps平台,所有的互動都被記錄在一個中心位置,您可以浏覽日志,檢視采取了哪些操作。

微服務中有一個很重要的概念叫ChatOps,ChatOps并不局限于人類之間的互相作用。通過使用Bot技術,可以內建DevOps和服務管理工具。例如監視系統,它将顯示在過去24小時内響應時間分布的圖表,也可顯示最近的部署任務。

微服務與chatbot