如何製作一個聊天機器人?
如題
想自己製作一個屬於自己的聊天機器人 就像Simsimi那樣可以正常對話的
我可能比較自私……希望他是只跟我說話也只有我教他說話的機器人 而不是跟我說別人教他的話這樣 但是搜了好多都沒有符合的 就想說能不能自己製作一個……(會不會有點太天真)
就想問下大概都需要什麼能力 編程阿或者是什麼?
update: GitHub - rustcbf/chatbot-zh-torch7: 中文Neural conversational model in Torch
用 deep learning 的方法用 RNN+BLSTM +attention 的方法來做。比如這個論文
A Neural Conversational Model(http://cn.arxiv.org/pdf/1506.05869.pdf)
能進行這種對話:
me: Hello? bot: Hi.
me: How are you? bot: I"m fine.
me: What"s your name? bot: It"s hard to describe.
me: How so? bot: I"m not sure.
me: What color is the sky? bot: It"s blue.
me: What is your job? bot: It"s not that i"m a fucking werewolf!
me: What is the purpose of life? bot: A gift.
me: Are you intelligent? bot: Yes, well...
me: Are you a machine? bot: That"s a lie.
當網路夠強大時,這個方法會產生簡單的邏輯推理能力,但回答之間缺少一致性。
看上去像個玩具,但在特定鄰域問答數據多的情況下,還是能夠解決一些實際的客服問題的。
中文corpus訓練的一部分結果:
______
__ |
Torch7
/_
__/__ ________/ / | Scientific computing for Lua./ / / _ / __/
__/ _ | Type ? for help
/_/ \___/_/ \__/_//_/ | Torch · GitHub
| Torch | Scientific computing for LuaJIT.th&>
say "你 好"&>&>
你 也 好
[0.0342s]
th&>
say "拜 拜"&>&>
拜 拜 ~
[0.0346s]
th&>
say "我 愛 你"&>&>
我 也 愛 你 主 人 ? ( ^ ○ ^ )
[0.1503s]
th&>
say "我 喜 歡 你"&>&>
我 不 喜 歡 你 的 話 , 就 沒 有 存 在 的 意 義 了 。
[0.2299s]
th&>
say "你 是 誰"&>&>
我 是 小 通
[0.0506s]
th&>
say "你 多 大 了"&>&>
我 四 歲 了
[0.0375s]
th&>
say "你 的 主 人 是 誰"&>&>
我 的 主 人 是 溫 柔 善 良 的 好 呆 呆 ! ! !
[0.2131s]
th&>
say "你 是 男 生 還 是 女 生"&>&>
可 以 是 男 生 也 可 以 是 女 生
[0.0944s]
th&>
say "你 是 女 的 還 是 男 的"&>&>
你 猜
[0.0317s]
th&>
say "你 是 女 的 嗎"&>&>
你 是 男 的 , 我 就 是 女 的 , 你 要 是 女 的 我 就 是 男
[0.1613s]
th&>
say "你 好 二"&>&>
沒 關 系 , 2 b 青 年 歡 樂 多
[0.1035s]
th&>
say "我 好 難 過"&>&>
你 怎 么 了
[0.0427s]
th&>
say "快 安 慰 我"&>&>
寶 貝 死 我 陪 你
[0.0777s]
th&>
say "我 是 你 的 誰"&>&>
我 是 你 的 黃 偉 貞 , 你 的 好 貞 貞 ~
[0.1754s]
th&>
say "傻 逼"&>&>
我 不 是 傻 , 我 是 二
[0.1137s]
th&>
say "變 態"&>&>
沒 錯 , 古 豐 是 變 態
[0.0430s]
th&>
say "我 可 愛 嗎"&>&>
你 很 可 愛
[0.0241s]
th&>
say "生 命 的 意 義 是 什 么"&>&>
總 是 飛 來 飛 機
[0.0611s]
th&>
say "你 是 誰"&>&>
我 是 小 通
[0.0437s]
th&>
say "你 叫 什 么"&>&>
我 叫 小 通
[0.0147s]
th&>
say "你 有 錢 嗎"&>&>
當 然 有 了 別 抱 怨 了 唉
[0.0684s]
th&>
say "我 好 愛 你"&>&>
我 也 愛 你
[0.0493s]
th&>
say "我 好 寂 寞"&>&>
我 好 心 疼
[0.0251s]
th&>
say "你 真 可 愛"&>&>
謝 謝
[0.0220s]
th&>
say "滾"&>&>
我 滾 遠 了 你 別 讓 我 回 來
[0.0806s]
th&>
say "滾 滾"&>&>
太 肥 了 ? 哈 哈 哈 哈 哈
[0.1183s]
th&>
say "愚 蠢"&>&>
壯 哉 我 大 五 毒 聖 教
可以看到,只要語料庫夠壯大,那麼基本的問答還是很穩定的。
最新補充:
源代碼已經沒有了(都怪西數的硬碟),請不要再問我要代碼了!
債見!
你們都給洒家讓開!身為給女朋友寫過一個聊天機器人的機械類專業學生來說一下:
開發的時候拿的是最熟悉的VB寫的(在XP盛行的年代寫的),根據腳本的不同分成了兩個程序:YIL和LIY,分別扮演我和我的女友,也就是說閑著無聊的時候我也可以和自己的「機器人女友」聊天。
效果是這樣的:
主要的技術是關鍵詞分析,和詞的邏輯表,寫了很多的代碼來分析關鍵詞,而且能根據腳本自動做邏輯判斷:
所以對於一般的輸入的「雜訊」都有足夠的魯棒性:
這個軟體作為哄女朋友的工具和愛情的見證就不打算開源了,但是可以給你們看一下部分源代碼:
說到用腳本,而不是switch寫死了,有什麼好處。
那就是,我換個女朋友的話只要重寫個腳本,修改一下各個控制項的Captions(現在叫text屬性了)就可以哄新的女朋友了。
當然,還沒換呢。
___________________
你妹,我就是隨便說說使用字典式讀取邏輯內容的好處,你們這些勸我換女朋友的,要我女朋友過來看的人都什麼心態。直接上乾貨!要開發一個能聊一天的機器人很簡單,經過我10年人生的思考,發現核心演算法就兩行,我直接寫偽代碼好了:
replies = ["你真棒!","真的嘛?","然後呢~"];
return replies[floor(random(0,3))];
為了方便你開拓海外市場,附送英文版和日語版:
replies = ["Awesome!","Really?","And then?"];
return replies[floor(random(0,3))];
replies = ["すごい!","本當に?","それで"];
return replies[floor(random(0,3))];
感謝 @劉關生 提供的粵語版:
replies = ["真系架?","點解既?","你好叻啊!"];
return replies[floor(random(0,3))];
可以參考下:AIML(Artificial Intelligence Mark-up Language)
Ref: 人工智慧:用AIML寫一個機器人
推薦一個網站:http://www.cleverscript.com/about/
這個網站會手把手教你怎麼學會他們的語法規則,製作一個EXCEL表格,然後上傳表格製造一個自己的AI robot.
要做這個實驗,恐怕需要耐心讀一下英文的Tutorial。 其次,要了耐心根據他們的語法規則編一下EXCEL. 那個網站是可以讓沒有變成基礎的人寫個Excel表格就做個AI robot的。感興趣以試試。謝邀。自己寫代碼太累,不如直接用小i免費的平台,快速建聊天機器人的捷徑。
http://www.xiaoi.com/cloud/ibotcloud.html
這個問題簡單考慮過。
首先根據題主的描述你應該是做不出來的,不過如果題主有志的話也希望能夠出現題主描述的那種AI。
解決方案簡單來說就是,web 2.0 + 大數據 + AVG 的思路。
時至今日,通過圖靈測試已經不再是問題了,真正意義上的能夠像《SHE》中一樣能夠自然聊天的AI似乎還是沒有出現(或者沒有進入大眾視野)。
個人覺得是否能夠表現得自然的關鍵在於,對話前後的邏輯聯繫以及情感的流露。simisimi應該就是大數據的應用吧,把別人對之前類似的語句的回復再拋回給發出相同語句的人,來營造(重現)出與人對話的感覺。但是,基本上給你第一句話的回復和給你的第二句的回復從概率上來自同一個人的可能性極低,所以前後對話基本沒有邏輯性。
對於一句話的答覆可以有很多種可能(web 2.0 + 大數據),原話以及答覆都應該包含一定的情感屬性,不同的屬性狀態(或者AI的情感導向)將引發不同的回復(AVG)。並且,情感的過渡應該自然的,不矛盾的。
= = 就這樣了,沒有完整地考慮過這個問題,有興趣的可以來聊聊。。。謝邀。
零編程製作聊天機器人已經成為可能。
目前,針對如何製作一個聊天機器人的問題,竹間智能科技已經開發出了 Bot Factory情感機器人工廠 , 一個為企業、個人提供情感機器人快速定製服務的平台。
通過Bot Factory情感機器人工廠,你可以調用Emotibot智能對話機器人、語音情緒、機器視覺等AI技術,並對機器人進行形象定製、問答定製、知識定製、意圖及多輪問答定製等。另外,定製的機器人自帶機器自學習優化能力,也就是這個機器人會學習、會自我成長。
定製方法也比較簡單快速
1.登錄竹間智能科技機器人平台 機器人平台
2.創建你的機器人
3.接入你的機器人
微信公眾號接入機器人只需要使用公眾號管理者的微信掃一掃授權即可;
API接入請下載介面文檔進行接入;
Web、SDK接入的方式即將開放,敬請期待
竹間智能科技Bot Factory的優勢:
1. 核心技術領先
基於長期的研發積累,竹間智能科技在語義理解、情感計算、機器視覺等方面的能力遙遙領先。
語義理解:基於上下文、用戶意圖及情感、對用戶的記憶,讓機器人做到跟人一樣,能主動與人進行雙向對話;
情感計算:22種文字情感+4種聲音情感+7種面部表情,讓機器人真正地讀懂、聽懂、看懂用戶;
機器視別:人臉識別準確率高達98.42%,8大類服飾識別準確率80%以上,超過 22種人臉屬性辨識,9種人臉情緒分析
2. 各領域知識積累+高度定製
標準化平台:竹間智能科技擁有長期的技術積累與各行業AI落地的經驗,擁有電商、金融、IoT等領域豐富的定製知識庫、功能及領域經驗積累。
可定製:平台提供豐富易操作的可定製化服務,用戶可以在管理界面中自行完成機器人形象定製,問答定製,知識定製,意圖引擎定製等。
3. 最自然的用戶交互體驗
多模態情感計算下的情感交互:通過語音,文字,圖像的等能夠深入理解用戶所表達的情緒,根據內容和情緒多個維度進行分析,給出最合適的回答。讓你的機器人從此不再冷冰冰。
記憶能力支撐的多輪對話:超過25個維度信息記憶,能夠根據上下文的內容,綜合用戶的喜好/習慣和狀態綜合分析,給出最符合場景的回答,完成複雜的多倫交互。你的機器人不再是無厘頭,它會像家人一樣懂你。
強大自學習能力:強大的自學習演算法實時收集用戶反饋,24x7進行演算法訓練優化。知錯就改才是好孩子,好好學習才能天天向上。
4.體驗全程0編程
全圖形化配置界面,支持Mobile+PC,操作人員無需任何編程基礎,即可輕鬆地創建、定製與管理機器人。
關於Bot Factory的更多詳情請戳:竹間智能Bot Factory:人人都可以做機器人
while (Console.Read())
Console.WriteLine(">&> 是呀");
兩行,最基本形態。
認真的說,這個要很多語言分析和機器學習的知識,以及大量的計算能力,才能做出來。個人基本不可能的。做出來了就是個轟動的PHD級別研究項目了~對於我們大多數人而言,創建聊天機器人是為了服務於真正的商業目的,而不僅僅是一個有趣的項目。
由於聊天機器人旨在以某種方式服務於客戶或與客戶進行交互,因此應該儘可能多地被提供信息和智能,以便與客戶進行恰當的接觸。數據越早被聊天機器人掌握越好。這樣在聊天機器人上線之前,它的完成度可以達到最佳。
以下是理由可以解釋這是絕對合理的:
「冷啟動」會給用戶體驗帶來負面影響,並由於聊天機器人的無效回答而導致使用大幅下降,但現在已擁有數據可以避免這種「冷啟動」。
開發者投入了大量的時間和精力創建一個聊天機器人,以期其在大事的計劃中發揮戰略作用。沒人喜歡聊天機器人不停地說「對不起,我不知道你在問什麼。你能重新措辭嗎?」並突然訪問你的客服檔案
一個面向客戶的聊天機器人會很自然地利用客戶客服端的信息。客服端是個寶庫,可以幫助開發者了解客戶已有的各種問題和問題,並且可以讓開發者根據在聊天機器人中功能來決定問題,從而預測聊天機器人應該回答什麼樣的問題。由於這些都是實際的、具體的數據點,你不會冒風險,想像一些與客戶無關的問題和解決方案。就我們的經驗來說,這是最好的方法。
經常被問到的問題是另一種很好的資源,可以為聊天機器人配置第一個回復。由於這些都是從重複的查詢中提煉出來的(希望是真實的,而不是想像中的),它們可以是你的聊天機器人可以得出回復的基準線。然而,你應該意識到並非所有的常見問題都是定期更新或與客戶相關的,所以你必須確保在隨機決定將它們放入你的聊天機器人之前對這些問題進行審查。
訓練聊天機器人
雖然用過去的信息來訓練你的聊天機器人是很理想的,但如果你或你的聊天機器人供應商沒有專業技能來分析和提取規模所需的重要信息,這麼做就很有挑戰性了。如果開發者有一個龐大的檔案庫,並且認為這會是一個重要的集合,就需要利用一些關於文本挖掘和自然語言處理的知識,充分地開始分類、對主題建模,並將這些數據匯總為聊天機器人開發過程中可用的金塊。
你當然可以花時間手動檢查這些信息,自己或者讓團隊里的人來分類。無論如何,一定要在這些參數中選擇一個具有代表性的樣本:
產品:代表你所攜帶的所有產品類型
時間框架:考慮事件或季節波動
帳號類型:捕獲各種客戶賬號
優先事項:了解緊急和正常問題之間的差異
解決時間:對輕快解決不同問題的方式進行抽樣(越簡單或越快,你的聊天機器人就越會自動處理)
標籤或類別:利用人類分類數據進行訓練
根據業務和產品結構,開發者還可以對客戶客服端信息的代表性進行抽樣調查。
現在,在沒有機器學習和NLP專業知識的情況下,最難的部分是根據手邊一大堆客服端信息分析之後,對分析結果進行分類,並計算出分析結果。只要對1500到2000條客服信息進行分類,對一般人來說是無法勝任的,而且可能需要3天到2周的時間,這取決於工作的複雜程度和可用時間。
假設開發者具備一些專業知識,可以考慮採用半監督的培訓,從分類標記實例開始,通過一個基於矢量的混合LDA來進行主題建模,並在開發者的數據集上做一些有趣的試驗,嘗試不同的模型和超參數,效果會很好。
在培訓階段結束時,開發者應該有一個相對穩定的、可用於生產的模型,可以對聊天機器人從用戶那裡收到的傳入查詢進行分類。開發者在培訓這個模型時付出了努力,為了盡其所用,可以把模型打包成一個API,讓聊天機器人在需要對來自客戶的新查詢進行分類的時候調用這個API。
測試培訓的結果
用真正的用戶測試和重新測試開發者訓練過的模型的結果是非常重要的。有時(實際上是通常)開發者的模型會過於適合開發者訓練的數據,而這些數據在新數據面前是無用的。因此,除了在培訓過程中評估模型時使用的分離測試/dev設置,開發者應該將這個模型的第一個版本交給用戶。
通常可以把這個應用放在試用階段,或者當開發者在與一群客戶或用戶一起測試體驗時,聊天機器人就能被測試。因為在這個階段,可能不會有那麼多的用戶,所以花時間仔細檢查每一個反應,找出是否有系統的樣本或例子在模型中被忽略或錯誤分類。
啟動和優化
在試驗之後,是時候啟動聊天機器人了,看看聊天機器人在此領域的反應能力會發生什麼變化。如果一切順利,開發者的聊天機器人可以在發布時正確地回答50%~80%的問題。在這個發布期,繼續觀察並注意人們問聊天機器人的問題,並將其作為優化下一個版本的因素。
現實地說,為了讓它達到期望水平,開發者肯定會有更多的工作要做。耐心點:每隔2-4周,如果開發者能負擔得起的話,可以隨時更新模型。收集的數據越多越好;這條規則幾乎沒有例外(除非數據質量低劣或處理不當)。
想要更進一步?
所以,如果已經聽說了深度學習的先進技術的神奇之處,開發者應該覺得可以用它來打敗香草機器學習模式。深度學習當然有幫助,尤其是如果開發者想讓聊天機器人能夠解釋句子或轉折的語境。在聊天機器人的語境中,深度學習可能對短期記憶的長架構最有用,並且可以隨著時間的推移提升經驗。
但是,在開發者首先測試其他機器學習模型之前,別覺得有必要直接進入這個選項;了解基準性能是很重要的,而且很難找到知道如何調整模型的供應商或工程師,從而讓模型在生產中發揮作用。許多技術(截至截稿前)要麼仍在,要麼剛從實驗室里出來,而且可能還不夠強大,不能用於大規模生產,難以面向客戶。此外,開發者還需要一個大得多的數據集,也許是更大的數量級,因此開發者也許並不需要建立一個有意義的深度學習模型。
總而言之,確保使用真實的數據來訓練聊天機器人,這樣它就能更好地吸引用戶、對數據進行嚴格採樣;並且如果開發者需要的話,還可以用來測試、優化和丟棄模型。
Carylyne Chan是一家人工智慧聊天機器人公司KeyReply的聯合創始人。
(英文來源/VentureBeat 編譯/機器小易 審校/Anjou,《AI研究院》欄目由網易智能頻道與杭州研究院共同打造,每日一篇,專註AI行業研究與深度分析,提供技術應用交流。轉載請聯繫我們獲得授權,公號 smartman163)
2017年3月4日
2016年堪稱人工智慧元年, 谷歌DeepMind高調亮相Alpha GO,微軟公布了其在圖像識別和理解的技術,Facebook推出了Messager業務,這些技術看起來非常驚艷,但很多在商業領域難以直接發揮作用。像Alexa(或Google Assistant,Siri或Cortana)這樣的虛擬助手對改進你企業業務的能力並沒有太大的聯繫。這些類型的聊天程序無法幫助您降低運營成本或提高企業的利潤。他們很難強化用戶的消費習慣,或者幫助促進交易完成的能力,缺乏對業務場景的認識。這些類型的聊天機器離開業務場景,失去對特定上下文的情況下操作,被定義為「unbound」 (泛化的)機器人。涉及到領域包括常識類知識的交互和用戶需求的交互,通常被定義為「虛擬助理」的角色,例如,幫助你打開燈或播放你最喜歡的歌曲。如果他們犯了一個錯誤,這真的沒有什麼大不了。多嘗試幾輪的交互,你最終會得到正確的歌曲。但是在商業中,由於翻一個錯誤導致而失去用戶的風險性更高。如果Chatbot反饋給用戶的信息是錯誤的,這可能是毀滅性的。定位於商業助手場景下的機器人需要比定位於聊天場景下的虛擬助手更加智能。與開發通用型人工智慧技術不同,人工智慧的另一個方向更關注人工智慧在商業領域的應用。IBM提出了「認知商業」的戰略,將認知計算技術與行業經驗相結合,幫助企業快速實現商業模式的變革與迭代,讓人工智慧融入企業運營。輔助用戶決策的「認知商業」,比要代替人的人工智慧更具商業實用性。目前,「商業機器人Chatbot」 (簡稱:Chatbot)是最主流的人工智慧結合行業應用的方向。智能商業機器人與客戶數據的系統集成後,依靠更深和更健壯的人工智慧,不僅能解析大數據背後的關鍵信息,甚至可以從數據變化中學習。在某些情況下,他們擁有足夠的能力進行獨立完成交易,解決客戶問題,局部替代人力的工作。 部分商業機器人可以做到這一點的一個重要原因是他們是「 bounded」 (有界的)。在由其部署的行業或業務里構成相對狹窄的閉包,無論是部署在無線運營商,公用事業,銀行,零售或電子商務業務,還是保險公司或抵押貸款經紀人,閉包的業務確保這些智能商業機器人可以支持獨立完成某些業務流程。 Chatbots不僅僅用於在線聊天。他們們可以部署在許多其他界面上:移動,社交媒體,消息應用,語音響應和簡訊。最重要的是為了改善整體客戶體驗,智能商業機器人可以預測客戶的意圖。Chatbot的核心價值是服務於真正的商業目的,而不是一個能和你閑聊的有趣的虛擬人。正因為如此,Chatbot應該提面向用戶供儘可能多的信息和更智能的交互,以便於提高用戶體驗。針對交互過程中產生的數據進行學習和成長,且這種學習最好是在產品投入市場之前。因為當系統已經有了可以用來避免「冷啟動」的數據,這會降低用戶體驗的負面影響,避免由於chatbot的無效回復導致前期用戶流失。沒有人喜歡Chatbot持續說「對不起,我不明白你的問題。你能改寫一下嗎?」如何處理「冷啟動」問題? 面向用戶的聊天機器人在設計階段就需要傾向於專註來自用戶的信息。深度挖掘用戶已有的關注和問題的類型,圍繞這些信息打造功能,而不是想像與你的客戶無關的問題和解決方案。從我們的經驗來看,這是最好的方式。 FAQ是另一個解決冷啟動問題的思路,可用於Chatbot配置回復。由於這些是從重複查詢(希望是真實的,而不是想像的)中提煉出來的,它們可以是聊天機器人從中繪製響應的基線。但是,您應該注意,並非所有常見問題都定期更新或與客戶相關,因此您必須確保審查這些問題,然後才會決定將其加入您的聊天機器人。 如何有效的訓練Chatbot? 雖然前期使用用戶關注的信息來訓練聊天機器人是理想的,但如果沒有垂直應用領域的專家對數據進行分析和提取大規模所需的重要信息的話,依然很有挑戰性的。後期可逐步建立一個龐大的聚合型知識庫,並開發成為獨立可調用的模塊,用於Chatbot開發過程。其中涉及到的核心技術包括知識文本挖掘、自然語言處理,聚類分類,主題建模等。 如果你所應用的垂直領域的數據樣本不是很大時,你當然可以用人工的「智能」方法,及人力手動通過對用戶數據分類。無論如何,請務必選擇以下參數的代表性樣本: -產品:代表您攜帶的所有產品類型 -時間框架:考慮事件或季節性波動 -帳戶類型:捕獲各種客戶帳戶 -優先順序:了解緊急和正常問題之間的差異 -解決時間:要解決如何輕鬆/快速取樣的問題(越容易或越快,你的聊天機器人就越可能自動處理它們) -標籤或類別:使用人類分類的數據進行培訓 -還有許多其他因素,您可以根據您的業務和產品結構對用戶代表性數據進行抽樣。 如果團隊中沒有機器學習和NLP專家,那麼處理數據的分類和分析等複雜問題只能用人力勞動處理,嚴格意義上來說這是相對「原始」的做法,人工的「智能」而非人工智慧。 假設團隊里有這些領域的專家,你可以考慮使用半監督訓練或者標記數據的方式進行對數據的分類,運行一些基於混合向量的LDA的主題建模,調整模型的參數將為是一個有趣的實驗。 在訓練階段結束時,您應該有一個相對穩定的ready-to-go的模型,可以對來自用戶的輸入查詢進行分類。為了最大限度地提高對此模型的高效性,可以將其打包到一個API中,當需要對來自客戶的新查詢進行分類時,讓您的Chatbot調用此API。 如何管理測試過程?用真實用戶測試訓練模型得到的結果是非常重要的。有時(實際上,通常情況下)你的模型將過度擬合你訓練它的數據,並且它們將變成在新數據面前沒有用。因此,除了在訓練期間評估模型時使用的拆分 測試/驗證數據集,您應該把Chatbot和用戶交互的數據也一併迭代入數據集。 當您測試一組用戶的體驗時,通常可以將其納入測試階段或者測試版本的Chatbot。因為在這個階段你可能不會有那麼多用戶,所以花時間查看每個響應,並找出是否有系統的樣本或示例在模型中被忽略或錯誤分類。 另外,利用Chatbot發請求給用戶以獲得反饋數據,例如「我回答你的問題嗎? [Yes / No]」,您可以彈出到每個響應的末尾,作為添加結構化數據以繼續訓練您已設置的監督分類模型的方法。
關於啟動和優化 在試用通過後,是時候啟動你的Chatbot,真正看到你的Chatbot的回應能力在實用中會發生什麼。如果一切順利,Chatbot啟動時能正確回答50%到80%的問題。在這個啟動階段,繼續觀察和注意用戶會問什麼樣的問題,並將其考慮到您的下一個版本中進行優化。 實際上,你肯定會有更多的調整,以使它的表現在你期望的水平。耐心:每2-4周更新你的模型的信息。你積累的數據越多越好。(除非數據質量低或處理不當)。
如何理解用戶的意圖? 首先,智能機器人實時分析諸如用戶的身份、信息反饋、日期、時間、位置和其他信息的數據。結合公司內部的CRM系統里儲存的客戶關係數據,可洞察更多的客戶需求。通過人工智慧和機器學習分析所有數據,Chatbot可以預測客戶的需求。 意圖的另一種應用是預測用戶的「下一個問題」。這意味著機器人不僅提供用戶當前互動的信息,且預期下一個最可能出現的交互需求。例如,如果客戶已經聯繫他們的無線公司詢問數據漫遊費率,並且數據顯示一半以上的客戶也詢問國際語音套餐,則Chatbot可以主動地提供該信息。 如果Chatbot遇到解決不了的問題,可以將交互發送給指定的人工客服,這是另一種商業機器人服務的方式。除此之外,這意味著Chatbot記住用戶在對話中的位置,信息列隊已經存在,使得當他們被轉移到人工時,不需要重複信息的交互 。先進的 AI 技術當然可以幫助Chatbot,特別是如果你想讓你的Chatbot能夠解釋句子或轉折的上下文。在上下文中的深度學習可能對於長的短期內存結構最有用,並且可以隨著時間的推移改善體驗。 但是,在您先測試其他 AI 模型之前,不要直接跳到此選項中; 重要的是要了解您的基準性能,並且找到工程師知道如何調整模型,以使它們在生產中發揮作用。許多技術(在撰寫本文時)要麼仍然在研究實驗室,要麼還沒有新的研究實驗室,並且還不夠穩健,不能用於大規模生產。此外,你需要一個更大的數據集建立一個有意義的學習模型。 總而言之,始終確保您使用真實用戶的數據來訓練您的Chatbot,以便它可以更好地服務用戶。—————————————————————
【註:原文來源於「頭牌AI」】
http://mp.weixin.qq.com/s/Sxo0UtjnkMT_-ChWb16asA
ay本質上是一個聊天機器人。只不過它發最初的消息時,輸入很可能是最近的熱點。下面我還是談聊天,不過技術是共通的。
聊天這個問題,背後的原理不可思議的簡單。本質上就是,擁有足夠的資源,創造一個非常大的表格,表格裡面是很多句子的對應關係,告訴機器,用戶說什麼,你回答什麼。
但是,你一定會覺得這種做法難以置信。因為對話時用戶說的句子是根本無法窮舉的。下面我會試圖解釋我們是怎麼彌合有限的資源和無窮可能性之間的鴻溝的。
1. 2/8法則是一個數據分析中的金準則。我們都覺得自己是一個有趣的有獨立思想的人。可是如果有機會看到聊天機器人的日誌,我們就會發現,我們和其他人的相似之處遠遠大於不同。我們的語言和思想和別人沒什麼兩樣。所以,聊天中,優先把資源投入頻率最高的問答行為,能夠極大的減少所需的資源。用這個方法大概能做到5分。
2. 我們可以允許模糊匹配。模糊匹配是指,用戶說的話雖然沒有精確匹配表格中的一句話,比如表格中有「你好」,但是用戶說了「你好啊」,我們還是把「你好」這句話的回復返回給用戶。很多時候,用戶會感覺回答雖然不完全滿意,但是也大致可理解。加上這個方法大概能做到10分。
3. 我們可以允許模式匹配。這個方法最著名的例子是eliza。我手頭正好有它的遠嗎。大概就是這樣的一些模式。用戶說「I need *",機器可以回答"why do you need *",其中*可以匹配任何字元串。這些模式也是不可思議的有效。你可以在這個網頁 http://manifestation.com/neurotoys/eliza.php3/ 上試試,看看多久你會覺得無聊。其實這也是2/8法則,少量的模式可以涵蓋大量的聊天行為。加上這個方法大概能做到15分。
上面的三種方法,都是比較陳舊的了。今天我們做這個問題的方法有兩個不同。
1. 互聯網上存在海量的用戶聊天數據。我們不用自己寫聊天表格了。這個方法其實是這個時代和過去實現「智能」的最大的不同。我們的數據量一下子從1大概到了1億這個級別。加上這個方法,能把聊天一口氣做到30分。
2. 聊天中的模式匹配或者模糊匹配,我們可以用機器學習演算法來歸納總結,而不是自己寫。結合互聯網上的海量數據,用基礎的tree ensemble大概能做到43分,用深度學習來仔細調整,能做到50分。
好了,50分,這就是今天的聊天系統的能力。我們還沒有找到完全解決這個問題的方法,但是不妨礙我們一點點的刷分。
你可以基於圖靈api開發一個聊天機器人,然後去添加對話內容,這樣他就可以按你說的回復了。這個小程序你可以自己上網學,也可以下下來別人的把他的api修改下,直接拿來用。
這樣,我們豈安科技的斜杠青年用1100字教你做一個聊天機器人出來吧。關鍵詞Zulip、Python。以下,GO~
-------
Zulip是什麼 Zulip是移動和桌面辦公聊天解決方案開發商
一個強大的群組聊天軟體
目前已被Dropbox收購併完全開源
(github:https://github.com/zulip/zulip)
就Zulip而言,該公司對消息的處理專註於會話,而不僅僅是基本的「聊天」。因此,消息流中包含主題和線程式回復,每個主題可以包含多個細分主題。
例如,在Zulip網站的一張截圖中,「工程」消息流中可以包含「文檔」、「新招聘」和「WebKit漏洞」等細分主題。
示例如下:
Zulip表示,這一功能將幫助用戶更好地找到對他們有意義的會話。
其他功能還包括:
- 強大而快速的搜索,以及能吸引開發者興趣的「極客」功能。如鍵盤快捷鍵、代碼高亮、應用程序介面(API),以及與Trac、Nagios、GitHub和Jenkins的整合等。
- 並且,Zulip還提供了標準的消息/聊天應用功能集合,其中包括拖動上傳文件、粘貼圖片、群聊、聲音通知、未收到消息的電子郵件通知,以及虛擬表情等。
- 最重要的一點,zulip還提供了聊天機器人介面。
一、我們用Zulip來做什麼
在日常工作中,對於一些非技術的小夥伴們,由於需要查詢某業務數據結果之類,只有通過攻城獅臨時生成一大串數據,或者攻城獅提供調用某個API介面URL鏈接,直接在網頁瀏覽器中查看數據結果。如此一來,攻城獅還要花時間教小白如何看數據。
而且,如果API介面URL中涉及用戶授權認證,就容易暴露內部授權碼,得不償失了。
所以我們希望可以通過聊天機器人的開發,把這些非技術人員需要查詢的需求集成進去,然後智能解析他們發送的消息,並以友好方式自動答覆數據結果。
舉個栗子。
如果我們需要使用豈安Red.Q(業務風險情報系統)服務查詢一些手機號碼或者IP地址是否有風險,並給機器人發送消息(我們約定多個數據以逗號隔離)
消息如下:
211.97.131.210,58.243.254.109,13136482589, 20160909
查詢結果:
13136482589:87.4,臨時號碼、收碼平台、異常狀態
211.97.131.210:50.6,組織出口、爬蟲
58.243.254.109:81.9,vps伺服器、組織出口、爬蟲
其他:
20160909:無效內容(不符合有效ip和手機號碼基本格式)
二、如何實現
- Zulip安裝步驟這裡略。
- 安裝好並登陸zulip系統,我們先在帳號設置里添加一個機器人redq-bot@bigsec.com,系統會生成對應的API Key。
- 打開zulip系統url(https://zulip.local/api),系統提供了相關API的使用說明,python說明如下:
Python API
#!/usr/bin/env python
import zulip
import sys
# Keyword arguments "email" and "api_key" are not required if you are using ~/.zuliprc
client = zulip.Client(email="*********************",
api_key="********************",
site=https://zulip.local/api )
# Send a stream message
client.send_message({
"type": "stream",
"to": "Denmark",
"subject": "Castle",
"content": "Something is rotten in the state of Denmark."
})
# Send a private message
client.send_message({
"type": "private",
"to": "hamlet@example.com",
"content": "I come not, friends, to steal away your hearts."
})
# Print each message the user receives
# This is a blocking call that will run forever
client.call_on_each_message(lambda msg: sys.stdout.write(str(msg) + "
"))
# Print every event relevant to the user
# This is a blocking call that will run forever
# This will never be reached unless you comment out the previous line
client.call_on_each_event(lambda msg: sys.stdout.write(str(msg) + "
"))
在豈安科技自己的業務風險情報系統Red.Q案例里:
- 通過消息事件回調函數client.call_on_each_message(redq)解析用戶發送給機器人的消息內容
- 返回每個匹配內容的Red.Q服務API結果:
msgsend
def msgsend(sender, msg):
client.send_message({
"type": "private",
"to": sender,
"content": msg
})
當腳本編寫完畢後,需要單獨去運行在某台伺服器上,該伺服器需要與zulip伺服器的api介面通信,一般為443或者80埠,交互流程如下:
此時,在zulip的Web界面找到此機器人並發送相關消息就可以愉快地進行聊天啦。
聊天機器人資源合集:項目,語聊,論文,教程。包括兩個中文聊天機器人,和一個中文聊天語聊。
N &> 10 個 聊天機器人項目,Star 一下。
https://github.com/fendouai/Awesome-Chatbot
從零開始做一個完整的智能聊天機器人的難度和工作量都挺大的,需要考慮分詞,語義識別,知識庫搭建等工作,但現在有很多現成的聊天機器人api,在上面做一定的擴展就可以變成一個自己專屬的機器人。
我在我自己的微信公眾號上加了個小i機器人,可以實現日常對話,天氣查詢,講笑話等功能,小i機器人擴展性也比較強,可以自己添加規則,同時還提供api可供多種方式接入。
比較高級的玩法是使用新浪雲SAE等雲服務搭建一個服務,利用SAE自帶的分詞功能寫自定義規則,使用mysql作為資料庫以方便擴展,結合小i機器人api可以讓公眾號實現很多有趣的功能,我也正在學習研究中。
我的公眾號 treeholesay,歡迎大家來和我的機器人聊天。# 如何製作一個聊天機器人?
如果你是一個
## 非程序員
最好是把自己變成一個程序員,因為要做一個聊天機器人,得先能夠控制機器。
實在做不到,看看 圖靈機器人-中文語境下智能度最高的機器人大腦
## 程序員
如果已經有語料:api.ai,
沒有語料?想辦法弄到語料。
前提還是語料,使用deeplearning。
機器人把用戶甲的話發給用戶乙,再把乙的回複發給甲。
並且以機器人自己的名義,這一點正是體現「智能」的核心技術。
老闆給我分配的工作就是要做一個關於我們組的Chabot出來,所以最近也在找相關的教程,好東西大家一起分享咯~
強勢推薦!!!!!
telescopeuser/workshop_blog
課程內容:
沒有吃虧,沒有上當,超級棒的教程~!!!
bot frame work luis
推薦閱讀: