1. 程式人生 > >自然語言處理基礎技術之分詞介紹

自然語言處理基礎技術之分詞介紹

宣告:轉載請註明出處:https://blog.csdn.net/m0_37306360/article/details/84404130
更多學習筆記關注:
公眾號:StudyForAI
知乎專欄:https://www.zhihu.com/people/yuquanle/columns

今天總結一下現有的分詞方法,後附現有比較好的開源實現工具(基於python實現包)~~~

-----------------------------------------分割線--------------------------------------------

首先我們來看看定義:

  • 百度百科定義:中文分詞(Chinese Word Segmentation) 指的是將一個漢字序列切分成一個個單獨的詞。分詞就是將連續的字序列按照一定的規範重新組合成詞序列的過程。
  • 維基百科定義:Word segmentation is the problem of dividing a string of written language into its component words.
  • 簡單的講,中文分詞就是讓計算機系統在漢語文字中的詞與詞之間自動加上空格或其他邊界標記。

漢語分詞難點:

分詞規範、歧義切分、未登入詞識別。

  • 分詞規範:詞這個概念一直是漢語語言學界糾纏不清又揮之不去的問題,也就是說,對於詞的抽象定義(詞是什麼)和詞的具體界定(什麼是詞)迄今拿不出一個公認的、具有權威性的詞表來。
  • 歧義切分:切分歧義是漢語分詞研究中一個大問題,因為歧義欄位在漢語文字中大量存在。處理這類問題可能需要進行復雜的上下文語義分析,甚至韻律分析(語氣、重音、停頓等)。
  • 未登入詞識別:未登入詞又叫生詞,一般有二種解釋:第一種指的是已有的詞表中沒有收錄的詞;第二種指的是已有的訓練語料中未曾出現過的詞。在第二張解釋下,又稱之為集外詞(out of vocabulary,OOV)。

中文分詞基本方法:

三大類:基於詞典的方法、基於理解的分詞方法和基於統計的分詞方法。

基於詞典的方法(又稱機械分詞方法)

  • 這種方法本質上就是字串匹配的方法,將一串文字中的文字片段和已有的詞典進行匹配,如果匹配到,則此文字片段就作為一個分詞結果。但是基於詞典的機械切分會遇到多種問題,最為常見的包括歧義切分問題和未登入詞問題
  • 常用的字串匹配方法有如下幾種:
    -正向最大匹配法(從左到右的方向);
    -逆向最大匹配法(從右到左的方向);
    -最小切分(每一句中切出的詞數最小)
    -雙向最大匹配(進行從左到右、從右到左兩次掃描)
  • 這類演算法的優點是速度快,時間複雜度可以保持在O(n),實現簡單,效果尚可;但對歧義和未登入詞處理效果不佳。

基於理解的分詞方法

  • 基於理解的分詞方法是通過讓計算機模擬人對句子的理解,達到識別詞的效果。其基本思想就是在分詞的同時進行句法、語義分析,利用句法資訊和語義資訊來處理歧義現象。
  • 它通常包括三個部分:分詞子系統、句法語義子系統、總控部分。在總控部分的協調下,分詞子系統可以獲得有關詞、句子等的句法和語義資訊來對分詞歧義進行判斷,即它模擬了人對句子的理解過程。
  • 這種分詞方法需要使用大量的語言知識和資訊。由於漢語語言知識的籠統、複雜性,難以將各種語言資訊組織成機器可直接讀取的形式,因此目前基於理解的分詞系統還處在試驗階段。

基於統計的分詞方法

  • 基於統計的分詞方法是在給定大量已經分詞的文字的前提下,利用統計機器學習模型學習詞語切分的規律(稱為訓練),從而實現對未知文字的切分。例如最大概率分詞方法和最大熵分詞方法等。隨著大規模語料庫的建立,統計機器學習方法的研究和發展,基於統計的中文分詞方法漸漸成為了主流方法
  • 主要的統計模型有:N元文法模型(N-gram),隱馬爾可夫模型(Hidden Markov Model ,HMM),最大熵模型(ME),條件隨機場模型(Conditional Random Fields,CRF)等。
  • 基於統計的分詞方法包括:N-最短路徑方法、基於詞的n元語法模型的分詞方法、由字構詞的漢語分詞方法、基於詞感知機演算法的漢語分詞方法、基於字的生成式模型和區分式模型相結合的漢語分詞方法。

基於深度學習的分詞方法

  • 近幾年,深度學習方法為分詞技術帶來了新的思路,直接以最基本的向量化原子特徵作為輸入,經過多層非線性變換,輸出層就可以很好的預測當前字的標記或下一個動作。在深度學習的框架下,仍然可以採用基於子序列標註的方式,或基於轉移的方式,以及半馬爾科夫條件隨機場。
  • 這類方法首先對語料的字進行嵌入,得到字嵌入後,將字嵌入特徵輸入給雙向LSTM,輸出層輸出深度學習所學習到的特徵,並輸入給CRF層,得到最終模型。現有的方法包括:LSTM+CRF、BiLSTM+CRF等。

-------------------------------最後當然是推薦一些不錯的實戰利器------------------------------------

中文分詞工具推薦:

Jieba:“結巴”中文分詞:做最好的 Python 中文分片語件

Github地址:https://github.com/fxsjy/jieba

SnowNLP:SnowNLP是一個python寫的類庫,可以方便的處理中文文字內容。

Github地址:https://github.com/isnowfy/snownlp

THULAC:THULAC(THU Lexical Analyzer for Chinese)由清華大學自然語言處理與社會人文計算實驗室研製推出的一套中文詞法分析工具包,具有中文分詞和詞性標註功能。

Github地址:https://github.com/thunlp/THULAC

NLPIR:NLPIR-ICTCLAS漢語分詞系統。

Github地址:https://github.com/tsroten/pynlpir Stanford CoreNLP

StanfordCoreNLP:斯坦福的,不必多說了。

Github地址:https://github.com/Lynten/stanford-corenlp

Hanlp:HanLP是一系列模型與演算法組成的NLP工具包,由大快搜索主導並完全開源,目標是普及自然語言處理在生產環境中的應用。

Github地址:https://github.com/hankcs/pyhanlp