一文看懂NLP裡的分詞(中英文區別+3 大難點+3 種典型方法)

dicksonjyl560101發表於2019-08-09
一文看懂NLP裡的分詞(中英文區別+3 大難點+3 種典型方法)

分詞是 NLP 的基礎任務,將句子,段落分解為字詞單位,方便後續的處理的分析。

本文將介紹分詞的原因,中英文分詞的3個區別,中文分詞的3大難點,分詞的3種典型方法。最後將介紹中文分詞和英文分詞常用的工具。

什麼是分詞?

分詞是 自然語言理解 – NLP 的重要步驟。

分詞就是將句子、段落、文章這種長文字,分解為以字詞為單位的資料結構,方便後續的處理分析工作。

一文看懂NLP裡的分詞(中英文區別+3 大難點+3 種典型方法)

為什麼要分詞?

1.將複雜問題轉化為數學問題

在 機器學習的文章 中講過,機器學習之所以看上去可以解決很多複雜的問題,是因為它把這些問題都轉化為了數學問題。

而 NLP 也是相同的思路,文字都是一些「非結構化資料」,我們需要先將這些資料轉化為「結構化資料」,結構化資料就可以轉化為數學問題了,而分詞就是轉化的第一步。

一文看懂NLP裡的分詞(中英文區別+3 大難點+3 種典型方法)

2.詞是一個比較合適的粒度

詞是表達完整含義的最小單位。

字的粒度太小,無法表達完整含義,比如”鼠“可以是”老鼠“,也可以是”滑鼠“。

而句子的粒度太大,承載的資訊量多,很難複用。比如”傳統方法要分詞,一個重要原因是傳統方法對遠距離依賴的建模能力較弱。”

一文看懂NLP裡的分詞(中英文區別+3 大難點+3 種典型方法)

3. 深度學習時代,部分任務中也可以「分字」

深度學習時代,隨著資料量和算力的爆炸式增長,很多傳統的方法被顛覆。

分詞一直是 NLP 的基礎,但是現在也不一定了,感興趣的可以看看這篇論文:《Is Word Segmentation Necessary for Deep Learning of Chinese Representations?》。

一文看懂NLP裡的分詞(中英文區別+3 大難點+3 種典型方法)

不過在一些特定任務中,分詞還是必要的。如:關鍵詞提取、命名實體識別等。

中英文分詞的3個典型區別

一文看懂NLP裡的分詞(中英文區別+3 大難點+3 種典型方法)

區別1:分詞方式不同,中文更難

英文有天然的空格作為分隔符,但是中文沒有。所以如何切分是一個難點,再加上中文裡一詞多意的情況非常多,導致很容易出現歧義。下文中難點部分會詳細說明。

區別2:英文單詞有多種形態

英文單詞存在豐富的變形變換。為了應對這些複雜的變換,英文NLP相比中文存在一些獨特的處理步驟,我們稱為詞形還原(Lemmatization)和詞幹提取(Stemming)。中文則不需要

詞性還原:does,done,doing,did 需要透過詞性還原恢復成 do。

詞幹提取:cities,children,teeth 這些詞,需要轉換為 city,child,tooth”這些基本形態

區別3:中文分詞需要考慮粒度問題

例如「中國科學技術大學」就有很多種分法:

  • 中國科學技術大學
  • 中國 \ 科學技術 \ 大學
  • 中國 \ 科學 \ 技術 \ 大學

粒度越大,表達的意思就越準確,但是也會導致召回比較少。所以中文需要不同的場景和要求選擇不同的粒度。這個在英文中是沒有的。

中文分詞的3大難點

一文看懂NLP裡的分詞(中英文區別+3 大難點+3 種典型方法)

難點 1:沒有統一的標準

目前中文分詞沒有統一的標準,也沒有公認的規範。不同的公司和組織各有各的方法和規則。

難點 2:歧義詞如何切分

例如「兵乓球拍賣完了」就有2種分詞方式表達了2種不同的含義:

  • 乒乓球 \ 拍賣 \ 完了
  • 乒乓 \ 球拍 \ 賣 \ 完了

難點 3:新詞的識別

資訊爆炸的時代,三天兩頭就會冒出來一堆新詞,如何快速的識別出這些新詞是一大難點。比如當年「藍瘦香菇」大火,就需要快速識別。

3種典型的分詞方法

一文看懂NLP裡的分詞(中英文區別+3 大難點+3 種典型方法)

分詞的方法大致分為 3 類:

  1. 基於詞典匹配
  2. 基於統計
  3. 基於深度學習

給予詞典匹配的分詞方式

優點:速度快、成本低

缺點:適應性不強,不同領域效果差異大

基本思想是基於詞典匹配,將待分詞的中文文字根據一定規則切分和調整,然後跟詞典中的詞語進行匹配,匹配成功則按照詞典的詞分詞,匹配失敗透過調整或者重新選擇,如此反覆迴圈即可。代表方法有基於正向最大匹配和基於逆向最大匹配及雙向匹配法。

基於統計的分詞方法

優點:適應性較強

缺點:成本較高,速度較慢

這類目前常用的是演算法是 HMM、CRF、SVM、深度學習 等演算法,比如stanford、Hanlp分詞工具是基於CRF演算法。以CRF為例,基本思路是對漢字進行標註訓練,不僅考慮了詞語出現的頻率,還考慮上下文,具備較好的學習能力,因此其對歧義詞和未登入詞的識別都具有良好的效果。

基於深度學習

優點:準確率高、適應性強

缺點:成本高,速度慢

例如有人員嘗試使用雙向LSTM+CRF實現分詞器,其本質上是序列標註,所以有通用性,命名實體識別等都可以使用該模型,據報導其分詞器字元準確率可高達97.5%。

常見的分詞器都是使用機器學習演算法和詞典相結合,一方面能夠提高分詞準確率,另一方面能夠改善領域適應性。

中文分詞工具

下面排名根據 GitHub 上的 star 數排名:

  1. Hanlp
  2. Stanford 分詞
  3. ansj 分詞器
  4. 哈工大 LTP
  5. KCWS分詞器
  6. jieba
  7. IK
  8. 清華大學THULAC
  9. ICTCLAS

英文分詞工具

  1. Keras
  2. Spacy
  3. Gensim
  4. NLTK

總結

分詞就是將句子、段落、文章這種長文字,分解為以字詞為單位的資料結構,方便後續的處理分析工作。

分詞的原因:

  1. 將複雜問題轉化為數學問題
  2. 詞是一個比較合適的粒度
  3. 深度學習時代,部分任務中也可以「分字」

中英文分詞的3個典型區別:

  1. 分詞方式不同,中文更難
  2. 英文單詞有多種形態,需要詞性還原和詞幹提取
  3. 中文分詞需要考慮粒度問題

中文分詞的3大難點

  1. 沒有統一的標準
  2. 歧義詞如何切分
  3. 新詞的識別

3個典型的分詞方式:

  1. 基於詞典匹配
  2. 基於統計
  3. 基於深度學習

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29829936/viewspace-2653154/,如需轉載,請註明出處,否則將追究法律責任。

相關文章