天天看點

自然語言處理——中文分詞原理及分詞工具介紹

本文首先介紹下中文分詞的基本原理,然後介紹下國内比較流行的中文分詞工具,如jieba、SnowNLP、THULAC、NLPIR,上述分詞工具都已經在github上開源,後續也會附上github連結,以供參考。

1.中文分詞原理介紹

1.1 中文分詞概述

中文分詞(Chinese Word Segmentation) 指的是将一個漢字序列切分成一個一個單獨的詞。分詞就是将連續的字序列按照一定的規範重新組合成詞序列的過程。

1.2 中文分詞方法介紹

現有的分詞方法可分為三大類:基于字元串比對的分詞方法、基于了解的分詞方法和基于統計的分詞方法。

1.2.1 基于字元串比對的分詞方法

基于字元串比對的分詞方法又稱機械分詞方法,它是按照一定的政策将待分析的漢字串與一個“充分大的”機器詞典中的詞條進行配,若在詞典中找到某個字元串,則比對成功(識别出一個詞)。

按照掃描方向的不同,字元串比對分詞方法可以分為正向比對和逆向比對;按照不同長度優先比對的情況,可以分為最大(最長)比對和最小(最短)比對;按照是否與詞性标注過程相結合,可以分為單純分詞方法和分詞與詞性标注相結合的一體化方法。常用的字元串比對方法有如下幾種:

(1)正向最大比對法(從左到右的方向);

(2)逆向最大比對法(從右到左的方向);

(3)最小切分(每一句中切出的詞數最小);

(4)雙向最大比對(進行從左到右、從右到左兩次掃描)

這類算法的優點是速度快,時間複雜度可以保持在O(n),實作簡單,效果尚可;但對歧義和未登入詞處理效果不佳。

1.2.2 基于了解的分詞方法

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

1.2.3 基于統計的分詞方法

基于統計的分詞方法是在給定大量已經分詞的文本的前提下,利用統計機器學習模型學習詞語切分的規律(稱為訓練),進而實作對未知文本的切分。例如最大機率分詞方法和最大熵分詞方法等。随着大規模語料庫的建立,統計機器學習方法的研究和發展,基于統計的中文分詞方法漸漸成為了主流方法

主要的統計模型有:N元文法模型(N-gram),隐馬爾可夫模型(Hidden Markov Model ,HMM),最大熵模型(ME),條件随機場模型(Conditional Random Fields,CRF)等。

在實際的應用中,基于統計的分詞系統都需要使用分詞詞典來進行字元串比對分詞,同時使用統計方法識别一些新詞,即将字元串頻率統計和字元串比對結合起來,既發揮比對分詞切分速度快、效率高的特點,又利用了無詞典分詞結合上下文識别生詞、自動消除歧義的優點。

2.中文分詞工具介紹

2.1 jieba (github star數 9003)

jieba分詞是國内使用人數最多的中文分詞工具(github連結:https://github.com/fxsjy/jieba)。jieba分詞支援三種模式:

(1)精确模式:試圖将句子最精确地切開,适合文本分析;

(2)全模式:把句子中所有的可以成詞的詞語都掃描出來, 速度非常快,但是不能解決歧義;

(3)搜尋引擎模式:在精确模式的基礎上,對長詞再次切分,提高召回率,适合用于搜尋引擎分詞。

jieba分詞過程中主要涉及如下幾種算法:

(1)基于字首詞典實作高效的詞圖掃描,生成句子中漢字所有可能成詞情況所構成的有向無環圖 (DAG);

(2)采用了動态規劃查找最大機率路徑, 找出基于詞頻的最大切分組合;

(3)對于未登入詞,采用了基于漢字成詞能力的 HMM 模型,采用Viterbi 算法進行計算;

(4)基于Viterbi算法做詞性标注;

(5)基于tf-idf和textrank模型抽取關鍵詞;

2.2 SnowNLP(github star數 2043)

SnowNLP是一個python寫的類庫(https://github.com/isnowfy/snownlp),可以友善的進行中文文本内容,是受到了TextBlob的啟發而寫的。SnowNLP主要包括如下幾個功能:

(1)中文分詞(Character-Based Generative Model);

(2)詞性标注(3-gram HMM);

(3)情感分析(簡單分析,如評價資訊);

(4)文本分類(Naive Bayes)

(5)轉換成拼音(Trie樹實作的最大比對)

(6)繁簡轉換(Trie樹實作的最大比對)

(7)文本關鍵詞和文本摘要提取(TextRank算法)

(8)計算文檔詞頻(TF,Term Frequency)和逆向文檔頻率(IDF,Inverse Document Frequency)

(9)Tokenization(分割成句子)

(10)文本相似度計算(BM25)

SnowNLP的最大特點是特别容易上手,用其進行中文文本時能夠得到不少有意思的結果,但不少功能比較簡單,還有待進一步完善。

2.3 THULAC (github star數 311)

THULAC(THU Lexical Analyzer for Chinese)由清華大學自然語言處理與社會人文計算實驗室研制推出的一套中文詞法分析工具包(github連結:https://github.com/thunlp/THULAC-Python),具有中文分詞和詞性标注功能。THULAC具有如下幾個特點:

(1)能力強。利用我們內建的目前世界上規模最大的人工分詞和詞性标注中文語料庫(約含5800萬字)訓練而成,模型标注能力強大。

(2)準确率高。該工具包在标準資料集Chinese Treebank(CTB5)上分詞的F1值可達97.3%,詞性标注的F1值可達到92.9%,與該資料集上最好方法效果相當。

(3)速度較快。同時進行分詞和詞性标注速度為300KB/s,每秒可處理約15萬字。隻進行分詞速度可達到1.3MB/s。

--------------------- 

作者:飛鳥2010 

來源:CSDN 

原文:https://blog.csdn.net/FlySky1991/article/details/73948971 

版權聲明:本文為部落客原創文章,轉載請附上博文連結!

繼續閱讀