使用 ChatterBot 庫制作一個聊天機器人
我們學習一些如何使用 ChatterBot 庫在 Python 中創(chuàng)建聊天機器人,該庫實現(xiàn)了各種機器學習算法來生成響應(yīng)對話,還是挺不錯的
1什么是聊天機器人
聊天機器人也稱為聊天機器人、機器人、人工代理等,基本上是由人工智能驅(qū)動的軟件程序,其目的是通過文本或語音與用戶進行對話。我們?nèi)粘=佑|的比較著名的例子包括 Siri、Alexa 等
這些聊天機器人傾向于為用戶執(zhí)行特定任務(wù),聊天機器人經(jīng)常執(zhí)行諸如進行交易、預訂酒店、提交表格等任務(wù)。隨著人工智能領(lǐng)域的技術(shù)進步,聊天機器人的可能性也是無窮無盡的
當然了,在當前技術(shù)下,聊天機器人還是有很多局限性的
領(lǐng)域知識 —— 由于真正的人工智能仍然遙不可及,任何聊天機器人在與人類對話時都很難完全理解對話含義
個性 —— 無法正確響應(yīng)和相當差的理解能力比任何聊天機器人的常見錯誤更重要,為聊天機器人添加個性仍然是很遙遠和困難的事情
我們可以將聊天機器人定義為兩類
基于特定規(guī)則 —— 在這種方法中,機器人是根據(jù)規(guī)則進行訓練的。基于此,機器人可以回答簡單的查詢,但有時無法回答復雜的對話
自學 —— 這些機器人遵循機器學習方法,效率更高,并進一步分為另外兩類
基于檢索模型 —— 在這種方法中,機器人根據(jù)用戶輸入從響應(yīng)列表中檢索最佳響應(yīng)
生成模型 —— 這些模型通常會給出答案,而不是從一組答案中進行搜索,這也使它們成為智能機器人
好了,高大上的聊天機器人知識就先介紹到這里,下面我們就通過 chatterbot 來構(gòu)建一個簡單的在線聊天機器人
2ChatterBot 庫簡介
ChatterBot 是 Python 中的一個庫,它生成對用戶輸入的響應(yīng),使用多種機器學習算法來產(chǎn)生各種響應(yīng)。用戶可以更輕松地使用 ChatterBot 庫制作具有更準確響應(yīng)的聊天機器人
ChatterBot 的設(shè)計允許機器人接受多種語言的訓練,最重要的是,機器學習算法使機器人更容易使用用戶的輸入自行改進
ChatterBot 可以輕松創(chuàng)建參與對話的軟件,每次聊天機器人從用戶那里獲得輸入時,它都會保存輸入和響應(yīng),這有助于沒有初始知識的聊天機器人使用收集到的響應(yīng)進行自我進化
隨著響應(yīng)的增加,聊天機器人的準確性也會提高。程序從與輸入匹配的最接近匹配語句中選擇最接近匹配的響應(yīng),然后從該響應(yīng)的已知語句選擇中選擇響應(yīng)
安裝 ChatterBot 也非常簡單
pip?install?chatterbot
下面我們就正式進入 Chatterbot 的世界吧
3構(gòu)建聊天機器人
機器人訓練
Chatterbot 帶有一個數(shù)據(jù)實用程序模塊,可用于訓練聊天機器人。目前該模塊中有十多種語言的訓練數(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ù)提供的輸入從聊天機器人獲得響應(yīng)
構(gòu)建 flask app
對于基本的 flask 結(jié)構(gòu),我們直接使用 GitHub 上的一個腳手架,這個是專門用來開發(fā) ChatterBot 應(yīng)用的
https://github.com/chamkank/flask-chatterbot
我們直接克隆項目就好
把項目下載到本地之后,我們進行一些修改
我們需要為 HTML 和 CSS 文件添加另外兩個目錄 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">script>
head>
<body>
<h1>Flask?Chatterbot?Exampleh1>
<div>
<div?id="chatbox">
<p?class="botText"><span>Hi!?I'm?Chatterbot.span>p>
div>
<div?id="userInput">
<input?id="textInput"?type="text"?name="msg"?placeholder="Message">
<input?id="buttonInput"?type="submit"?value="Send">
div>
<script>
function?getBotResponse()?{
var?rawText?=?$("#textInput").val();
var?userHtml?=?''?+?rawText?+?'
';
$("#textInput").val("");
$("#chatbox").append(userHtml);
document.getElementById('userInput').scrollIntoView({block:?'start',?behavior:?'smooth'});
$.get("/get",?{?msg:?rawText?}).done(function(data)?{
var?botHtml?=?''?+?data?+?'
';
$("#chatbox").append(botHtml);
document.getElementById('userInput').scrollIntoView({block:?'start',?behavior:?'smooth'});
});
}
$("#textInput").keypress(function(e)?{
if(e.which?==?13)?{
getBotResponse();
}
});
$("#buttonInput").click(function()?{
getBotResponse();
})
script>
div>
body>
html>
index.html 文件將包含應(yīng)用程序的模板,而 style.css 將包含帶有 CSS 代碼的樣式表。執(zhí)行上述程序后,我們將得到如下圖所示的輸出
Style.css 文件
body
{
font-family:?Garamond;
background-color:?black;
}
h1
{
color:?black;
margin-bottom:?0;
margin-top:?0;
text-align:?center;
font-size:?40px;
}
h3
{
color:?black;
font-size:?20px;
margin-top:?3px;
text-align:?center;
}
#chatbox
{
background-color:?black;
margin-left:?auto;
margin-right:?auto;
width:?40%;
margin-top:?60px;
}
#userInput?{
margin-left:?auto;
margin-right:?auto;
width:?40%;
margin-top:?60px;
}
#textInput?{
width:?87%;
border:?none;
border-bottom:?3px?solid?#009688;
font-family:?monospace;
font-size:?17px;
}
#buttonInput?{
padding:?3px;
font-family:?monospace;
font-size:?17px;
}
.userText?{
color:?white;
font-family:?monospace;
font-size:?17px;
text-align:?right;
line-height:?30px;
}
.userText?span?{
background-color:?#009688;
padding:?10px;
border-radius:?2px;
}
.botText?{
color:?white;
font-family:?monospace;
font-size:?17px;
text-align:?left;
line-height:?30px;
}
.botText?span?{
background-color:?#EF5350;
padding:?10px;
border-radius:?2px;
}
#tidbit?{
position:absolute;
bottom:0;
right:0;
width:?300px;
}

