一個NLP Freshman的筆記,大佬們請跳過...
中文英文一個重要的區別就是,英文是天然分詞的(使用空格或者標點符號),而中文是天然「分字」的,所以中文NLP任務中,分詞是一個很基礎的任務,大部分任務都是其下游任務。
本篇文章簡單介紹中文分詞,本人也只是看了不到一天吧(時間緊任務重),如有紕漏/補充可以發郵件討論,郵箱:[email protected]
順便給香儂打個廣告,持續招演算法(NLP,CV)/大數據/後台/前端,全職 or 實習, 簡歷發郵箱。具體大家google一下 「香儂科技」,這裡就不做PR了。
1. jieba 分詞方法
jieba分詞是一個很好用的分詞工具包,github地址:https://github.com/fxsjy/jieba
jieba.cut()的參數HMM控制是否使用HMM分詞。
DAG分詞的思想呢,就是首先你得有一個詞典,這個詞典記錄每個詞的詞頻,當然這個詞典是從某個語料庫中統計的到的(請不要問我沒有分詞系統怎麼統計的詞典...)。然後對於每個你要進行分詞的句子,例如「我去北京大學玩」,你去查看字典,你會得到所有可能的分詞結果,例如「我/去/北京/大學/玩」,「我/去/北京大學/玩」等等。然後呢,你只要在這些所有的分詞可能中找一個概率最大的就可以了,怎麼找,DP,嗯。
但是有一個問題,比如你要進行分詞的句子是「窗前明月光」,你的詞典中沒有「窗前」,那「窗前」這兩個字肯定分開,即「窗前」,但是某些情況下你想要的結果是「窗前/明月/光」,這個時候DAG就沒辦法了(所以DAG缺點是完全沒辦法應付未登錄詞),jieba使用HMM處理這種問題。
DAG分詞部分請看:http://www.cnblogs.com/zhbzz2007/p/6084196.html
HMM分詞部分請看:https://www.cnblogs.com/zhbzz2007/p/6092313.html
寫的太好了,我都不想再寫了,嗯...
2. BiLstm + CRF
這是深度學習的方法,據說效果很好。
首先這個模型不是專門處理分詞的,是處理標註問題的,分詞可以作為一個標註任務,所以可以使用它解決。分詞標註有幾種,簡單介紹一種BMES吧, B是開始begin位置, E是end, 是結束位置, M是middle, 是中間位置, S是single, 單獨成詞的位置。那麼「我/周末/去/北京大學/玩」,標註序列就是「SBESBMMES」。