一文看懂NLP裡的分詞(中英文區別+3 大難點+3 種典型方法)
分詞是 NLP 的基礎任務,將句子,段落分解為字詞單位,方便後續的處理的分析。
本文將介紹分詞的原因,中英文分詞的3個區別,中文分詞的3大難點,分詞的3種典型方法。最後將介紹中文分詞和英文分詞常用的工具。
什麼是分詞?
分詞是 自然語言理解 – NLP 的重要步驟。
分詞就是將句子、段落、文章這種長文字,分解為以字詞為單位的資料結構,方便後續的處理分析工作。
為什麼要分詞?
1.將複雜問題轉化為數學問題
在 機器學習的文章 中講過,機器學習之所以看上去可以解決很多複雜的問題,是因為它把這些問題都轉化為了數學問題。
而 NLP 也是相同的思路,文字都是一些「非結構化資料」,我們需要先將這些資料轉化為「結構化資料」,結構化資料就可以轉化為數學問題了,而分詞就是轉化的第一步。
2.詞是一個比較合適的粒度
詞是表達完整含義的最小單位。
字的粒度太小,無法表達完整含義,比如”鼠“可以是”老鼠“,也可以是”滑鼠“。
而句子的粒度太大,承載的資訊量多,很難複用。比如”傳統方法要分詞,一個重要原因是傳統方法對遠距離依賴的建模能力較弱。”
3. 深度學習時代,部分任務中也可以「分字」
深度學習時代,隨著資料量和算力的爆炸式增長,很多傳統的方法被顛覆。
分詞一直是 NLP 的基礎,但是現在也不一定了,感興趣的可以看看這篇論文:《Is Word Segmentation Necessary for Deep Learning of Chinese Representations?》。
不過在一些特定任務中,分詞還是必要的。如:關鍵詞提取、命名實體識別等。
中英文分詞的3個典型區別
區別1:分詞方式不同,中文更難
英文有天然的空格作為分隔符,但是中文沒有。所以如何切分是一個難點,再加上中文裡一詞多意的情況非常多,導致很容易出現歧義。下文中難點部分會詳細說明。
區別2:英文單詞有多種形態
英文單詞存在豐富的變形變換。為了應對這些複雜的變換,英文NLP相比中文存在一些獨特的處理步驟,我們稱為詞形還原(Lemmatization)和詞幹提取(Stemming)。中文則不需要
詞性還原:does,done,doing,did 需要透過詞性還原恢復成 do。
詞幹提取:cities,children,teeth 這些詞,需要轉換為 city,child,tooth”這些基本形態
區別3:中文分詞需要考慮粒度問題
例如「中國科學技術大學」就有很多種分法:
- 中國科學技術大學
- 中國 \ 科學技術 \ 大學
- 中國 \ 科學 \ 技術 \ 大學
粒度越大,表達的意思就越準確,但是也會導致召回比較少。所以中文需要不同的場景和要求選擇不同的粒度。這個在英文中是沒有的。
中文分詞的3大難點
難點 1:沒有統一的標準
目前中文分詞沒有統一的標準,也沒有公認的規範。不同的公司和組織各有各的方法和規則。
難點 2:歧義詞如何切分
例如「兵乓球拍賣完了」就有2種分詞方式表達了2種不同的含義:
- 乒乓球 \ 拍賣 \ 完了
- 乒乓 \ 球拍 \ 賣 \ 完了
難點 3:新詞的識別
資訊爆炸的時代,三天兩頭就會冒出來一堆新詞,如何快速的識別出這些新詞是一大難點。比如當年「藍瘦香菇」大火,就需要快速識別。
3種典型的分詞方法
分詞的方法大致分為 3 類:
- 基於詞典匹配
- 基於統計
- 基於深度學習
給予詞典匹配的分詞方式
優點:速度快、成本低
缺點:適應性不強,不同領域效果差異大
基本思想是基於詞典匹配,將待分詞的中文文字根據一定規則切分和調整,然後跟詞典中的詞語進行匹配,匹配成功則按照詞典的詞分詞,匹配失敗透過調整或者重新選擇,如此反覆迴圈即可。代表方法有基於正向最大匹配和基於逆向最大匹配及雙向匹配法。
基於統計的分詞方法
優點:適應性較強
缺點:成本較高,速度較慢
這類目前常用的是演算法是 HMM、CRF、SVM、深度學習 等演算法,比如stanford、Hanlp分詞工具是基於CRF演算法。以CRF為例,基本思路是對漢字進行標註訓練,不僅考慮了詞語出現的頻率,還考慮上下文,具備較好的學習能力,因此其對歧義詞和未登入詞的識別都具有良好的效果。
基於深度學習
優點:準確率高、適應性強
缺點:成本高,速度慢
例如有人員嘗試使用雙向LSTM+CRF實現分詞器,其本質上是序列標註,所以有通用性,命名實體識別等都可以使用該模型,據報導其分詞器字元準確率可高達97.5%。
常見的分詞器都是使用機器學習演算法和詞典相結合,一方面能夠提高分詞準確率,另一方面能夠改善領域適應性。
中文分詞工具
下面排名根據 GitHub 上的 star 數排名:
- Hanlp
- Stanford 分詞
- ansj 分詞器
- 哈工大 LTP
- KCWS分詞器
- jieba
- IK
- 清華大學THULAC
- ICTCLAS
英文分詞工具
- Keras
- Spacy
- Gensim
- NLTK
總結
分詞就是將句子、段落、文章這種長文字,分解為以字詞為單位的資料結構,方便後續的處理分析工作。
分詞的原因:
- 將複雜問題轉化為數學問題
- 詞是一個比較合適的粒度
- 深度學習時代,部分任務中也可以「分字」
中英文分詞的3個典型區別:
- 分詞方式不同,中文更難
- 英文單詞有多種形態,需要詞性還原和詞幹提取
- 中文分詞需要考慮粒度問題
中文分詞的3大難點
- 沒有統一的標準
- 歧義詞如何切分
- 新詞的識別
3個典型的分詞方式:
- 基於詞典匹配
- 基於統計
- 基於深度學習
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29829936/viewspace-2653154/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 「AI 科普」一文看懂決策樹(3個步驟+3種典型演算法+10個優缺點)AI演算法
- NLP第3章 中文分詞技術中文分詞
- 一文看懂RPA的3種部署模式模式
- 一文看懂自然語言處理-NLP(4個典型應用+5個難點+6個實現步驟)自然語言處理
- 一文看懂詞性標註(基本概念+4種方法+7種工具)詞性標註
- 中文NLP筆記:3. 關鍵詞提取的幾個方法筆記
- 一文看懂YOLO v3YOLO
- 分詞,難在哪裡?科普+解決方案!分詞
- 一文看懂自然語言生成 - NLG(6個實現步驟+3個典型應用)
- 一文看懂RPA與Excel宏的區別Excel
- 一文看懂npm、yarn、pnpm之間的區別NPMYarn
- JS區分中英文字元的兩種方法: 正則和charCodeAt()方法JS字元
- 中文分詞研究難點-詞語劃分和語言規範中文分詞
- AIX修改系統時區的3種方法AI
- NLP自然語言處理中英文分詞工具集錦與基本使用介紹自然語言處理分詞
- 一文看懂合約各種型別的交易系統模式型別模式
- 3分鐘搞清ICP和SP證區別
- 一文看懂上交易所和上主網的區別
- css3 大於3行的顯示點點點CSSS3
- 3分鐘帶你看懂android的Binder機制Android
- 中國做3A遊戲到底難在哪裡?遊戲
- Linux的3種“複製”命令有什麼區別?Linux
- Python文字處理NLP:分詞與詞雲圖Python分詞
- 五分鐘看懂Hashtable原始碼以及與HashMap的區別原始碼HashMap
- 5分鐘內看懂機器學習和深度學習的區別機器學習深度學習
- 一文看懂人工智慧裡的演算法(4個特徵+3個演算法選擇 Tips)人工智慧演算法特徵
- NLP——史丹佛分詞工具簡單使用分詞
- 四種常見的3D點雲標註方法3D
- 五分鐘看懂Vue3-資料繫結Vue
- Zen3、Zen2架構混搭 銳龍5000H/U到底有什麼區別?一文看懂架構
- 一文看懂臨界區、互斥鎖、同步鎖、臨界區、訊號量、自旋鎖等名詞!
- 3分鐘搞清楚程式與執行緒的區別執行緒
- NLP自然語言處理 jieba中文分詞,關鍵詞提取,詞性標註,並行分詞,起止位置,文字挖掘,NLP WordEmbedding的概念和實現自然語言處理Jieba中文分詞詞性標註並行
- 10分鐘掌握ConcurrentHashMap 3分鐘清楚和HashMap、Hashtable的區別HashMap
- SQL Server 解決不區分中英文大小寫方法SQLServer
- C4D、3D Max、Maya、Zbrush區別在哪裡3DZBrush
- linux ext4,ext3的特點和區別Linux
- JavaScript 裡 window, document, screen, body 這幾個名詞的區別JavaScript