聊天機器人學習總結(1)-chatterbot簡介

安裝前的準備

我用的是pycharm編譯器,看網上推崇的最好創建一個虛擬環境,來將不同項目所需求的依賴分別放在獨立的地方的一個工具,好處就是防止各個項目之間對同一個庫不同版本依賴的問題。想了解其詳情的可以點擊.下面就直接貼代碼.

1.使用 sudo pip install virtualenv 安裝virtualenv 
  在Ubuntu中,可以嘗試 sudo apt-get install python-virtualenv

2.virtualenv安裝完畢后,通常會創建一個項目文件夾,并在其下創建一個venv文件夾
  mkdir myproject
  cd myproject
  virtualenv venv

3.無論何時你想在某個項目上工作,只需要激活響應的環境  . venv/bin/activate

4.你現在已經激活了virtualenv,現在可以使用pip安裝其他模塊了

安裝

chatterbot 安裝有兩種方式:

  • 使用pip install chatterbot安裝
  • 直接在github chatterbot下載這個項目,其中examples文件夾中包含幾個例子,可以根據例子加深自己的理解。

創建chatterbot實例

首先先粘貼一下代碼,再根據代碼來講具體的內容,我的chatbot.py文件

from chatterbot import ChatBot
from chatterbot.trainers import ChatterBotCorpusTrainer
from chatterbot.trainers import ListTrainer

class SimpleChat():

    def __init__(self):
        self.chatbot = ChatBot('myBot',
                               storage_adapter="chatterbot.storage.MongoDatabaseAdapter",
                               logic_adapters=[
                                   {
                                       'import_path': 'chatterbot.logic.BestMatch'
                                   },
                                   {
                                       'import_path': 'chatterbot.logic.LowConfidenceAdapter',
                                       'threshold': 0.6,
                                       'default_response': '正在學習中'
                                   }
                               ],
                               input_adapter="chatterbot.input.VariableInputTypeAdapter",
                               output_adapter="chatterbot.output.TerminalAdapter",
                               database_uri='mongodb://admin:admin@127.0.0.1:27017/admin?authMechanism=MONGODB-CR',
                               database='chatbot'
                               )

        self.chatbot.set_trainer(ListTrainer)
        self.chatbot.train("chatterbot.corpus.chinese")

    def get_response(self, info):
        #返回信息
        return str(self.chatbot.get_response(info))

if __name__ == '__main__':
    chat = SimpleChat()
    res = chat.get_response('你好啊')
    print(res)

首先先類中構造函數中創建了一個chatbot的實例

  • 參數1 ‘myBot’意思是創建了一個名叫myBot的機器人,(后面的參數都不是必填的,其都有默認參數)
  • storage_adapter 代表存儲適配器

存儲適配器提供了一個允許可以通過將storage_adaoter參數設置為要使用的存儲適配器的導入路徑來指定,其默認的是sqlite類型的。我在網上看到sqlite數據庫在大數據的時候會花費很長時間,正好我們后臺用的有mongodb,所以我采用的是mongodb類型(MongoDatabaseAdapter)的適配器。
mongodb有兩個參數 database_uri 和 database, 當你連接的只是本地數據庫,并且沒有驗證的時候,只用database(數據庫名)就可以了,如果連接遠程數據庫獲取需要驗證時,就需要兩個都要用。詳細信息點這里

  • logic_adapters是邏輯適配器,其可以有好幾個參數,并且可以一起使用。BestMatch 邏輯adater根據與輸入語句最接近的匹配的已知響應返回響應。TimeLogicAdapter 返回當前時間。MathematicalEvaluation可以執行數學表達式,并且計算出來結果。LowConfidenceAdapter 當高信度響應未知時,返回具有高置信度的默認響應。SpecificResponseAdapter 返回具體的響應到一個特定的輸入。詳細信息可以點這里

  • self.chatbot.train("chatterbot.corpus.chinese")這句話意思是支持中文聊天。這里需要注意一個地方:當時英文的時候,python2.7是可用的。當是中文的時候,需要python 3以上吧,反正我裝的是3.6最新版的。
    這個參數還可以這樣寫

deepThought.train("chatterbot.corpus.chinese")
deepThought.train([
    你好啊,
   我不好,
]) 

來實現訓練語句,這些語句會保存到數據庫
具體詳情請 點擊這里

  • self.chatbot.set_trainer(ListTrainer),允許使用列表表示會話的字符串列表來訓練聊天機器人。

chatBot實例有一個方法可以獲取響應值,chat.get_response('你好啊'),就會把我不好發送過來。

chatterbot還有許多參數可以自定義配置,這些東西我只是看了一下文檔,還沒有開始做,以后會補充到這個系列中來。這些東西可以在開發文檔中找到。

知行辦公,專業移動辦公平臺https://zx.naton.cn/
【總監】十二春秋之,3483099@qq.com
【Master】zelo,616701261@qq.com
【運營】狼行天下,897221533@qq.com;****
【產品設計】流浪貓,364994559@qq.com
【體驗設計】兜兜,2435632247@qq.com
【iOS】淘碼小工,492395860@qq.comiMcG33K,imcg33k@gmail.com
【Android】人猿居士,1059604515@qq.com;思路的頓悟,1217022114@qq.com
【java】首席工程師MR_W,feixue300@qq.com
【測試】土鏡問道,847071279@qq.com
【數據】喜樂多,42151960@qq.com
【安全】保密,你懂的。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 發現 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,252評論 4 61
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,523評論 25 708
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,991評論 19 139
  • 有人說,一個人走著很瀟灑。以前我也這么想。 后來的某天,我獨自一人在商場里逛街買衣服,那種孤獨感竟升華成一種無助感...
    秦嶺影武者閱讀 347評論 0 1
  • 之前我推薦Android用戶下載“靜讀天下”APP閱讀英文著作,就是為了配合詞典軟件查單詞的,廢話不多說,Andr...
    面朝三帆閱讀 6,414評論 0 1