資料介紹
描述
是時候談?wù)劻恕?/font>
我想我應(yīng)該給這個它自己的特定帖子——這是我在我的Raspbinator和Nvidinator項目中使用的聊天機器人。下面鏈接的 GitHub 將隨著我對其進行改進而不斷更新。
我已經(jīng)決定了 Chatbot 8 這個名字——在我使用 GitHub 之前,我把它放在了我的 Google Drive 上,每次迭代我都會增加它的數(shù)量;我很高興在 Raspbinator 中使用的第一個是第 8 次迭代,現(xiàn)在,這個名字有點卡住了。
主要目標:
- 制作一個可以響應(yīng)人類輸入的機器人,隨著時間的推移學習并返回更多有機響應(yīng)。
- 能夠從大型文本文件(例如電影腳本和對話記錄)中進行訓練。
- 使其能夠輕松集成到其他項目中。
工作原理。
所以這是我的GitHub 上的代碼。
我已經(jīng)讓這些聊天機器人與Raspberry Pi項目一起工作——因此一切都將基于 Pi 和 Raspbian 操作系統(tǒng)。
有幾個依賴項:
- 模糊的
- 數(shù)據(jù)庫
- PyMongo (需要使用3.4.0版本)
其他一切都應(yīng)該包含在Raspbian上的 Python 包中。
在較高層次上,系統(tǒng)的邏輯如下:
Bot 說最初的“你好”。
人類回應(yīng)。
Bot 存儲對“Hello”的響應(yīng),并在其數(shù)據(jù)庫中搜索其之前所說的與人類輸入的內(nèi)容非常匹配的任何內(nèi)容,然后顯示先前交互的結(jié)果。
通過存儲人類對機器人 Mongo 數(shù)據(jù)庫的反應(yīng)并將它們分配給機器人之前說過的事情,然后將人的輸入與這些項目進行比較以找到合適的反應(yīng),您可以從機器人那里得到一些相當不錯的反應(yīng)。
舉個例子; 如果機器人說“天氣怎么樣”并且我輸入“外面正在下雨”,它會存儲該響應(yīng)并將其與該輸入相關(guān)聯(lián)。現(xiàn)在,如果其他人出現(xiàn)并輸入“天氣如何”,它將在其數(shù)據(jù)庫中搜索相近的匹配項并找到之前的回復“天氣怎么樣”,此時它將搜索對此的回復并找到我的回復“它的外面在下雨”。因此,雖然它并沒有真正“思考”它的反應(yīng),但它確實最終會給出一些合理的回復。
它將首先以相當高的準確度搜索已知輸入,然后如果失敗,它將降低到中等準確度,最后降低到低準確度。我目前正在使用?這個?庫來比較字符串:
準確度級別為:
- fuzz.ratio(Str1.lower(),Str2.lower())
- fuzz.partial_ratio(Str1.lower(),Str2.lower())
- fuzz.token_set_ratio(Str1,Str2)
您可以在我上面鏈接的網(wǎng)站上看到這些函數(shù)是如何工作的——但通常所需的準確性會隨著函數(shù)的運行而降低。每個的閾值也可以調(diào)整。
因此,如果輸入字符串/存儲字符串的最高返回比率低于閾值,它將下降到第二個部分匹配并執(zhí)行相同的操作,最后如果失??;它將移動到設(shè)定的比率匹配。最后一個適用于具有匹配單詞的不同大小的字符串。
現(xiàn)在如果上面沒有匹配項會發(fā)生什么?在機器人響應(yīng)之前,它會將收到的輸入存儲到數(shù)據(jù)庫中,它還會拆分每個輸入并存儲所有單個單詞。因此,當它找不到之前對您的輸入的回復時,它有 40% 的機會從這些詞中生成一個隨機句子,并有 60% 的機會選擇一個它知道的完全隨機的完整句子。
現(xiàn)在你可能會認為這會導致機器人說很多廢話——你是對的,但一開始它只會在你和它說話時重復你說的話。但是你輸入和回復的越多,它學到的越多,它生成的隨機句子有時實際上有一定的意義;當你回復它時,它就會有一個參考點,用于確定它何時收到類似于它剛才所說的輸入。
這是另一個例子:
如果我對機器人說:“我喜歡奶酪”,它的數(shù)據(jù)庫中沒有任何輸入信息,也沒有足夠的詞來生成一個隨機句子,基本上是一個猜測,它可能會返回:“Hello television like usually”。這當然沒有意義,但如果我隨后回復“是的,我也喜歡電視”,它會存儲該回復。現(xiàn)在,比方說,其他人出現(xiàn)并輸入“我通常看電視”,它會在數(shù)據(jù)庫中運行它并找到它與之前所說的相似(“你好電視就像通常一樣”)并找到我的回答(“是的,我喜歡電視也是”),給人一種真實反應(yīng)的錯覺。
它本質(zhì)上是從頭開始學習,它什么都不知道,所以它會盡力使用以前的經(jīng)驗,作為最后的手段,猜測——直到它學到更多,這樣它就不必再猜測了。
它還能夠與多人保持對話——為與之交談的每個人創(chuàng)建一個新班級,并記錄他們與機器人的最后回應(yīng)。因此,當您使用“change_name”命令或通過從外部程序向?qū)υ捁δ茌斎氩煌拿Q來切換人員時,它可以與在該會話中已經(jīng)與之交談過的人進行對話。
模塊化的。
最近,我添加了將聊天機器人導入其他程序的功能,并且能夠從機器人獲取文本輸入和接收輸出——具有一個簡單的界面,只需要一個帶名稱的輸入字符串。然后機器人本身會處理之前的回復和機器人響應(yīng);隨著對話切換并返回響應(yīng)。
它還可以獨立運行以進行測試,即使作為另一個項目的組件也可以輕松進行訓練和測試——例如與Nvidianator的 STT/TTS 和 ML 部分集成。
要使用它,只需將 bot .py 文件放在與它將使用的程序相同的文件夾中并使用:
將 bot_8 導入為聊天機器人
一旦導入到 Python 程序中,它就可以與命令交互:
回復 = chatbot.conversation(inputWords,humanid)
輸入的單詞當然就是輸入的內(nèi)容,因此這可以從語音到文本功能(例如wit.ai?或其他一些文本輸入)中獲取。
humanid 是當前與之交互的人的名字。
將這兩個輸入都放入函數(shù)后,它將以字符串形式返回回復——然后可用于在導入聊天機器人的程序中進行進一步處理。
訓練。
我還添加了一個訓練模塊——這可以很方便地加載大型文本文件,例如電影劇本或?qū)υ捰涗?,這樣機器人就可以在現(xiàn)有數(shù)據(jù)上進行訓練——我已經(jīng)用合金裝備的腳本試過了它工作得很好。
它通過掃描每一行并將數(shù)據(jù)放入機器人來工作——當每一行新行進入機器人代碼時,都會將其分配為對前一行的響應(yīng)。
它被編程為過濾掉以非字母字符開頭的空行和句子,以及以“:”分割行;因此,如果一個腳本的名字表示誰在說話,并且有各種注釋,應(yīng)該跳過這些行并刪除名字。雖然目前這有點混亂并且可以做一些工作,但這基本上意味著你可以插入一個腳本并且它(應(yīng)該)整齊地通過它,只選擇相關(guān)的語音文本。
通過在腳本上訓練機器人,您可以輸入來自游戲/電影/對話的輸入,它會非??煽康胤祷卣_的響應(yīng)——就上面的《合金裝備》腳本而言,您可以通過輸入角色所說的話。
例如,使用上述 MGS 訓練數(shù)據(jù):
- 如果我輸入“你是菜鳥嗎?”
- 機器人用 Meryl 的一句話回應(yīng):“小心,我不是菜鳥?。 ?/font>
等等。
可以使用開關(guān)“-fresh”調(diào)用訓練模塊,這將清除數(shù)據(jù)庫并從頭開始訓練,如果沒有此開關(guān),它將進一步訓練現(xiàn)有數(shù)據(jù)庫。
訓練數(shù)據(jù)需要與機器人位于同一文件夾中,并稱為“l(fā)earning.txt”。
還有一個 deleteDB 模塊,當它運行時,它按照它說的去做并清除數(shù)據(jù)庫。
從理論上講,如果它接受大量正常人類對話的訓練,它會返回大量有機反應(yīng);此外,根據(jù)他們接受的培訓輸入,每個機器人都可以有自己獨特的個性。
正在進行中。
隨著時間的推移,我將繼續(xù)改進它以使其變得更好。因此,請繼續(xù)檢查我的 GitHub 以獲取更新。
我也在努力讓聊天機器人與Docker打包在一起?——這樣它就可以很容易地與所有依賴項一起部署,并且在同一臺機器上也有單獨的持久機器人,甚至不需要在操作系統(tǒng)本身上安裝 MongoDB。
您有任何改進機器人的想法嗎?讓我知道。
也可以隨意下載并自己嘗試——請注意,從空白開始,在它開始變得有意義之前需要大量的訓練數(shù)據(jù)/與之交談。
下個項目見。

