背景
![自然語言處理-第十二期-Chatbot聊天機器人開篇](http://p2.ttnews.xyz/loading.gif)
這週末本來打算繼續研究NLP的,但是碰到了一個 Chatbot(聊天機器人)的模型。真的很有意思。想想自己能做一個類似微軟小冰一樣的妹子就很興奮。
本來想展示下自己與機器模型的聊天記錄。但是這個週末模型折騰了很久,而且我的電腦也實在跑不動那麼大的數據庫。所以後續給大家帶來。本篇旨在闡述自己的思考及該模型的一些概況。
Chatbot
相信大家對微軟小冰都有印象,能夠聊天能夠扯淡。雖然其黑化成種族主義,但是體驗過的同學都會有感覺,她與以前的機器人不同。或者我們能給到小冰“能扯淡”、“個性化”等等標籤。但是它與傳統的chatbot不同在哪裡呢?
另外有必要說明的是,目前有兩種chatbot:一種帶任務的如Siri,一種不帶任務瞎扯淡就行的 如小冰。 我們所有提到的chatbot都是小冰類型的。
傳統的Chatbot
說是傳統機器人,其實現在大部分的應用上面都是這種。這種機器人其實就是一個簡單的Mapping過程,在設計時窮舉或者建立一個問題庫。 大家接觸最多的應該是 淘寶的-旺旺機器人。這種其實就是識別關鍵字自動回覆或者就是簡單回覆。
感覺傳統的chatbot比較死板就對了
神經網絡Chatbot
從下圖可以看出來小冰與傳統機器人至少在以下幾個方面不同:
- 其可以應對開放性的問題,並且能夠給出答覆;
- 其答覆的字數不限定;
- 感覺該chatbot是有一定個性,即語言傾向的;
- 從某種程度上,其回覆的是人類的語言;
![自然語言處理-第十二期-Chatbot聊天機器人開篇](http://p2.ttnews.xyz/loading.gif)
模型
下圖,可以很形象或者很簡單的說明,chatbot的機制。下圖可以理解為一個聊天的過程,也可以看作一個訓練的過程。
那麼實現以上過程的模型有哪些不同呢:
首先,與以前遇到的神經網絡模型不同,前期網絡模型多用於概率判斷或者圖像識別。該模型輸入值為 一個文本,輸出值為一個文本;
其次,如果大家已經熟悉了Word Embedding 的過程(請參考NLP系列第四期),那麼可以知道每個詞就是一個向量。那麼換個角度,上面的問題是,輸入一系列帶順序的向量,輸出一系列帶順序的向量;
然後,輸出的文本,字數不限定;
Chatbot實現以上點,所用的模型是Seq2Seq模型。從下圖至少可以看出,該模型採用了兩個 循環神經網絡來處理文本輸入和輸出。對於Seq2Seq模型,就不在開篇中過多介紹,會在後續帶來
下期預告
本期插了個隊,Chatbot模型可以帶來開放性的語言處理和問答處理。是一個很有意思的模型。希望下一期能整好模型,給大家帶來我與chatbot的對話。
閱讀更多 繁林林與機器學習 的文章