本文首發自 easyAI - 產品經理的AI知識庫git
原文地址:《 一文看懂NLP裏的分詞-Tokenization(中英文區別+3大難點+3種典型方法)》github
分詞是 NLP 的基礎任務,將句子,段落分解爲字詞單位,方便後續的處理的分析。算法
本文將介紹分詞的緣由,中英文分詞的3個區別,中文分詞的3大難點,分詞的3種典型方法。最後將介紹中文分詞和英文分詞經常使用的工具。數據結構
分詞是 天然語言理解 - NLP 的重要步驟。機器學習
分詞就是將句子、段落、文章這種長文本,分解爲以字詞爲單位的數據結構,方便後續的處理分析工做。工具
在 機器學習的文章 中講過,機器學習之因此看上去能夠解決不少複雜的問題,是由於它把這些問題都轉化爲了數學問題。學習
而 NLP 也是相同的思路,文本都是一些「非結構化數據」,咱們須要先將這些數據轉化爲「結構化數據」,結構化數據就能夠轉化爲數學問題了,而分詞就是轉化的第一步。spa
詞是表達完整含義的最小單位。cdn
字的粒度過小,沒法表達完整含義,好比」鼠「能夠是」老鼠「,也能夠是」鼠標「。blog
而句子的粒度太大,承載的信息量多,很難複用。好比」傳統方法要分詞,一個重要緣由是傳統方法對遠距離依賴的建模能力較弱。」
3. 深度學習時代,部分任務中也能夠「分字」
深度學習時代,隨着數據量和算力的爆炸式增加,不少傳統的方法被顛覆。
分詞一直是 NLP 的基礎,可是如今也不必定了,感興趣的能夠看看這篇論文:《Is Word Segmentation Necessary for Deep Learning of Chinese Representations?》。
不過在一些特定任務中,分詞仍是必要的。如:關鍵詞提取、命名實體識別等。
區別1:分詞方式不一樣,中文更難
英文有自然的空格做爲分隔符,可是中文沒有。因此如何切分是一個難點,再加上中文裏一詞多意的狀況很是多,致使很容易出現歧義。下文中難點部分會詳細說明。
區別2:英文單詞有多種形態
英文單詞存在豐富的變形變換。爲了應對這些複雜的變換,英文NLP相比中文存在一些獨特的處理步驟,咱們稱爲詞形還原(Lemmatization)和詞幹提取(Stemming)。中文則不須要
詞性還原:does,done,doing,did 須要經過詞性還原恢復成 do。
詞幹提取:cities,children,teeth 這些詞,須要轉換爲 city,child,tooth」這些基本形態
區別3:中文分詞須要考慮粒度問題
例如「中國科學技術大學」就有不少種分法:
粒度越大,表達的意思就越準確,可是也會致使召回比較少。因此中文須要不一樣的場景和要求選擇不一樣的粒度。這個在英文中是沒有的。
難點 1:沒有統一的標準
目前中文分詞沒有統一的標準,也沒有公認的規範。不一樣的公司和組織各有各的方法和規則。
難點 2:歧義詞如何切分
例如「兵乓球拍賣完了」就有2種分詞方式表達了2種不一樣的含義:
難點 3:新詞的識別
信息爆炸的時代,三天兩頭就會冒出來一堆新詞,如何快速的識別出這些新詞是一大難點。好比當年「藍瘦香菇」大火,就須要快速識別。
分詞的方法大體分爲 3 類:
給予詞典匹配的分詞方式
優勢:速度快、成本低
缺點:適應性不強,不一樣領域效果差別大
基本思想是基於詞典匹配,將待分詞的中文文本根據必定規則切分和調整,而後跟詞典中的詞語進行匹配,匹配成功則按照詞典的詞分詞,匹配失敗經過調整或者從新選擇,如此反覆循環便可。表明方法有基於正向最大匹配和基於逆向最大匹配及雙向匹配法。
基於統計的分詞方法
優勢:適應性較強
缺點:成本較高,速度較慢
這類目前經常使用的是算法是HMM、CRF、SVM、深度學習等算法,好比stanford、Hanlp分詞工具是基於CRF算法。以CRF爲例,基本思路是對漢字進行標註訓練,不只考慮了詞語出現的頻率,還考慮上下文,具有較好的學習能力,所以其對歧義詞和未登陸詞的識別都具備良好的效果。
基於深度學習
優勢:準確率高、適應性強
缺點:成本高,速度慢
例若有人員嘗試使用雙向LSTM+CRF實現分詞器,其本質上是序列標註,因此有通用性,命名實體識別等均可以使用該模型,據報道其分詞器字符準確率可高達97.5%。
常見的分詞器都是使用機器學習算法和詞典相結合,一方面可以提升分詞準確率,另外一方面可以改善領域適應性。
下面排名根據 GitHub 上的 star 數排名:
分詞就是將句子、段落、文章這種長文本,分解爲以字詞爲單位的數據結構,方便後續的處理分析工做。
分詞的緣由:
中英文分詞的3個典型區別:
中文分詞的3大難點
3個典型的分詞方式: