資料介紹
描述
是時(shí)候談?wù)劻恕?/font>
我想我應(yīng)該給這個(gè)它自己的特定帖子——這是我在我的Raspbinator和Nvidinator項(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è)依賴項(xiàng):
- 模糊的
- 數(shù)據(jù)庫(kù)
- PyMongo (需要使用3.4.0版本)
其他一切都應(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)!!”
等等。
可以使用開(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打包在一起?——這樣它就可以很容易地與所有依賴項(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)。
?
- 坦克機(jī)器人開(kāi)源分享
- 掃地機(jī)器人開(kāi)源資料 43次下載
- 智能聊天機(jī)器人ChatGPT的初體驗(yàn)
- 英雄機(jī)器人開(kāi)源
- WhatsApp地圖和天氣預(yù)報(bào)聊天機(jī)器人開(kāi)源
- 機(jī)器人開(kāi)源案例
- 基于STM32簡(jiǎn)易DIY智能聊天機(jī)器人
- 基于DSP和PC的農(nóng)業(yè)機(jī)器人控制系統(tǒng) 17次下載
- 如何解決聊天機(jī)器人中用戶就醫(yī)意圖識(shí)別方法 2次下載
- 檢索式智能對(duì)話機(jī)器人開(kāi)發(fā)實(shí)戰(zhàn)案例詳細(xì)資料分析概述 16次下載
- 分享幾款聊天機(jī)器人平臺(tái)玩轉(zhuǎn)聊天機(jī)器人 0次下載
- 實(shí)例闡述聊天機(jī)器人的可擴(kuò)展架構(gòu) 0次下載
- 機(jī)器人的傳感器詳解 0次下載
- 聊天機(jī)器人的作用分析 2次下載
- 五步詮釋聊天機(jī)器人 10次下載
- 字節(jié)發(fā)布機(jī)器人領(lǐng)域首個(gè)開(kāi)源視覺(jué)-語(yǔ)言操作大模型,激發(fā)開(kāi)源VLMs更大潛能 360次閱讀
- 機(jī)器人技術(shù)中常用的路徑規(guī)劃算法的開(kāi)源庫(kù) 843次閱讀
- 面對(duì)疫情 醫(yī)療機(jī)器人能幫上什么忙? 2126次閱讀
- dfrobotSparki機(jī)器人套裝簡(jiǎn)介 2064次閱讀
- 工業(yè)機(jī)器人編程入門(mén)_工業(yè)機(jī)器人的編程要求 9571次閱讀
- 醫(yī)用機(jī)器人的定義_醫(yī)用機(jī)器人發(fā)展 3122次閱讀
- 醫(yī)用機(jī)器人的功能_醫(yī)用機(jī)器人分類(lèi) 2227次閱讀
- 協(xié)作機(jī)器人的起源_為什么需要協(xié)作機(jī)器人 8127次閱讀
- 詳細(xì)梳理聊天機(jī)器人的現(xiàn)狀及技術(shù),并討論了未來(lái)可能的發(fā)展方向 7215次閱讀
- 用Python輕松做一個(gè)智能聊天機(jī)器人 6756次閱讀
- 機(jī)器視覺(jué)的機(jī)器人取代四臺(tái)傳統(tǒng)的火焰處理機(jī)器人 3270次閱讀
- 如何區(qū)分機(jī)器人、協(xié)作機(jī)器人和移動(dòng)機(jī)器人? 6828次閱讀
- 常識(shí)知識(shí)有助于開(kāi)放域?qū)υ捪到y(tǒng)中語(yǔ)言的理解與生成 5043次閱讀
- 軟體機(jī)器人 前所未見(jiàn)的機(jī)器人 3692次閱讀
- 機(jī)器人的最佳編程語(yǔ)言是什么?機(jī)器人十大流行編程語(yǔ)言匯總 3.4w次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來(lái)的未來(lái)-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開(kāi)發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊(cè)
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書(shū))
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論
查看更多