電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>聊天機(jī)器人開(kāi)源分享

聊天機(jī)器人開(kāi)源分享

2023-06-20 | zip | 0.00 MB | 次下載 | 2積分

資料介紹

描述

是時(shí)候談?wù)劻恕?/font>

我想我應(yīng)該給這個(gè)它自己的特定帖子——這是我在我的RaspbinatorNvidinator項(xiàng)目中使用的聊天機(jī)器人。下面鏈接的 GitHub 將隨著我對(duì)其進(jìn)行改進(jìn)而不斷更新。

我已經(jīng)決定了 Chatbot 8 這個(gè)名字——在我使用 GitHub 之前,我把它放在了我的 Google Drive 上,每次迭代我都會(huì)增加它的數(shù)量;我很高興在 Raspbinator 中使用的第一個(gè)是第 8 次迭代,現(xiàn)在,這個(gè)名字有點(diǎn)卡住了。

主要目標(biāo):

  • 制作一個(gè)可以響應(yīng)人類(lèi)輸入的機(jī)器人,隨著時(shí)間的推移學(xué)習(xí)并返回更多有機(jī)響應(yīng)。
  • 能夠從大型文本文件(例如電影腳本和對(duì)話記錄)中進(jìn)行訓(xùn)練。
  • 使其能夠輕松集成到其他項(xiàng)目中。

工作原理。

所以這是我的GitHub 上的代碼。

我已經(jīng)讓這些聊天機(jī)器人與Raspberry Pi項(xiàng)目一起工作——因此一切都將基于 Pi 和 Raspbian 操作系統(tǒng)。

有幾個(gè)依賴(lài)項(xiàng):

其他一切都應(yīng)該包含在Raspbian上的 Python 包中

在較高層次上,系統(tǒng)的邏輯如下:

Bot 說(shuō)最初的“你好”。
人類(lèi)回應(yīng)。
Bot 存儲(chǔ)對(duì)“Hello”的響應(yīng),并在其數(shù)據(jù)庫(kù)中搜索其之前所說(shuō)的與人類(lèi)輸入的內(nèi)容非常匹配的任何內(nèi)容,然后顯示先前交互的結(jié)果。

通過(guò)存儲(chǔ)人類(lèi)對(duì)機(jī)器人 Mongo 數(shù)據(jù)庫(kù)的反應(yīng)并將它們分配給機(jī)器人之前說(shuō)過(guò)的事情,然后將人的輸入與這些項(xiàng)目進(jìn)行比較以找到合適的反應(yīng),您可以從機(jī)器人那里得到一些相當(dāng)不錯(cuò)的反應(yīng)。

舉個(gè)例子; 如果機(jī)器人說(shuō)“天氣怎么樣”并且我輸入“外面正在下雨”,它會(huì)存儲(chǔ)該響應(yīng)并將其與該輸入相關(guān)聯(lián)。現(xiàn)在,如果其他人出現(xiàn)并輸入“天氣如何”,它將在其數(shù)據(jù)庫(kù)中搜索相近的匹配項(xiàng)并找到之前的回復(fù)“天氣怎么樣”,此時(shí)它將搜索對(duì)此的回復(fù)并找到我的回復(fù)“它的外面在下雨”。因此,雖然它并沒(méi)有真正“思考”它的反應(yīng),但它確實(shí)最終會(huì)給出一些合理的回復(fù)。

它將首先以相當(dāng)高的準(zhǔn)確度搜索已知輸入,然后如果失敗,它將降低到中等準(zhǔn)確度,最后降低到低準(zhǔn)確度。我目前正在使用?這個(gè)?庫(kù)來(lái)比較字符串:

準(zhǔn)確度級(jí)別為:

  • fuzz.ratio(Str1.lower(),Str2.lower())
  • fuzz.partial_ratio(Str1.lower(),Str2.lower())
  • fuzz.token_set_ratio(Str1,Str2)

您可以在我上面鏈接的網(wǎng)站上看到這些函數(shù)是如何工作的——但通常所需的準(zhǔn)確性會(huì)隨著函數(shù)的運(yùn)行而降低。每個(gè)的閾值也可以調(diào)整。

因此,如果輸入字符串/存儲(chǔ)字符串的最高返回比率低于閾值,它將下降到第二個(gè)部分匹配并執(zhí)行相同的操作,最后如果失??;它將移動(dòng)到設(shè)定的比率匹配。最后一個(gè)適用于具有匹配單詞的不同大小的字符串。

