使用 ChatterBot 庫製作一個聊天機器人

2021-12-23 菜鳥學Python

我們學習一些如何使用 ChatterBot 庫在 Python 中創建聊天機器人,該庫實現了各種機器學習算法來生成響應對話,還是挺不錯的

1什麼是聊天機器人

聊天機器人也稱為聊天機器人、機器人、人工代理等,基本上是由人工智慧驅動的軟體程序,其目的是通過文本或語音與用戶進行對話。我們日常接觸的比較著名的例子包括 Siri、Alexa 等

這些聊天機器人傾向於為用戶執行特定任務,聊天機器人經常執行諸如進行交易、預訂酒店、提交表格等任務。隨著人工智慧領域的技術進步,聊天機器人的可能性也是無窮無盡的

當然了,在當前技術下,聊天機器人還是有很多局限性的

領域知識 —— 由於真正的人工智慧仍然遙不可及,任何聊天機器人在與人類對話時都很難完全理解對話含義

個性 —— 無法正確響應和相當差的理解能力比任何聊天機器人的常見錯誤更重要,為聊天機器人添加個性仍然是很遙遠和困難的事情

我們可以將聊天機器人定義為兩類

基於特定規則 —— 在這種方法中,機器人是根據規則進行訓練的。基於此,機器人可以回答簡單的查詢,但有時無法回答覆雜的對話

自學 —— 這些機器人遵循機器學習方法,效率更高,並進一步分為另外兩類

基於檢索模型 —— 在這種方法中,機器人根據用戶輸入從響應列表中檢索最佳響應

生成模型 —— 這些模型通常會給出答案,而不是從一組答案中進行搜索,這也使它們成為智慧機器人

好了,高大上的聊天機器人知識就先介紹到這裡,下面我們就通過 chatterbot 來構建一個簡單的在線聊天機器人

2ChatterBot 庫簡介

ChatterBot 是 Python 中的一個庫,它生成對用戶輸入的響應,使用多種機器學習算法來產生各種響應。用戶可以更輕鬆地使用 ChatterBot 庫製作具有更準確響應的聊天機器人

ChatterBot 的設計允許機器人接受多種語言的訓練,最重要的是,機器學習算法使機器人更容易使用用戶的輸入自行改進

ChatterBot 可以輕鬆創建參與對話的軟體,每次聊天機器人從用戶那裡獲得輸入時,它都會保存輸入和響應,這有助於沒有初始知識的聊天機器人使用收集到的響應進行自我進化

隨著響應的增加,聊天機器人的準確性也會提高。程序從與輸入匹配的最接近匹配語句中選擇最接近匹配的響應,然後從該響應的已知語句選擇中選擇響應

安裝 ChatterBot 也非常簡單

pip install chatterbot

下面我們就正式進入 Chatterbot 的世界吧

3構建聊天機器人機器人訓練

Chatterbot 帶有一個數據實用程序模塊,可用於訓練聊天機器人。目前該模塊中有十多種語言的訓練數據,我們可以拿來直接使用

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)

在例子中,我們根據提供的輸入從聊天機器人獲得響應

構建 flask app

對於基本的 flask 結構,我們直接使用 GitHub 上的一個腳手架,這個是專門用來開發 ChatterBot 應用的

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 文件

