0
雷鋒網按:本文作者 grapeot,原載于知乎,雷鋒網獲授權轉載。
聊天機器人部署了一周了。花了幾個小時的時間做了一些改動,有意思的部分主要有:
和ElasticSearch和Kibana連了起來,現在有了實時監控和可視化了。能看到每小時平均有多少次自動回復,多少次看群里話嘮,多少次看標簽云。令我意外的是已經過去一周了,可是大家的熱情仍然沒有消退。尤其是最簡單的自動回復功能,你提到“鴨哥”機器人就會自動回復“嘎?”。這么簡單的功能我以為用戶會玩玩就膩了。但數據顯示,直到今天還有每小時30多次的峰值調戲量。甚至有個群一晚上刷了幾百個鴨哥。。真是不能隨便猜用戶喜歡什么東西啊。。



第二個改動就是把標簽云的算法從TF換成了TF-IDF。TF (Term-Frequency)就是最簡單的數詞頻,這是最簡單可靠的算標簽云的方法,但有一個缺陷,如果沒有對一些無意義的虛詞做特殊處理的話,會很容易出現一些巨大但沒啥意義的詞。比如這個例子,“這個”,“就是”,“可以”等等。占據了大量的空間,但沒啥信息量。

而 IDF(Inverse-Document Frequency)則可以解決這個問題。它基本上代表了每個詞的信息量。IDF的基本思想是,如果一個詞在好多群里面都有出現(比如“的”),那么就對這個詞施加懲罰,讓它的權重變小。如果這個詞只在幾個群里面出現(比如“社會主義”),那就讓它變大。這樣就能保證,面積最大的幾個詞不僅是大家經常說的,而且是最有信息量的。經過算法的這個更改以后,我們對同一個群計算標簽云,結果就變成了這樣:

這個群最有特色的幾個詞一下就出來了。
此外,我還試著把標點符號也加入到了計算里面,結果很有意思。大多數的群的標簽云里面都是沒什么標點符號的。原因很簡單。第一,聊天的時候以短句為主,后面本來就很少加標點,TF不高。第二所有群基本上用標點的頻率都差不多,所以標點的IDF也差不多。因此不會有標點特別大的情況出現。但我看到了兩個群有很大的標點出現。

上面這個圖是科大的AI群。因為里面經常進行一些大段的深入的討論,所以逗號,句號和頓號都非常明顯。而下面這個群,則是因為在聊買房,貸款,所以出現了百分號%。又因為這個符號在其他群里都沒有出現,所以IDF巨大。一下就搶占了很大的空間。這也是為什么里面出現了房子,地主婆等關鍵字的原因。。

所以在某種程度上,這個機器人已經可以理解大家說話的內容了。比如可以區分內容中獨特的部分。這對于分類,聚類等等進一步的應用都是非常有幫助的。如果你有什么有意思的應用,也可以在評論中提出來,我們來幫你實現。
編者注:關于本文的后續內容,我們后面幾天將在雷鋒網陸續刊登,敬請關注。
雷鋒網相關閱讀:
雷峰網版權文章,未經授權禁止轉載。詳情見轉載須知。