在過去的幾年裡,Python 編程語言的聊天機器人在技術和商業領域受到了熱烈的推崇。這些智能機器人如此擅長模仿自然人類語言和與人類聊天,以至於不同行業的公司都在接受它們。從電子商務行業到醫療保健機構,每個人似乎都在利用這一漂亮的工具來推動業務優勢。在下面的教程中,我們將藉助 Python 編程語言來理解聊天機器人,並討論在 Python 中創建聊天機器人的步驟。
A Chatbot 是一款基於人工智能的軟件,被開發用於以人類的自然語言與人類進行交互。這些聊天機器人通常通過聽覺或文本方法進行交談,它們可以毫不費力地模仿人類語言,以類似人類的方式與人類交流。聊天機器人被認為是自然語言處理的最佳應用之一。
我們可以將聊天機器人分為兩個主要的變體:基於規則的聊天機器人和自學習聊天機器人。
- 基於規則的聊天機器人:基於規則的方法訓練聊天機器人根據預先確定的規則列表來回答問題,聊天機器人主要是根據這些規則進行訓練的。這些規則集可能非常簡單,也可能非常複雜,我們可以使用這些基於規則的聊天機器人來處理簡單的查詢,但不能處理更複雜的請求或查詢。
- 自學習聊天機器人:自學習聊天機器人是可以自主學習的聊天機器人。這些人利用人工智能和機器學習等先進技術,從行為和實例中訓練自己。一般來說,這些聊天機器人比基於規則的機器人更聰明。我們可以進一步將自學習聊天機器人分為兩類- 基於檢索的聊天機器人和生成式聊天機器人。
- 基於檢索的聊天機器人:基於檢索的聊天機器人基於預定義的輸入模式工作,並設置響應。一旦問題或模式被插入,聊天機器人就利用啟發式方法給出相關的回答。基於檢索的模型被廣泛用於設計和開發面向目標的聊天機器人,使用定製的功能,如機器人的流程和語氣,以提高客戶的體驗。
- 生成聊天機器人:與基於檢索的聊天機器人不同,生成聊天機器人不是基於預定義的響應——它們利用 seq2seq 神經網絡。這是建立在機器翻譯的概念上的,即源代碼從一種語言轉換成另一種語言。在 seq2seq 方法中,輸入變為輸出。
第一個名為ELLIA的聊天機器人是由約瑟夫·韋森鮑姆在 1966 年設計和開發的,它可以用 200 行代碼模仿心理治療師的語言。但是隨着技術的不斷進步,我們已經從腳本聊天機器人發展到今天的 Python 聊天機器人。
今天,我們有了由人工智能驅動的智能聊天機器人,它們利用自然語言處理(NLP)來理解來自人類的命令(文本和語音)並從經驗中學習。聊天機器人已經成為在線活躍的公司和品牌(網站和社交網絡平台)的主要客戶互動工具。
在 Python 的幫助下,聊天機器人被認為是一個很好的工具,因為它們促進了品牌和客戶之間的快速信息傳遞。讓我們想想微軟的 Cortana,亞馬遜的 Alexa,蘋果的 Siri。這些聊天機器人是不是很棒?學習如何使用 Python 編程語言創建聊天機器人變得非常有趣。
從根本上說,利用 Python 的聊天機器人被設計和編程為接收我們提供的數據,然後使用複雜的人工智能算法對其進行分析。然後它會給我們一個書面或口頭的回應。由於這些機器人可以從經驗和行為中學習,它們可以響應各種各樣的查詢和命令。
儘管 Python 中的聊天機器人目前已經開始統治技術場景,但根據高德納的預測,到 2020 年,聊天機器人已經處理了大約 85%的客戶-品牌互動。
鑒於聊天機器人在行業中的日益普及和採用,我們可以通過學習如何用 Python 創建聊天機器人來增加市場價值,Python 是全球使用最廣泛的編程語言之一。
所以,讓我們開始吧!
ChatterBot 是一個 Python 庫,它是為提供對用戶輸入的自動響應而開發的。它利用機器學習算法的組合來生成多種類型的響應。該特性使開發人員能夠使用 Python 構建聊天機器人,這些聊天機器人可以與人類通信並提供相關和適當的響應。此外,最大似然算法支持機器人通過體驗提高性能。
ChatterBot 庫的另一個驚人特性是語言獨立性。該庫的開發方式使得用多種編程語言訓練機器人成為可能。
當用戶在聊天機器人(設計在聊天機器人上)中插入特定輸入時,機器人會保存輸入和響應以備將來使用。這種信息(收集的經驗)允許聊天機器人在每次輸入新的信息時產生自動響應。
程序從與輸入匹配的最近語句中選擇最合適的響應,然後從已知的語句和響應中傳遞響應。隨着時間的推移,隨着聊天機器人沉迷於更多的交流,回復的準確性也在提高。
我們將遵循一步一步的方法,分解創建 Python 聊天的過程。
我們將通過導入項目所需的所有包和模塊來開始構建一個 Python 聊天機器人。我們還將初始化我們想要在其中使用的不同變量。此外,我們還將處理文本數據,因此在設計 ML 模型之前,我們必須對數據集進行數據預處理。
這就是分詞支持文本數據的地方——它將大的文本數據集轉換成更小的可讀塊(如單詞)。一旦這個過程完成,我們就可以進行詞形還原,將一個單詞轉換成它的引理形式。然後,它生成一個 pickle 文件,以便存儲用於預測機器人響應的 Python 對象。
chatbot 開發程序的另一個主要部分是開發培訓和測試數據集。
現在我們已經理解了 Python 中需要的 chatbot 開發的基本概念,讓我們從實際的過程開始!
使用聊天機器人庫在 Python 中創建聊天機器人的第一步是在系統中安裝該庫。我們還可以使用一個新的 Python 虛擬環境來安裝庫,這是一個很好的實踐。我們可以使用 pip 安裝程序在命令提示符或 Python 終端中的以下命令的幫助下安裝庫:
語法:
$ pip install chatterbot
$ pip install chatterbot_corpus
我們也可以直接從 GitHub 安裝最新開發版本的 ChatterBot 庫。為此,我們必須使用以下命令:
語法:
$ pip install git+git://github.com/gunthercox/ChatterBot.git@master
如果我們中的一些人想要升級庫,我們可以使用以下命令
語法:
$ pip install --upgrade chatterbot_corpus
$ pip install --upgrade chatterbot
現在設置已經準備好了,我們可以進入下一步,使用 Python 編程語言創建一個聊天機器人。
導入類
Python 聊天機器人開發過程的第二步是導入所需的類。
讓我們考慮下面的代碼片段來理解相同的內容。
文件:my_chatbot.py
# importing the required modules
from chatterbot import ChatBot
from chatterbot.trainers import ListTrainer
說明:
在上面的代碼片段中,我們從聊天機器人導入了兩個類- 聊天機器人,從聊天機器人.訓練器導入了列表訓練器。
下一步是使用類“ chatbot ”的實例創建一個 ChatBot,並訓練該 bot 以提高其性能。訓練機器人可以確保它有足夠的知識,首先是對特定輸入語句的特定回復。
讓我們考慮下面的代碼片段。
文件:my_chatbot.py
# creating a chatbot
myBot = ChatBot(
name = 'Sakura',
read_only = True,
logic_adapters = [
'chatterbot.logic.MathematicalEvaluation',
'chatterbot.logic.BestMatch'
]
)
說明:
在上面的代碼片段中,我們定義了一個變量,它是類“ ChatBot ”的實例。我們在類中包含了各種參數。第一個參數,“名稱”,代表 Python 聊天機器人的名稱。另一個名為“只讀”的參數接受一個布爾值,該值禁用(真)或啟用(假)機器人在訓練後學習的能力。我們還包括了另一個名為“logic _ adapters”的參數,它指定了用來訓練聊天機器人的適配器。
雖然“聊天機器人.邏輯.數學評估”幫助聊天機器人解決數學問題,但是 ` 幫助其從已經提供的回答列表中選擇完美匹配。
因為我們必須提供一個響應列表,所以我們可以通過指定字符串列表來執行它,我們可以使用這些字符串來訓練 Python 聊天機器人,並為某個查詢找到完美的匹配。讓我們考慮下面的響應示例,我們可以使用 Python 訓練聊天機器人來學習。
文件:my_chatbot.py
# training the chatbot
small_convo = [
'Hi there!',
'Hi',
'How do you do?',
'How are you?',
'I\'m cool.',
'Always cool.',
'I\'m Okay',
'Glad to hear that.',
'I\'m fine',
'I feel awesome',
'Excellent, glad to hear that.',
'Not so good',
'Sorry to hear that.',
'What\'s your name?',
' I\'m Sakura. Ask me a math question, please.'
]
math_convo_1 = [
'Pythagorean theorem',
'a squared plus b squared equals c squared.'
]
math_convo_2 = [
'Law of Cosines',
'c**2 = a**2 + b**2 - 2*a*b*cos(gamma)'
]
說明:
在上面的代碼片段中,為了訓練聊天機器人,我們定義了一些響應列表。我們還可以通過簡單地鍵入“ ListTrainer ”的實例並為其提供如下所示的字符串列表來創建和訓練聊天機器人:
文件:my_chatbot.py
# using the ListTrainer class
list_trainee = ListTrainer(myBot)
for i in (small_convo, math_convo_1, math_convo_2):
list_trainee.train(i)
說明:
在上面的代碼片段中,我們創建了一個列表訓練器類的實例,並使用的循環來遍歷響應列表中的每個項目。
現在,Python 聊天機器人已經準備好進行通信了。
我們可以使用 get_response() 函數與 Python 聊天機器人進行交互。讓我們考慮程序的以下執行來理解它。
輸出:
# starting a conversation
>>> print(myBot.get_response("Hi, there!"))
Hi
>>> print(myBot.get_response("What's your name?"))
I'm Sakura. Ask me a math question, please.
>>> print(myBot.get_response("Do you know Pythagorean theorem"))
a squared plus b squared equals c squared.
>>> print(myBot.get_response("Tell me the formula of law of cosines"))
c**2 = a**2 + b**2 - 2*a*b*cos(gamma)
說明:
程序的上述執行告訴我們,我們已經使用聊天機器人庫成功地在 Python 中創建了一個聊天機器人。然而,也有必要理解使用 Python 的聊天機器人可能不知道如何回答所有的查詢。因為它的知識和訓練還是很有限,我們要給它時間,給它更多的訓練數據,讓它進一步訓練。
當我們進入用 Python 創建聊天機器人的最後一步時,我們可以利用現有的數據語料庫來進一步訓練 Python 聊天機器人。
讓我們考慮下面這個例子,用一個由機器人自己給出的數據語料庫來訓練 Python 聊天機器人。
文件:my_chatbot.py
from chatterbot.trainers import ChatterBotCorpusTrainer
corpus_trainee = ChatterBotCorpusTrainer(myBot)
corpus_trainee.train('chatterbot.corpus.english')
說明:
在上面的代碼片段中,我們已經從chatterbot . trainer模塊中導入了chatterbottcorpustrainer類。我們為聊天機器人創建了一個類實例,並將訓練語言設置為英語。
而且,從最後一條語句中,我們可以觀察到 ChatterBot 庫以多種語言提供了這一功能。因此,我們也可以用我們喜歡的語言指定語料庫的子集。因此,我們的 Python 聊天機器人已經成功創建。
Python 聊天機器人項目的完整代碼如下所示。
文件:my_chatbot.py
# importing the required modules
from chatterbot import ChatBot
from chatterbot.trainers import ListTrainer
from chatterbot.trainers import ChatterBotCorpusTrainer
# creating a chatbot
myBot = ChatBot(
name = 'Sakura',
read_only = True,
logic_adapters = [
'chatterbot.logic.MathematicalEvaluation',
'chatterbot.logic.BestMatch'
]
)
# training the chatbot
small_convo = [
'Hi there!',
'Hi',
'How do you do?',
'How are you?',
'I\'m cool.',
'Always cool.',
'I\'m Okay',
'Glad to hear that.',
'I\'m fine',
'I feel awesome',
'Excellent, glad to hear that.',
'Not so good',
'Sorry to hear that.',
'What\'s your name?',
' I\'m Sakura. Ask me a math question, please.'
]
math_convo_1 = [
'Pythagorean theorem',
'a squared plus b squared equals c squared.'
]
math_convo_2 = [
'Law of Cosines',
'c**2 = a**2 + b**2 - 2*a*b*cos(gamma)'
]
# using the ListTrainer class
list_trainee = ListTrainer(myBot)
for i in (small_convo, math_convo_1, math_convo_2):
list_trainee.train(i)
# using the ChatterBotCorpusTrainer class
corpus_trainee = ChatterBotCorpusTrainer(myBot)
corpus_trainee.train('chatterbot.corpus.english')
原創文章,作者:BA7SU,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/126695.html