安裝前的準備
我用的是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.com;iMcG33K,imcg33k@gmail.com;
【Android】人猿居士,1059604515@qq.com;思路的頓悟,1217022114@qq.com;
【java】首席工程師MR_W,feixue300@qq.com;
【測試】土鏡問道,847071279@qq.com;
【數據】喜樂多,42151960@qq.com;
【安全】保密,你懂的。