現(xiàn)在如果上面沒(méi)有匹配項(xiàng)會(huì)發(fā)生什么?在機(jī)器人響應(yīng)之前,它會(huì)將收到的輸入存儲(chǔ)到數(shù)據(jù)庫(kù)中,它還會(huì)拆分每個(gè)輸入并存儲(chǔ)所有單個(gè)單詞。因此,當(dāng)它找不到之前對(duì)您的輸入的回復(fù)時(shí),它有 40% 的機(jī)會(huì)從這些詞中生成一個(gè)隨機(jī)句子,并有 60% 的機(jī)會(huì)選擇一個(gè)它知道的完全隨機(jī)的完整句子。

現(xiàn)在你可能會(huì)認(rèn)為這會(huì)導(dǎo)致機(jī)器人說(shuō)很多廢話——你是對(duì)的,但一開(kāi)始它只會(huì)在你和它說(shuō)話時(shí)重復(fù)你說(shuō)的話。但是你輸入和回復(fù)的越多,它學(xué)到的越多,它生成的隨機(jī)句子有時(shí)實(shí)際上有一定的意義;當(dāng)你回復(fù)它時(shí),它就會(huì)有一個(gè)參考點(diǎn),用于確定它何時(shí)收到類(lèi)似于它剛才所說(shuō)的輸入。

這是另一個(gè)例子:

如果我對(duì)機(jī)器人說(shuō):“我喜歡奶酪”,它的數(shù)據(jù)庫(kù)中沒(méi)有任何輸入信息,也沒(méi)有足夠的詞來(lái)生成一個(gè)隨機(jī)句子,基本上是一個(gè)猜測(cè),它可能會(huì)返回:“Hello television like usually”。這當(dāng)然沒(méi)有意義,但如果我隨后回復(fù)“是的,我也喜歡電視”,它會(huì)存儲(chǔ)該回復(fù)。現(xiàn)在,比方說(shuō),其他人出現(xiàn)并輸入“我通??措娨暋保鼤?huì)在數(shù)據(jù)庫(kù)中運(yùn)行它并找到它與之前所說(shuō)的相似(“你好電視就像通常一樣”)并找到我的回答(“是的,我喜歡電視也是”),給人一種真實(shí)反應(yīng)的錯(cuò)覺(jué)。

它本質(zhì)上是從頭開(kāi)始學(xué)習(xí),它什么都不知道,所以它會(huì)盡力使用以前的經(jīng)驗(yàn),作為最后的手段,猜測(cè)——直到它學(xué)到更多,這樣它就不必再猜測(cè)了。

它還能夠與多人保持對(duì)話——為與之交談的每個(gè)人創(chuàng)建一個(gè)新班級(jí),并記錄他們與機(jī)器人的最后回應(yīng)。因此,當(dāng)您使用“change_name”命令或通過(guò)從外部程序向?qū)υ捁δ茌斎氩煌拿Q(chēng)來(lái)切換人員時(shí),它可以與在該會(huì)話中已經(jīng)與之交談過(guò)的人進(jìn)行對(duì)話。

模塊化的。

最近,我添加了將聊天機(jī)器人導(dǎo)入其他程序的功能,并且能夠從機(jī)器人獲取文本輸入和接收輸出——具有一個(gè)簡(jiǎn)單的界面,只需要一個(gè)帶名稱(chēng)的輸入字符串。然后機(jī)器人本身會(huì)處理之前的回復(fù)和機(jī)器人響應(yīng);隨著對(duì)話切換并返回響應(yīng)。

它還可以獨(dú)立運(yùn)行以進(jìn)行測(cè)試,即使作為另一個(gè)項(xiàng)目的組件也可以輕松進(jìn)行訓(xùn)練和測(cè)試——例如與Nvidianator的 STT/TTS 和 ML 部分集成。

要使用它,只需將 bot .py 文件放在與它將使用的程序相同的文件夾中并使用:

將 bot_8 導(dǎo)入為聊天機(jī)器人

一旦導(dǎo)入到 Python 程序中,它就可以與命令交互:

回復(fù) = chatbot.conversation(inputWords,humanid)

輸入的單詞當(dāng)然就是輸入的內(nèi)容,因此這可以從語(yǔ)音到文本功能(例如wit.ai?或其他一些文本輸入)中獲取。

humanid 是當(dāng)前與之交互的人的名字。

將這兩個(gè)輸入都放入函數(shù)后,它將以字符串形式返回回復(fù)——然后可用于在導(dǎo)入聊天機(jī)器人的程序中進(jìn)行進(jìn)一步處理。

訓(xùn)練。

