日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

【NLP】创建强大聊天机器人的初学者指南

發(fā)布時間:2025/3/8 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【NLP】创建强大聊天机器人的初学者指南 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

作者 |?Louis Teo?

編譯 |?VK?

來源?| Towards Data Science

你是否面臨著太多來自客戶的標(biāo)準(zhǔn)要求和問題,并且難以應(yīng)對?你是否在尋找一種既不增加成本又?jǐn)U大客戶服務(wù)的方法?

在這篇文章中,我將向你展示如何輕松創(chuàng)建一個強(qiáng)大的聊天機(jī)器人來處理1)你不斷增長的客戶請求和查詢,2)使用不同語言進(jìn)行交流。

我還將向你展示如何使用Flask將聊天機(jī)器人部署到web應(yīng)用程序中。

動機(jī)

Covid-19大流行給世界帶來了沉重打擊。由于許多業(yè)務(wù)受到了重大控制而遭受了鎖定/損失。為了度過這段艱難時期,許多公司被迫將業(yè)務(wù)轉(zhuǎn)移到網(wǎng)上。

在線企業(yè)主面臨的一個主要的、常見的問題是必須對客戶提出的大量問題和要求作出回應(yīng)。對于那些人力資源有限的人來說,不可能及時處理所有的請求。

為了解決這個問題,許多企業(yè)主開始使用聊天機(jī)器人來為他們的客戶服務(wù)。

什么是聊天機(jī)器人

聊天機(jī)器人是一種人工智能驅(qū)動的智能軟件,它能夠與人類對話并執(zhí)行類似人類的任務(wù)。聊天機(jī)器人存在于許多智能設(shè)備(如Siri(iOS)、Google Assistant(Android)、Cortana(微軟)、Alexa(亞馬遜))、網(wǎng)站和應(yīng)用程序中。

為什么要用聊天機(jī)器人

根據(jù)HubSpot進(jìn)行的一項研究,71%的用戶愿意使用快速響應(yīng)的聊天應(yīng)用程序來獲得客戶幫助,許多人這樣做是因為他們希望自己的問題能夠得到快速解決(當(dāng)然,也是高效的)。

一個聊天機(jī)器人,如果配置智能化,確實可以通過保持相同水平的客戶滿意度,同時允許人力資源集中在關(guān)鍵操作上,為企業(yè)釋放巨大的價值。

如何創(chuàng)建聊天機(jī)器人

多虧了Python中的ChatterBot庫,創(chuàng)建chatbot不再像以前那樣是一項艱巨的機(jī)器學(xué)習(xí)任務(wù)。

現(xiàn)在,讓我們開始創(chuàng)建

(1) 安裝ChatterBot庫

我們將從安裝ChatterBot庫開始。安裝命令如下:

pip?install?chatterbot

ChatterBot文本語料庫(由大量結(jié)構(gòu)化文本組成的語言資源)分布在Python包中,因此需要單獨安裝:

pip?install?chatterbot_corpus

如果你以前沒有安裝spaCy(一個用于高級自然語言處理的開源庫),請現(xiàn)在安裝,因為ChatterBot庫需要spaCy庫來工作:

pip?install?spacy

安裝spaCy庫后安裝spaCy English(“en”)模型:

python?-m?spacy?download?en

(2) 創(chuàng)建聊天機(jī)器人實例

在將整個聊天機(jī)器人打包成可執(zhí)行的Python腳本之前,我們將使用Jupyter Notebook開發(fā)聊天機(jī)器人。讓我們從導(dǎo)入需要的模塊開始:

from?chatterbot?import?ChatBot