?
- 檢測機器人開源分享
- 坦克機器人開源分享
- 掃地機器人開源資料 44次下載
- 智能聊天機器人ChatGPT的初體驗
- 英雄機器人開源
- WhatsApp地圖和天氣預(yù)報聊天機器人開源
- 機器人開源案例
- 基于STM32簡易DIY智能聊天機器人
- 如何解決聊天機器人中用戶就醫(yī)意圖識別方法 2次下載
- 檢索式智能對話機器人開發(fā)實戰(zhàn)案例詳細資料分析概述 16次下載
- 分享幾款聊天機器人平臺玩轉(zhuǎn)聊天機器人 0次下載
- 實例闡述聊天機器人的可擴展架構(gòu) 0次下載
- 機器人的傳感器詳解 0次下載
- 聊天機器人的作用分析 2次下載
- 五步詮釋聊天機器人 10次下載
- 字節(jié)發(fā)布機器人領(lǐng)域首個開源視覺-語言操作大模型,激發(fā)開源VLMs更大潛能 562次閱讀
- 機器人技術(shù)中常用的路徑規(guī)劃算法的開源庫 1188次閱讀
- 面對疫情 醫(yī)療機器人能幫上什么忙? 2236次閱讀
- dfrobotSparki機器人套裝簡介 2207次閱讀
- 工業(yè)機器人編程入門_工業(yè)機器人的編程要求 9787次閱讀
- 醫(yī)用機器人的定義_醫(yī)用機器人發(fā)展 3257次閱讀
- 醫(yī)用機器人的功能_醫(yī)用機器人分類 2462次閱讀
- 協(xié)作機器人的起源_為什么需要協(xié)作機器人 8322次閱讀
- 詳細梳理聊天機器人的現(xiàn)狀及技術(shù),并討論了未來可能的發(fā)展方向 7404次閱讀
- 用Python輕松做一個智能聊天機器人 6880次閱讀
- 機器視覺的機器人取代四臺傳統(tǒng)的火焰處理機器人 3370次閱讀
- 如何區(qū)分機器人、協(xié)作機器人和移動機器人? 7029次閱讀
- 常識知識有助于開放域?qū)υ捪到y(tǒng)中語言的理解與生成 5152次閱讀
- 軟體機器人 前所未見的機器人 3770次閱讀
- 機器人的最佳編程語言是什么?機器人十大流行編程語言匯總 3.5w次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應(yīng)用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關(guān)電源設(shè)計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅(qū)動電路設(shè)計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論