<!DOCTYPE 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 Example</h1>
<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 = '<p class="userText"><span>' + rawText + '</span></p>';
$("#textInput").val("");
$("#chatbox").append(userHtml);
document.getElementById('userInput').scrollIntoView({block: 'start', behavior: 'smooth'});
$.get("/get", { msg: rawText }).done(function(data) {
var botHtml = '<p class="botText"><span>' + data + '</span></p>';
$("#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 文件將包含應用程式的模板,而 style.css 將包含帶有 CSS 代碼的樣式表。執行上述程序後,我們將得到如下圖所示的輸出

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;
}

接下來我們打開網頁,就可以看到聊天頁面啦

有一個文本框,我們可以在其中提供用戶輸入,機器人將為該語句生成相應的響應消息,當我們輸入的消息越多,機器人就會越智能!

好了,今天的分享就到這裡,我們下次見

如果覺得文章不錯,記得點個讚哦

相關焦點

  • 基於Python-ChatterBot搭建不同adapter的聊天機器人(使用NB進行場景分類)
    # -*- coding: utf-8 -*-from chatterbot import ChatBotimport logging"""反饋式的聊天機器人,會根據你的反饋進行學習"""# 把下面這行前的注釋去掉,可以把一些信息寫入日誌中# logging.basicConfig(level=logging.INFO
  • 5分鐘搭建你的Python聊天機器人!
    在人工智慧時代,聊天機器人日益流行。伴隨著自然語言技術和機器學習技術的發展,網上和你聊天的小姐姐,可能就是一個AI~ 今天,我們要嘗試用幾十行代碼,5分鐘搭建搭建屬於自己的聊天機器人。什麼是聊天機器人聊天機器人是一種軟體應用程式,用於通過文本或文本到語音進行在線聊天對話,而不是與真人代理直接接觸。
  • 5分鐘構建您的第一個Python聊天機器人
    從電子商務到醫療保健機構,每個人都希望使用Chatbot與用戶進行交互。什麼是聊天機器人一個聊天機器人是用於通過文本或文本到語音進行在線聊天交談,以代替提供與活人劑直接接觸的軟體應用程式。—根據Wikipedia。聊天機器人的類型聊天機器人可以分為兩種類型基於規則的:-規則為基礎的聊天機器人火車一個聊天機器人回答基於預先訓練規則的問題。
  • 5分鐘內搭建你的第一個Python聊天機器人
    聊天機器人的類型聊天機器人可以分為兩類•基於規則的•自學習基於規則的: -基於規則的聊天機器人訓練聊天機器人回答基於預先訓練的規則的問題。這些類型的聊天機器人很適合進行簡單的查詢。自主學習聊天機器人: 自主學習聊天機器人基於機器學習算法,它們比基於規則的聊天機器人更聰明。
  • 不到20行代碼,用Python做一個智能聊天機器人
    神器wxpy庫首先,小編先向大家介紹一下本次運用到的python庫,本次項目主要運用到的庫有wxpy和chatterbot。wxpy是在 itchat庫 的基礎上,通過大量接口優化,讓模塊變得簡單易用,並進行了功能上的擴展。
  • 關於聊天機器人,這裡有一份中文聊天語料庫資源
    昨天《誇誇聊天機器人升級:從隨機到準個性化》推送後,又有一些同學關注誇誇聊天語料庫,不過我還是建議大家自己先動手去爬:《為了誇誇聊天機器人,爬了一份誇誇語料庫
  • 【語料庫】中文公開聊天語料庫
    轉自:https://github.com/codemayq/chaotbot_corpus_Chinesepython進階教程機器學習深度學習長按二維碼關注說明該庫是對目前市面上已有的開源中文聊天語料的搜集和系統化整理工作
  • 聊天機器人並非一時狂熱,而是真正的革命
    儘管開發者仍在製作應用,但消費者的下載熱情卻大幅降低,甚至關閉了多數的應用通知。由於有接近一半的美國智慧型手機應用每月下載的應用數量為零,所以應用開發者的境遇似乎頗為悽慘。所以,隨著應用增長的停滯,企業也在經歷陣痛。如果無法讓用戶下載自己的應用,又該如何賺錢呢?其中一個答案是到用戶所在的地方吸引他們——聊天軟體便是一個重要的選擇。這就意味著要推出聊天機器人。
  • 分享|教你製作一個微信機器人陪你聊天,只要幾行代碼
    今天來分享如何製作一個微信機器人陪你聊天?工具依然是強大的python,而代碼也只有幾行而已。在製作之前,需要在圖靈機器人的官方網站註冊申請一個APIKey,等會需要用到。官方站:http://www.tuling123.com/在官方註冊之後,創建一個機器人之後,就會分配一個APIKey。
  • 人工智慧標記語言AIML聊天機器人:產生、業界、種類、應用、實例、知識、公司和AIML概述(20k字經典收藏版)
    Wallace)  聊天機器人(chatterbot)是一個用來模擬人類對話或聊天的程序,試圖建立程序讓真人認為在和另一個人聊天。「Eliza」和「Parry」是早期非常著名的聊天機器人。它試圖建立這樣的程序:至少暫時性地讓一個真正的人類認為他們正在和另一個人聊天。今天的網際網路上,已出現「比利」、「艾麗斯」等聊天機器人等,中文的如「白絲魔理沙」、「烏賊娘」等由網友製作的聊天機器人。據悉,還有一個「約翰·列儂人工智慧計劃」,以再現當年「披頭四」樂隊主唱的風採為目標。
  • 實戰 零起點製作自動聊天機器人
    特色二、項目驅動 實戰第一 本課程從基礎原理到案例實戰,分為三個階段、逐層深入:傳統NLP聊天機器人 →  深度學習聊天機器人 → 可用的聊天機器人平臺實戰1 開發最簡單的Rule-Base聊天機器人實戰2 用基礎ML算法製作說學逗唱機器人實戰3 用深度學習方法製作Seq2Seq
  • 使用深度學習打造智能聊天機器人
    這種無明確任務目標的聊天機器人也可以稱作為開放領域的聊天機器人。檢索式聊天機器人指的是事先存在一個對話庫,聊天系統接收到用戶輸入句子後,通過在對話庫中以搜索匹配的方式進行應答內容提取。很明顯,這種方式對對話庫要求很高,需要對話庫足夠大,能夠儘量多地匹配用戶問句,否則會經常出現找不到合適回答內容的情形(因為在真實場景下用戶說什麼都是可能的),但它的好處是回答質量高,因為對話庫中的內容都是真實的對話數據,表達比較自然。
  • 如何運用Python建一個聊天機器人?
    Slack API 的聊天機器人令牌,並用 Pyhon 開發一個簡單聊天機器人。你的聊天機器人現在已經準備好連接 Slack API。Python 開發人員的一個常見的做法是以環境變量輸出秘密令牌。輸出的Slack令牌名字為SLACK_BOT_TOKEN:好了,我們現在得到了將這個 Slack API 用作聊天機器人的授權。我們建立聊天機器人還需要更多信息:我們的聊天機器人的 ID。
  • 如何用 Python 打造一個聊天機器人?
    如果你之前從來沒有建立過聊天機器人,那麼這篇文章提供了一個簡單的入門指南,告訴你如何用 Python 結合 Slack API 建立你第一個聊天機器人。我們通過搭建你的開發環境, 獲得一個 Slack API 的聊天機器人令牌,並用 Pyhon 開發一個簡單聊天機器人。
  • 免費福利|如何製作一個聊天機器人?
    不得不說,聊天機器人已經逐步滲入到我們的日常生活中,不管你是打開Siri 問天氣或行程,還是去天貓/淘寶/京東買東西問客服,抑或是和家庭陪伴式機器人做遊戲,都是在直接跟機器人對話。也有越來越多的小夥伴對聊天機器人產生興趣,希望可以了解其搭建過程,從中窺見機器學習、深度學習的高深和神奇。
  • 教你製作QQ自動聊天機器人
    1、帳號註冊,回覆:  圖靈機器人      獲取註冊連結2、軟體下載,回覆:  聊天機器人      下載QQ聊天機器人
  • 使用Python操作機器人聊天
    作者:崔斯特個人公眾號:萌新的學習日記github地址:https://github.com/zhangslob
  • 使用 Python 創建一個簡單的基於規則的聊天機器人
    以上這段代碼就是我們今天的主題,基於規則的聊天機器人聊天機器人 聊天機器人本身是一種機器或軟體,它通過文本或句子模仿人類交互。簡而言之,可以使用類似於與人類對話的軟體進行聊天。為什麼要嘗試創建聊天機器人?也許你對一個新項目感興趣,或者公司需要一個,或者想去拉投資。無論動機是什麼,本文都將嘗試解釋如何創建一個簡單的基於規則的聊天機器人。基於規則的聊天機器人什麼是基於規則的聊天機器人?
  • 千萬級中文公開免費聊天語料數據分享
    分享一個包含千萬級聊天語料的資源。地址:https://github.com/codemayq/chaotbot_corpus_Chinese    該庫是對目前市面上已有的開源中文聊天語料的搜集和系統化整理工作    該庫搜集了包含        · chatterbot        · 豆瓣多輪
  • 限免公開課|如何製作一個聊天機器人?
    不得不說,聊天機器人已經逐步滲入到我們的日常生活中,不管你是打開 Siri 問天氣或行程,還是去天貓 / 淘寶 / 京東買東西問客服,抑或是和家庭陪伴式機器人做遊戲,都是在直接跟機器人對話。也有越來越多的小夥伴對聊天機器人產生興趣,希望可以了解其搭建過程,從中窺見機器學習、深度學習的高深和神奇。