NLP系列學習:CRF條件隨機場(1)
大家好,今天讓我們來看看條件隨機場,條件隨機場是一項大內容,在中文分詞里廣泛應用,因為我們在之前的文章里將概率圖模型和基本的形式語言知識有所了解,當我們現在再去學習條件隨機場會容易比較多(在動筆寫這篇文章前我也翻閱了很多的博客,發現很多博主上來就講一大堆核心公式,而之前的鋪墊知識都很少提,我覺得這不太好,會讓很多人一開始就懵).
而我希望在我的這幾篇文章儘可能的減少單純理論知識的複述,而是通過一些實例,比如分詞,一些實操,CRF+來去親手實現演算法.這樣大家理解起來可能會更好.
條件隨機場的文章大概有三篇:
第一篇:聊聊中文分詞
第二篇:說說條件隨機場的理論以及在中文分詞的應用
第三篇:寫寫條件隨機場的代碼實現
而今天的這一篇將一起聊聊中文分詞:
其實分詞技術在國外已經是比較廣泛應用了,但是在國內,因為中文的特殊性(英文由單個詞語構成,而中文由單個字構成),再加上之前國內這一片研究相對落後(多為外國人),直至現在,建設一個好用的中文分詞詞庫依舊是大家的追求.而中文分詞也是自然語言處理領域的一個難點和熱點,大家想想現在越來越多的人在互聯網上發布信息,也在網上獲取信息,海量的文本數據需要文本信息挖掘,而信息抽取,智能問答,文本傾向性分析都是由分詞所作為基礎而伸展開的.因此分詞的效率和正確率都對以上工作有著很大的影響.
因此分詞要處理的關鍵問題有兩個:切分歧義消解和未登錄詞識別
而目前主要的分詞方法有三種:
一種是基於詞典的分詞方法,這種方法又叫做機械分詞方法,這種方法時間很長,他的工作思路是按照一定的策略將待分配的詞和一個充分大的詞典裡邊的詞條進行匹配,就跟我們背詩句一樣,自己腦子裡有的會背,但是出題官出了一個沒背過的,就懵了.因此這種基於詞典的分詞方法必須要需要一個高質量的詞典來支撐,對於未登錄的詞語識別和歧義識別問題簡直就是力不從心.但是速度快,效率高,易修改,靈活性強。
比如:」提高人民生活水平」
使用詞典的方法會輸出所有的可能性:
提 —提高
高 —高人
人 —人民
民 —民生
生—生活
活—活水
水 —水平
平
形成圖模型後會是:
第二種是基於統計的分詞方法,在使用了基於統計的方法之後,中文分詞的效果得到了顯著性的進步,比上一種強大了很多,並且這時候已經引入了機器學習的方法,使用已經分好的詞作為一個訓練語料,然後選擇多種的模型去學習和解碼,最後訓練模型.而這個時候,我們的文章的主角-條件隨機場已經開始派上了用場,一種思路是建立條件隨機場的標機模型,然後引入文字的概率特徵和領域知識去分詞,這樣的分詞準確率提高了,但是文字的概率特徵太多並且多為自定義,因此這樣建立的模型不僅複雜而且龐大.並且是使用統計的方法,極大程度上依賴於你選擇語料庫的好壞,就跟我們學習機器學習模型一樣,如果你的訓練集的代表性不夠明顯,這樣你訓練出來的模型是比較容易過擬合的.如果你的訓練語料要求高了,一方面你的計算量大,因此導致效率低,另外一方面高質量的語料必然離不開人工的篩選,對人力也是一個考驗.
第三種是基於統計和詞典相結合的方法,這也是我們現在比較常用的一種方法,比如我們現在比較流行的結巴分詞,他主要就是根據HMM隱馬爾可夫模型,再配合自定義詞典去使用,並且你的詞典可以作為一個內部的訓練語料,但是這樣的一個缺陷就是對於不同的領域的分詞適應性並不好,需要重新訓練模型,這也是我們看結巴分詞在一些專門領域的效果並不好.
推薦閱讀:
※Learning to Skim Text 閱讀筆記
※DeepPath 閱讀筆記
※學習筆記CB002:詞幹提取、詞性標註、中文切詞、文檔分類
※序列標註任務的常見套路
※中文編碼問題
TAG:機器學習 | 深度學習DeepLearning | 自然語言處理 |