我們將創(chuàng)建一個chatbot實例,將bot命名為Buddy,然后指定幾個參數(shù)。我們需要指定的參數(shù)是:

  • 「storage_adapter」:數(shù)據(jù)庫的“connector”類型(如果使用SQL數(shù)據(jù)庫,則使用'chatterbot.storage.SQLStorageAdapter';對于MongoDB,使用'chatterbot.storage.MongoDatabaseAdapter’). 在這種情況下,我們將使用SQL數(shù)據(jù)庫。

  • 「database_uri」:數(shù)據(jù)庫名稱

  • 「logic_adapters」:ChatterBot如何選擇對給定輸入語句的響應(yīng)的邏輯。我們將使用BestMatch—一個邏輯適配器,它根據(jù)與輸入語句最接近的匹配項的已知響應(yīng)返回響應(yīng)。

  • 「read_only」:我們將設(shè)置為真,因為我們只想讓聊天機(jī)器人從我們的訓(xùn)練數(shù)據(jù)中學(xué)習(xí)。

如果不指定任何參數(shù),則名為「db.sqlite3」的數(shù)據(jù)庫將被創(chuàng)建,并且默認(rèn)為你選擇最佳匹配邏輯。

bot?=?ChatBot('Buddy',storage_adapter='chatterbot.storage.SQLStorageAdapter',database_uri='sqlite:///database.sqlite3_eng',logic_adapters?=?['chatterbot.logic.BestMatch'],read_only?=?True)

(3) 訓(xùn)練聊天機(jī)器人

是時候訓(xùn)練我們的聊天機(jī)器人了……(什么,就這樣?是的,這不是開玩笑!)

我們將使用ChatterBot中可用的模塊來訓(xùn)練聊天機(jī)器人。訓(xùn)練只是將對話輸入到聊天機(jī)器人的數(shù)據(jù)庫中。

一旦給聊天機(jī)器人一個數(shù)據(jù)集,它就會在聊天機(jī)器人“知識圖”中生成必要的條目,以正確的順序表示輸入和輸出。

讓我們訓(xùn)練我們的聊天機(jī)器人能夠與我們進(jìn)行基本的對話。

我們導(dǎo)入ListTrainer模塊,通過傳遞chatbot對象(Buddy)并調(diào)用train()方法傳遞句子列表來實例化它。

from?chatterbot.trainers?import?ListTrainer trainer?=?ListTrainer(bot)trainer.train(["Hi,?can?I?help?you","Who?are?you?","I?am?your?virtual?assistant.?Ask?me?any?questions...","Where?do?you?operate?","We?operate?from?Singapore","What?payment?methods?do?you?accept?","We?accept?debit?cards?and?major?credit?cards","I?would?like?to?speak?to?your?customer?service?agent","please?call?+65?3333?3333.?Our?operating?hours?are?from?9am?to?5pm,?Monday?to?Friday"])

聊天機(jī)器人測試

讓我們用一個input語句給機(jī)器人測試一下。

response?=?bot.get_response?('payment?method') print(response)

我們還可以使用while循環(huán)和get_response()方法讓聊天機(jī)器人連續(xù)響應(yīng)我們的每個查詢。當(dāng)我們收到用戶的“Bye”語句時,我們結(jié)束循環(huán)并停止程序。

name?=?input('Enter?Your?Name:?') print?('Welcome?to?Chatbot?Service!?Let?me?know?how?can?I?help?you') while?True:request?=?input(name+':')if?request=="Bye"?or?request=='bye':print('Bot:?Bye')breakelse:response=bot.get_response(request)print('Bot:?',?response)

你剛剛創(chuàng)建了你的第一個聊天機(jī)器人!

語料庫數(shù)據(jù)訓(xùn)練

當(dāng)然,你會希望你的聊天機(jī)器人能夠在我們剛剛輸入的內(nèi)容的基礎(chǔ)上進(jìn)行更多的對話(!)-在這種情況下,我們需要進(jìn)一步訓(xùn)練我們的聊天機(jī)器人。

幸運的是,我們簡化了這項任務(wù)。我們可以使用語料庫數(shù)據(jù)和實用程序模塊快速訓(xùn)練聊天機(jī)器人進(jìn)行通信。在撰寫本文時,ChatterBot獨立支持世界上22種主要語言——英語、漢語、西班牙語、印地語、法語等。

這里我們將使用英語語料庫數(shù)據(jù)來訓(xùn)練聊天機(jī)器人用英語進(jìn)行交流。

注意:如果你在運行語料庫訓(xùn)練時遇到問題,請將此chatterbot_corpus文件夾(https://github.com/gunthercox/chatterbot-corpus/tree/master/chatterbot_corpus)復(fù)制到錯誤消息中指定的文件目錄中

from?chatterbot.trainers?import?ChatterBotCorpusTrainertrainer?=?ChatterBotCorpusTrainer(bot)trainer.train('chatterbot.corpus.english')

讓我們測試一下我們的聊天機(jī)器人是否變得更聰明了…。

對!它變得更聰明了-它現(xiàn)在可以告訴你一個笑話…

關(guān)于訓(xùn)練聊天機(jī)器人使用不同語言的重要說明

要訓(xùn)練聊天機(jī)器人使用另一種語言,你需要用新名稱創(chuàng)建一個新的聊天機(jī)器人實例,打開一個新的SQL數(shù)據(jù)庫,并進(jìn)行新的訓(xùn)練

你不能訓(xùn)練同一個聊天機(jī)器人說多種語言-這會混淆聊天機(jī)器人。聊天機(jī)器人只能用一種語言交流。

預(yù)處理輸入

ChatterBot提供了幾個內(nèi)置的預(yù)處理器,允許我們在bot的邏輯適配器處理語句之前清理輸入語句。

清理使我們的輸入語句更易讀,更容易被聊天機(jī)器人分析。它從輸入語句中刪除可能干擾文本分析的“噪音”,例如額外的空格、Unicode字符和轉(zhuǎn)義的html字符。

bot?=?ChatBot('Buddy',storage_adapter='chatterbot.storage.SQLStorageAdapter',database_uri='sqlite:///database.sqlite3_eng',logic_adapters?=?['chatterbot.logic.BestMatch'],read_only?=?True,preprocessors=['chatterbot.preprocessors.clean_whitespace',????????????????????????????'chatterbot.preprocessors.unescape_html',??????????????????????????'chatterbot.preprocessors.convert_to_ascii'])

在包含了預(yù)處理器函數(shù)之后,重新運行chatbot,你可以看到對于「who are you」「whó are yóu」.,我們得到了相同的響應(yīng)。

低置信度的情況

除此之外,我們還可以通過將logic adapter的屬性設(shè)置為:

  • 默認(rèn)回答:“對不起,我不明白。我還在學(xué)習(xí)。請聯(lián)系abc@xxx.com尋求進(jìn)一步的幫助

  • 最大相似度閾值:0.9

maximum_similarity_threshold:停止搜索過程之前,兩個語句之間所需的最大相似度。匹配語句的搜索將繼續(xù),直到找到相似度大于或等于的語句或搜索集用盡為止。默認(rèn)為0.95。

bot?=?ChatBot('Buddy',storage_adapter='chatterbot.storage.SQLStorageAdapter',database_uri='sqlite:///database.sqlite3_eng',logic_adapters?=?[{'import_path':?'chatterbot.logic.BestMatch','default_response':?'I?am?sorry,?I?do?not?understand.?I?am?still?learning.?Please?contact?abc@xxx.com?for?further?assistance.','maximum_similarity_threshold':?0.90}],read_only?=?True,preprocessors=['chatterbot.preprocessors.clean_whitespace', 'chatterbot.preprocessors.unescape_html', 'chatterbot.preprocessors.convert_to_ascii'])

讓我們嘗試從一個意外的輸入中獲取響應(yīng)-我們的聊天機(jī)器人將在不理解語句時使用「default_response」進(jìn)行響應(yīng)。

這是這個項目的Github鏈接。你可以下載可執(zhí)行的Python腳本,你可以馬上用它來訓(xùn)練你的聊天機(jī)器人!請下載訓(xùn)練數(shù)據(jù)文件夾并編輯對話文件以滿足你的需要:https://github.com/louisteo9/Chatbot

完整的代碼和運行說明

在把所有代碼放在一起之后,讓我們使用可執(zhí)行腳本來訓(xùn)練我們的聊天機(jī)器人,看看我們的聊天機(jī)器人在行動中…!

  • 創(chuàng)建一個「training_data」文件夾,并將要訓(xùn)練的所有對話存儲在文本文件中。訓(xùn)練腳本將讀取文件夾中的所有文本文件。

  • 運行「chatbot_training.py」. 如果你想用英語語料庫來訓(xùn)練聊天機(jī)器人,你會被要求選擇Y或N。

  • from?chatterbot?import?ChatBot from?chatterbot.trainers?import?ListTrainer from?chatterbot.trainers?import?ChatterBotCorpusTrainerimport?os#?創(chuàng)建聊天機(jī)器人實例 bot?=?ChatBot('Buddy',storage_adapter='chatterbot.storage.SQLStorageAdapter',database_uri='sqlite:///database.sqlite3_eng',logic_adapters=['chatterbot.logic.MathematicalEvaluation','chatterbot.logic.BestMatch',{'import_path':?'chatterbot.logic.BestMatch','default_response':?'I?am?sorry,?but?I?do?not?understand.','maximum_similarity_threshold':?0.90}],read_only?=?True,preprocessors=['chatterbot.preprocessors.clean_whitespace','chatterbot.preprocessors.unescape_html','chatterbot.preprocessors.convert_to_ascii'])#?定位訓(xùn)練文件夾 directory?=?'training_data'for?filename?in?os.listdir(directory):if?filename.endswith(".txt"):?#?only?pick?txt?file?for?trainingprint('\n?Chatbot?training?with?'+os.path.join(directory,?filename)+'?file')training_data?=?open(os.path.join(directory,?filename)).read().splitlines()trainer?=?ListTrainer(bot)?#?bot?trainingtrainer.train(training_data)else:continue#?用戶選擇是否使用英語語料庫數(shù)據(jù)進(jìn)行訓(xùn)練 decision?=?input('Train?chatbot?with?English?corpus?data??(Y/N):?')if?decision?==?'Y':print('\n?Chatbot?training?with?English?corpus?data')trainer_corpus?=?ChatterBotCorpusTrainer(bot)trainer_corpus.train('chatterbot.corpus.english')
  • 然后,運行「chatbot.py」啟動聊天機(jī)器人。

  • from?chatterbot?import?ChatBotbot?=?ChatBot('Buddy',storage_adapter='chatterbot.storage.SQLStorageAdapter',database_uri='sqlite:///database.sqlite3_eng',logic_adapters=['chatterbot.logic.MathematicalEvaluation','chatterbot.logic.BestMatch',{'import_path':?'chatterbot.logic.BestMatch','default_response':?'I?am?sorry,?but?I?do?not?understand.','maximum_similarity_threshold':?0.90}],read_only?=?True,preprocessors=['chatterbot.preprocessors.clean_whitespace','chatterbot.preprocessors.unescape_html','chatterbot.preprocessors.convert_to_ascii'])#?運行并獲得用戶的響應(yīng)。 name?=?input('Enter?Your?Name:?')print?('Welcome?to?Chatbot?Service!?Let?me?know?how?can?I?help?you')while?True:request?=?input(name+':?')if?request=="Bye"?or?request=='bye':print('Bot:?Bye')breakelse:response=bot.get_response(request)print('Bot:?',?response)

    你已經(jīng)完成了聊天機(jī)器人訓(xùn)練并在終端上運行。

    使用Flask將聊天機(jī)器人部署為web應(yīng)用程序

    下一步是什么?我們將把我們的聊天機(jī)器人部署到一個web應(yīng)用程序中,這樣客戶就可以使用它了。

    要在web應(yīng)用程序上運行chatbot,我們需要找到一種方法讓應(yīng)用程序接收傳入的數(shù)據(jù)并返回數(shù)據(jù)。我們可以用我們想要的任何方式來實現(xiàn)這一點—HTTP請求、web套接字等

    在ChatterBot FAQ(https://chatterbot.readthedocs.io/en/stable/faq.html)頁面上有一些現(xiàn)有的例子向我們展示了如何做到這一點。我將向你展示如何使用Flask部署web應(yīng)用程序。

    從我的github下載示例代碼,然后根據(jù)需要編輯static和template文件夾中的文件:https://github.com/louisteo9/chatbot

    之后,讓我們運行「web_app.py」.

    這將把我們的聊天機(jī)器人部署到http://127.0.0.1:5000/

    啟動你的web瀏覽器,然后轉(zhuǎn)到上面的URL啟動我們的聊天機(jī)器人。

    下一步

    再次祝賀你!你已經(jīng)成功地構(gòu)建了第一個聊天機(jī)器人,并使用Flask將其部署到一個web應(yīng)用程序中。我希望聊天機(jī)器人在回答一些你訓(xùn)練過的標(biāo)準(zhǔn)商務(wù)問題方面做得很好。

    為了進(jìn)一步提高聊天機(jī)器人的性能,你可以做的一件事是編制一份迄今為止由客戶發(fā)布的常見問題解答列表,提供常見問題解答,然后在聊天機(jī)器人上對他們進(jìn)行訓(xùn)練。

    為什么有些聊天機(jī)器人沒有達(dá)到預(yù)期?有些聊天機(jī)器人之所以失敗,僅僅是因為對企業(yè)提出的標(biāo)準(zhǔn)問題和要求沒有得到充分的分析,結(jié)果聊天機(jī)器人沒有得到所需的訓(xùn)練。

    訓(xùn)練和改進(jìn)你的聊天機(jī)器人在一開始是一個持續(xù)的過程,類似于人類學(xué)習(xí)新技能和知識的方式。一旦學(xué)習(xí)到這些技能,它們就被構(gòu)建在聊天機(jī)器人中,聊天機(jī)器人不需要再接受訓(xùn)練,除非你的業(yè)務(wù)發(fā)展壯大。

    接下來,你可以考慮將你的聊天機(jī)器人部署到PaaS,它可以完全從云端托管和運行web應(yīng)用程序。你可以考慮的一個流行的免費PaaS是Heroku。

    往期精彩回顧適合初學(xué)者入門人工智能的路線及資料下載機(jī)器學(xué)習(xí)及深度學(xué)習(xí)筆記等資料打印機(jī)器學(xué)習(xí)在線手冊深度學(xué)習(xí)筆記專輯《統(tǒng)計學(xué)習(xí)方法》的代碼復(fù)現(xiàn)專輯 AI基礎(chǔ)下載機(jī)器學(xué)習(xí)的數(shù)學(xué)基礎(chǔ)專輯 獲取本站知識星球優(yōu)惠券,復(fù)制鏈接直接打開: https://t.zsxq.com/qFiUFMV 本站qq群704220115。加入微信群請掃碼:

    總結(jié)

    以上是生活随笔為你收集整理的【NLP】创建强大聊天机器人的初学者指南的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。