我還添加了一個(gè)訓(xùn)練模塊——這可以很方便地加載大型文本文件,例如電影劇本或?qū)υ捰涗洠@樣機(jī)器人就可以在現(xiàn)有數(shù)據(jù)上進(jìn)行訓(xùn)練——我已經(jīng)用合金裝備的腳本試過(guò)了它工作得很好。

它通過(guò)掃描每一行并將數(shù)據(jù)放入機(jī)器人來(lái)工作——當(dāng)每一行新行進(jìn)入機(jī)器人代碼時(shí),都會(huì)將其分配為對(duì)前一行的響應(yīng)。

它被編程為過(guò)濾掉以非字母字符開(kāi)頭的空行和句子,以及以“:”分割行;因此,如果一個(gè)腳本的名字表示誰(shuí)在說(shuō)話,并且有各種注釋?zhuān)瑧?yīng)該跳過(guò)這些行并刪除名字。雖然目前這有點(diǎn)混亂并且可以做一些工作,但這基本上意味著你可以插入一個(gè)腳本并且它(應(yīng)該)整齊地通過(guò)它,只選擇相關(guān)的語(yǔ)音文本。

通過(guò)在腳本上訓(xùn)練機(jī)器人,您可以輸入來(lái)自游戲/電影/對(duì)話的輸入,它會(huì)非??煽康胤祷卣_的響應(yīng)——就上面的《合金裝備》腳本而言,您可以通過(guò)輸入角色所說(shuō)的話。

例如,使用上述 MGS 訓(xùn)練數(shù)據(jù):

  • 如果我輸入“你是菜鳥(niǎo)嗎?”
  • 機(jī)器人用 Meryl 的一句話回應(yīng):“小心,我不是菜鳥(niǎo)?。 ?/font>

等等。

可以使用開(kāi)關(guān)“-fresh”調(diào)用訓(xùn)練模塊,這將清除數(shù)據(jù)庫(kù)并從頭開(kāi)始訓(xùn)練,如果沒(méi)有此開(kāi)關(guān),它將進(jìn)一步訓(xùn)練現(xiàn)有數(shù)據(jù)庫(kù)。

訓(xùn)練數(shù)據(jù)需要與機(jī)器人位于同一文件夾中,并稱(chēng)為“l(fā)earning.txt”。

還有一個(gè) deleteDB 模塊,當(dāng)它運(yùn)行時(shí),它按照它說(shuō)的去做并清除數(shù)據(jù)庫(kù)。

從理論上講,如果它接受大量正常人類(lèi)對(duì)話的訓(xùn)練,它會(huì)返回大量有機(jī)反應(yīng);此外,根據(jù)他們接受的培訓(xùn)輸入,每個(gè)機(jī)器人都可以有自己獨(dú)特的個(gè)性。

正在進(jìn)行中。

隨著時(shí)間的推移,我將繼續(xù)改進(jìn)它以使其變得更好。因此,請(qǐng)繼續(xù)檢查我的 GitHub 以獲取更新。

我也在努力讓聊天機(jī)器人與Docker打包在一起?——這樣它就可以很容易地與所有依賴(lài)項(xiàng)一起部署,并且在同一臺(tái)機(jī)器上也有單獨(dú)的持久機(jī)器人,甚至不需要在操作系統(tǒng)本身上安裝 MongoDB。

您有任何改進(jìn)機(jī)器人的想法嗎?讓我知道。

也可以隨意下載并自己嘗試——請(qǐng)注意,從空白開(kāi)始,在它開(kāi)始變得有意義之前需要大量的訓(xùn)練數(shù)據(jù)/與之交談。

下個(gè)項(xiàng)目見(jiàn)。

?
poYBAGOo5Q-AErUdAABVisbHvsM916.png
?

?


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
  2. 1.06 MB  |  532次下載  |  免費(fèi)
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費(fèi)
  5. 3TC358743XBG評(píng)估板參考手冊(cè)
  6. 1.36 MB  |  330次下載  |  免費(fèi)
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費(fèi)
  9. 5元宇宙深度解析—未來(lái)的未來(lái)-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費(fèi)
  11. 6迪文DGUS開(kāi)發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費(fèi)
  13. 7元宇宙底層硬件系列報(bào)告
  14. 13.42 MB  |  182次下載  |  免費(fèi)
  15. 8FP5207XR-G1中文應(yīng)用手冊(cè)
  16. 1.09 MB  |  178次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21549次下載  |  免費(fèi)
  9. 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書(shū))
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
  16. 0.00 MB  |  6656次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191187次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
  14. 158M  |  183279次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)