作者 | 周蘿卜來源 | 蘿卜大雜燴我們學(xué)習(xí)一些如何使用 ChatterBot 庫在 Python 中創(chuàng)建
聊天機(jī)器人,該庫實(shí)現(xiàn)了各種機(jī)器學(xué)習(xí)算法來生成響應(yīng)對(duì)話,還是挺不錯(cuò)的
1什么是聊天機(jī)器人
聊天機(jī)器人也稱為聊天機(jī)器人、機(jī)器人、人工代理等,基本上是由人工智能驅(qū)動(dòng)的軟件程序,其目的是通過文本或語音與用戶進(jìn)行對(duì)話。我們?nèi)粘=佑|的比較著名的例子包括 Siri、Alexa 等這些聊天機(jī)器人傾向于為用戶執(zhí)行特定任務(wù),聊天機(jī)器人經(jīng)常執(zhí)行諸如進(jìn)行交易、預(yù)訂酒店、提交表格等任務(wù)。隨著人工智能領(lǐng)域的技術(shù)進(jìn)步,聊天機(jī)器人的可能性也是無窮無盡的當(dāng)然了,在當(dāng)前技術(shù)下,聊天機(jī)器人還是有很多局限性的
-
領(lǐng)域知識(shí) —— 由于真正的人工智能仍然遙不可及,任何聊天機(jī)器人在與人類對(duì)話時(shí)都很難完全理解對(duì)話含義
-
個(gè)性 —— 無法正確響應(yīng)和相當(dāng)差的理解能力比任何聊天機(jī)器人的常見錯(cuò)誤更重要,為聊天機(jī)器人添加個(gè)性仍然是很遙遠(yuǎn)和困難的事情
我們可以將聊天機(jī)器人定義為兩類
-
基于特定規(guī)則 —— 在這種方法中,機(jī)器人是根據(jù)規(guī)則進(jìn)行訓(xùn)練的?;诖耍瑱C(jī)器人可以回答簡單的查詢,但有時(shí)無法回答復(fù)雜的對(duì)話
-
自學(xué) —— 這些機(jī)器人遵循機(jī)器學(xué)習(xí)方法,效率更高,并進(jìn)一步分為另外兩類
-
基于檢索模型 —— 在這種方法中,機(jī)器人根據(jù)用戶輸入從響應(yīng)列表中檢索最佳響應(yīng)
-
生成模型 —— 這些模型通常會(huì)給出答案,而不是從一組答案中進(jìn)行搜索,這也使它們成為智能機(jī)器人
好了,高大上的聊天機(jī)器人知識(shí)就先介紹到這里,下面我們就通過 chatterbot 來構(gòu)建一個(gè)簡單的在線聊天機(jī)器人
2ChatterBot 庫簡介
ChatterBot 是 Python 中的一個(gè)庫,它生成對(duì)用戶輸入的響應(yīng),使用多種機(jī)器學(xué)習(xí)算法來產(chǎn)生各種響應(yīng)。用戶可以更輕松地使用 ChatterBot 庫制作具有更準(zhǔn)確響應(yīng)的聊天機(jī)器人ChatterBot 的設(shè)計(jì)允許機(jī)器人接受多種語言的訓(xùn)練,最重要的是,機(jī)器學(xué)習(xí)算法使機(jī)器人更容易使用用戶的輸入自行改進(jìn)ChatterBot 可以輕松創(chuàng)建參與對(duì)話的軟件,每次聊天機(jī)器人從用戶那里獲得輸入時(shí),它都會(huì)保存輸入和響應(yīng),這有助于沒有初始知識(shí)的聊天機(jī)器人使用收集到的響應(yīng)進(jìn)行自我進(jìn)化隨著響應(yīng)的增加,聊天機(jī)器人的準(zhǔn)確性也會(huì)提高。程序從與輸入匹配的最接近匹配語句中選擇最接近匹配的響應(yīng),然后從該響應(yīng)的已知語句選擇中選擇響應(yīng)安裝 ChatterBot 也非常簡單
pip install chatterbot
下面我們就正式進(jìn)入 Chatterbot 的世界吧
3構(gòu)建聊天機(jī)器人
機(jī)器人訓(xùn)練
Chatterbot 帶有一個(gè)數(shù)據(jù)實(shí)用程序模塊,可用于訓(xùn)練聊天機(jī)器人。目前該模塊中有十多種語言的訓(xùn)練數(shù)據(jù),我們可以拿來直接使用
https://github.com/gunthercox/chatterbot-corpus
下面是在 python 中開始使用 ChatterBot 的簡單示例
from chatterbot
import chatbot
from chatterbot.trainers
import ListTrainer
chatbot = Chatbot(
'Edureka')
trainer = ListTrainer(chatbot)
trainer.train([
'hi, can I help you find a course',
'sure I'd love to find you a course
', 'your course have been selected
'])
response = chatbot.get_response("I want a course")
print(response)
在例子中,我們根據(jù)提供的輸入從
聊天機(jī)器人獲得響應(yīng)
構(gòu)建 flask app
對(duì)于基本的 flask 結(jié)構(gòu),我們直接使用 GitHub 上的一個(gè)腳手架,這個(gè)是專門用來開發(fā) ChatterBot 應(yīng)用的
https://github.com/chamkank/flask-chatterbot
我們直接克隆項(xiàng)目就好把項(xiàng)目下載到本地之后,我們進(jìn)行一些修改我們需要為 HTML 和 CSS 文件添加另外兩個(gè)目錄 static 和模板

修改 App.py 文件
from flask
import Flask, render_template, request
from chatterbot
import ChatBot
from chatterbot.trainers
import ChatterBotCorpusTrainer
app = Flask(__name__)
english_bot = ChatBot(
"Chatterbot", storage_adapter=
"chatterbot.storage.SQLStorageAdapter")
trainer = ChatterBotCorpusTrainer(english_bot)
trainer.train(
"chatterbot.corpus.english")
@app.route("/")
def home():
return render_template(
"index.html")
@app.route("/get")
def get_bot_response():
userText = request.args.get(
'msg')
return str(english_bot.get_response(userText))
if __name__ ==
"__main__":
app.run()
index.html 文件
html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="/static/style.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js">
本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。