接下來我們打開網(wǎng)頁,就可以看到聊天頁面啦

有一個文本框,我們可以在其中提供用戶輸入,機器人將為該語句生成相應(yīng)的響應(yīng)消息,當我們輸入的消息越多,機器人就會越智能!
好了,今天的分享就到這里,我們下次見
如果覺得文章不錯,記得點個贊哦
推薦閱讀:
入門:?最全的零基礎(chǔ)學Python的問題? |?零基礎(chǔ)學了8個月的Python??|?實戰(zhàn)項目?|學Python就是這條捷徑
干貨:爬取豆瓣短評,電影《后來的我們》?|?38年NBA最佳球員分析?|? ?從萬眾期待到口碑撲街!唐探3令人失望? |?笑看新倚天屠龍記?|?燈謎答題王?|用Python做個海量小姐姐素描圖?|碟中諜這么火,我用機器學習做個迷你推薦系統(tǒng)電影
趣味:彈球游戲? |?九宮格? |?漂亮的花?|?兩百行Python《天天酷跑》游戲!
AI:?會做詩的機器人?|?給圖片上色?|?預測收入?|?碟中諜這么火,我用機器學習做個迷你推薦系統(tǒng)電影
小工具:?Pdf轉(zhuǎn)Word,輕松搞定表格和水印!?|?一鍵把html網(wǎng)頁保存為pdf!|??再見PDF提取收費!?|?用90行代碼打造最強PDF轉(zhuǎn)換器,word、PPT、excel、markdown、html一鍵轉(zhuǎn)換?|?制作一款釘釘?shù)蛢r機票提示器!?|60行代碼做了一個語音壁紙切換器天天看小姐姐!|
年度爆款文案
6).30個Python奇淫技巧集?

