NLP系列學習:意圖識別
來自專欄雲時之間14 人贊了文章
最近剛剛把垃圾文本分類做完,接著又去研究意圖識別,可以看做是分類完之後的後續處理,通過這篇文章記錄下自己的學習經歷。
1:意圖識別要做啥?
最近在寫文檔的時候,寫不出來的時候就回去看看需求,一定反覆強調需求是什麼,而技術也類似,我們一定要想明白技術要替我們解決什麼。拿文本進行舉例,我們看到有用戶給我們一句話:「我想聽德雲社的相聲」,那我們其實可以姑且將其意圖歸類於影音需求,別看將其歸歸類是個很簡單活,但是這會對很多NLP應用帶來很多的提升,比如在我們熟悉的搜索,我們搜索的時候如果涉及到一條信息對應多個分類的時候,這樣搜索結果會比較差,但是如果我們通過意圖識別發現用戶是個遊戲迷,我們就可以在用戶搜索時將遊戲的搜索結果優先返還給用戶,這本身也是很有意義的一件事。
2:意圖識別的方法
因為意圖識別本身也是一個分類問題,其實方法和分類模型的方法大同小異。
常用的有:
1:基於詞典模板的規則分類
2:基於過往日誌匹配(適用於搜索引擎)
3:基於分類模型進行意圖識別
這三種方式基本上是目前比較主流的方法,現在進行意圖識別的難點主要是兩點,一點是數據來源的匱乏,因為方法已經比較固定,基本都是有監督學習,需要很多的標記數據,現在我們常用的數據要麼就是找專業標記團隊去買(我們是自己標記的,很噁心。。),要麼就是自己去爬,這方面還是很麻煩的。第二點是儘管是分類工作,但是意圖識別分類種類很多,並且要求的準確性,拓展性都不是之前的分類可比的,這一點也是很困難的。
這次的思路是使用CNN+softmax進行分類,不同於傳統的如SVM,決策樹等傳統的分類方法,
CNN對於長文本的分類效果還是不錯的,但是在短文本上相較RNN還是有一些差距。
基本的思路與下圖所述的論文相似:
既然CNN比不上RNN,為什麼還是選取了CNN,我的想法是文本分詞後一般會有粒度和語義的矛盾,粒度太大,分詞效果不好,粒度太小,語義丟失,而CNN核心過程是卷積,我們可以通過CNN的卷積將分完詞之後的詞的語義結合在一起,從而獲得更加準確的詞向量。
現在說說這篇論文:
這篇論文的網路結構如下:
基本的結構為:輸入層->第一層卷積層->池化層->全連接層+softmax層
現在也在進一步的嘗試中,目前還有幾個小trick:
1:是否可以使用字向量代替詞向量?
2:輸入的詞向量是否可以多換幾種表述方式?
這幾個小trick等研究之後再來更新一下,我也是在學習中,大家如果有好的建議也請多多指教。
最後參考文獻:
1:http://www.aclweb.org/anthology/D14-1181
2:https://arxiv.org/abs/1510.03820
第二篇文章是對第一篇文章的進一步研究以及調參建議,都挺有意思。
推薦閱讀:
※論文筆記:XGBoost: A Scalable Tree Boosting System
※優秀人才如何寫出優秀簡歷TMLJ#1
※LLVM每日談之二十九 面向機器學習的編譯器——Glow
※人工智慧技術終結「耳聾工廠」:85分貝雜訊下仍可識別語音
※Deep Learning Beyond CS
TAG:NLP書籍 | 深度學習DeepLearning | 機器學習 |