資料介紹
描述
是時候談談了。
我想我應該給這個它自己的特定帖子——這是我在我的Raspbinator和Nvidinator項目中使用的聊天機器人。下面鏈接的 GitHub 將隨著我對其進行改進而不斷更新。
我已經決定了 Chatbot 8 這個名字——在我使用 GitHub 之前,我把它放在了我的 Google Drive 上,每次迭代我都會增加它的數量;我很高興在 Raspbinator 中使用的第一個是第 8 次迭代,現在,這個名字有點卡住了。
主要目標:
- 制作一個可以響應人類輸入的機器人,隨著時間的推移學習并返回更多有機響應。
- 能夠從大型文本文件(例如電影腳本和對話記錄)中進行訓練。
- 使其能夠輕松集成到其他項目中。
工作原理。
所以這是我的GitHub 上的代碼。
我已經讓這些聊天機器人與Raspberry Pi項目一起工作——因此一切都將基于 Pi 和 Raspbian 操作系統。
有幾個依賴項:
其他一切都應該包含在Raspbian上的 Python 包中。
在較高層次上,系統的邏輯如下:
Bot 說最初的“你好”。
人類回應。
Bot 存儲對“Hello”的響應,并在其數據庫中搜索其之前所說的與人類輸入的內容非常匹配的任何內容,然后顯示先前交互的結果。
通過存儲人類對機器人 Mongo 數據庫的反應并將它們分配給機器人之前說過的事情,然后將人的輸入與這些項目進行比較以找到合適的反應,您可以從機器人那里得到一些相當不錯的反應。
舉個例子; 如果機器人說“天氣怎么樣”并且我輸入“外面正在下雨”,它會存儲該響應并將其與該輸入相關聯。現在,如果其他人出現并輸入“天氣如何”,它將在其數據庫中搜索相近的匹配項并找到之前的回復“天氣怎么樣”,此時它將搜索對此的回復并找到我的回復“它的外面在下雨”。因此,雖然它并沒有真正“思考”它的反應,但它確實最終會給出一些合理的回復。
它將首先以相當高的準確度搜索已知輸入,然后如果失敗,它將降低到中等準確度,最后降低到低準確度。我目前正在使用?這個?庫來比較字符串:
準確度級別為:
- fuzz.ratio(Str1.lower(),Str2.lower())
- fuzz.partial_ratio(Str1.lower(),Str2.lower())
- fuzz.token_set_ratio(Str1,Str2)
您可以在我上面鏈接的網站上看到這些函數是如何工作的——但通常所需的準確性會隨著函數的運行而降低。每個的閾值也可以調整。
因此,如果輸入字符串/存儲字符串的最高返回比率低于閾值,它將下降到第二個部分匹配并執行相同的操作,最后如果失敗;它將移動到設定的比率匹配。最后一個適用于具有匹配單詞的不同大小的字符串。
現在如果上面沒有匹配項會發生什么?在機器人響應之前,它會將收到的輸入存儲到數據庫中,它還會拆分每個輸入并存儲所有單個單詞。因此,當它找不到之前對您的輸入的回復時,它有 40% 的機會從這些詞中生成一個隨機句子,并有 60% 的機會選擇一個它知道的完全隨機的完整句子。
現在你可能會認為這會導致機器人說很多廢話——你是對的,但一開始它只會在你和它說話時重復你說的話。但是你輸入和回復的越多,它學到的越多,它生成的隨機句子有時實際上有一定的意義;當你回復它時,它就會有一個參考點,用于確定它何時收到類似于它剛才所說的輸入。
這是另一個例子:
如果我對機器人說:“我喜歡奶酪”,它的數據庫中沒有任何輸入信息,也沒有足夠的詞來生成一個隨機句子,基本上是一個猜測,它可能會返回:“Hello television like usually”。這當然沒有意義,但如果我隨后回復“是的,我也喜歡電視”,它會存儲該回復。現在,比方說,其他人出現并輸入“我通常看電視”,它會在數據庫中運行它并找到它與之前所說的相似(“你好電視就像通常一樣”)并找到我的回答(“是的,我喜歡電視也是”),給人一種真實反應的錯覺。
它本質上是從頭開始學習,它什么都不知道,所以它會盡力使用以前的經驗,作為最后的手段,猜測——直到它學到更多,這樣它就不必再猜測了。
它還能夠與多人保持對話——為與之交談的每個人創建一個新班級,并記錄他們與機器人的最后回應。因此,當您使用“change_name”命令或通過從外部程序向對話功能輸入不同的名稱來切換人員時,它可以與在該會話中已經與之交談過的人進行對話。
模塊化的。
最近,我添加了將聊天機器人導入其他程序的功能,并且能夠從機器人獲取文本輸入和接收輸出——具有一個簡單的界面,只需要一個帶名稱的輸入字符串。然后機器人本身會處理之前的回復和機器人響應;隨著對話切換并返回響應。
它還可以獨立運行以進行測試,即使作為另一個項目的組件也可以輕松進行訓練和測試——例如與Nvidianator的 STT/TTS 和 ML 部分集成。
要使用它,只需將 bot .py 文件放在與它將使用的程序相同的文件夾中并使用:
將 bot_8 導入為聊天機器人
一旦導入到 Python 程序中,它就可以與命令交互:
回復 = chatbot.conversation(inputWords,humanid)
輸入的單詞當然就是輸入的內容,因此這可以從語音到文本功能(例如wit.ai?或其他一些文本輸入)中獲取。
humanid 是當前與之交互的人的名字。
將這兩個輸入都放入函數后,它將以字符串形式返回回復——然后可用于在導入聊天機器人的程序中進行進一步處理。
訓練。
我還添加了一個訓練模塊——這可以很方便地加載大型文本文件,例如電影劇本或對話記錄,這樣機器人就可以在現有數據上進行訓練——我已經用合金裝備的腳本試過了它工作得很好。
它通過掃描每一行并將數據放入機器人來工作——當每一行新行進入機器人代碼時,都會將其分配為對前一行的響應。
它被編程為過濾掉以非字母字符開頭的空行和句子,以及以“:”分割行;因此,如果一個腳本的名字表示誰在說話,并且有各種注釋,應該跳過這些行并刪除名字。雖然目前這有點混亂并且可以做一些工作,但這基本上意味著你可以插入一個腳本并且它(應該)整齊地通過它,只選擇相關的語音文本。
通過在腳本上訓練機器人,您可以輸入來自游戲/電影/對話的輸入,它會非常可靠地返回正確的響應——就上面的《合金裝備》腳本而言,您可以通過輸入角色所說的話。
例如,使用上述 MGS 訓練數據:
- 如果我輸入“你是菜鳥嗎?”
- 機器人用 Meryl 的一句話回應:“小心,我不是菜鳥!!”
等等。
可以使用開關“-fresh”調用訓練模塊,這將清除數據庫并從頭開始訓練,如果沒有此開關,它將進一步訓練現有數據庫。
訓練數據需要與機器人位于同一文件夾中,并稱為“learning.txt”。
還有一個 deleteDB 模塊,當它運行時,它按照它說的去做并清除數據庫。
從理論上講,如果它接受大量正常人類對話的訓練,它會返回大量有機反應;此外,根據他們接受的培訓輸入,每個機器人都可以有自己獨特的個性。
正在進行中。
隨著時間的推移,我將繼續改進它以使其變得更好。因此,請繼續檢查我的 GitHub 以獲取更新。
我也在努力讓聊天機器人與Docker打包在一起?——這樣它就可以很容易地與所有依賴項一起部署,并且在同一臺機器上也有單獨的持久機器人,甚至不需要在操作系統本身上安裝 MongoDB。
您有任何改進機器人的想法嗎?讓我知道。
也可以隨意下載并自己嘗試——請注意,從空白開始,在它開始變得有意義之前需要大量的訓練數據/與之交談。
下個項目見。
?
- 坦克機器人開源分享
- 掃地機器人開源資料 43次下載
- 智能聊天機器人ChatGPT的初體驗
- 英雄機器人開源
- WhatsApp地圖和天氣預報聊天機器人開源
- 機器人開源案例
- 基于STM32簡易DIY智能聊天機器人
- 基于DSP和PC的農業機器人控制系統 17次下載
- 如何解決聊天機器人中用戶就醫意圖識別方法 2次下載
- 檢索式智能對話機器人開發實戰案例詳細資料分析概述 16次下載
- 分享幾款聊天機器人平臺玩轉聊天機器人 0次下載
- 實例闡述聊天機器人的可擴展架構 0次下載
- 機器人的傳感器詳解 0次下載
- 聊天機器人的作用分析 2次下載
- 五步詮釋聊天機器人 10次下載
- 字節發布機器人領域首個開源視覺-語言操作大模型,激發開源VLMs更大潛能 360次閱讀
- 機器人技術中常用的路徑規劃算法的開源庫 843次閱讀
- 面對疫情 醫療機器人能幫上什么忙? 2126次閱讀
- dfrobotSparki機器人套裝簡介 2064次閱讀
- 工業機器人編程入門_工業機器人的編程要求 9571次閱讀
- 醫用機器人的定義_醫用機器人發展 3122次閱讀
- 醫用機器人的功能_醫用機器人分類 2227次閱讀
- 協作機器人的起源_為什么需要協作機器人 8127次閱讀
- 詳細梳理聊天機器人的現狀及技術,并討論了未來可能的發展方向 7215次閱讀
- 用Python輕松做一個智能聊天機器人 6756次閱讀
- 機器視覺的機器人取代四臺傳統的火焰處理機器人 3270次閱讀
- 如何區分機器人、協作機器人和移動機器人? 6828次閱讀
- 常識知識有助于開放域對話系統中語言的理解與生成 5043次閱讀
- 軟體機器人 前所未見的機器人 3692次閱讀
- 機器人的最佳編程語言是什么?機器人十大流行編程語言匯總 3.4w次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 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開發指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 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次下載 | 免費
評論
查看更多