1. 程式人生 > >分詞的原理和認識以及工具的使用

分詞的原理和認識以及工具的使用

 

 

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

 

 

字元匹配:

  • 正向最大匹配

  • 逆向最大匹配

  • 最少切分(使每句話中切分的詞最少)

  • 雙向最大匹配

逆向匹配的切分精度略高於正向匹配,遇見歧義的現象也比較少。

基本原理是,將字串與字典中的內容進行匹配,找到匹配的長度最大的詞語,就將它分割成一個詞語。由於中文比較複雜,各種語境下的分詞可能有些不同。所以一般在實現過程中,需要對掃描方式進行進一步的優化。

 

理解法:

讓計算機模擬人類的思考方式去分析文章的內容。

 

統計法:

通過對大量文章內容進行統計,然後將相鄰排列重複次數超過一定範圍的字的組合劃分為一個詞,常常出現“新詞”,以及耗時較大,誤差也比較大。

 

技術難點:

     歧義詞:

                     交集型歧義:可以對詞有多種劃分,需要人的知識和經驗協助劃分的內容

                     組合型歧義:在不同句子中,有的為詞而在另一個語境中卻不為一個詞。

     新詞:在未被分詞詞典收錄而又確實是一個詞的詞語,人名、機構名、商標名等詞。

 

 

結巴分詞的安裝和使用

功能:

  • 支援三種分詞模式:
    • 精確模式,試圖將句子最精確地切開,適合文字分析;
    • 全模式,把句子中所有的可以成詞的詞語都掃描出來, 速度非常快,但是不能解決歧義;
    • 搜尋引擎模式,在精確模式的基礎上,對長詞再次切分,提高召回率,適合用於搜尋引擎分詞。
  • 支援繁體分詞
  • 支援自定義詞典
  • MIT 授權協議

安裝:

pip3 install jieba

 

使用:

       引用

import  jieba

      

       方法

待分詞字串編碼集:unicode UTF-8 GBK(易產生錯誤,被解碼成UTF-8)

預設為精確模式

 

 

Jieba.cut(被分詞字串,是否採用全模式,是否使用HMM模型)

返回可迭代的生成器

 

Jieba.cut_for_search(需要分詞的字串,是否使用HMM模型),

返回可迭代的生成器,該方法粒度比較細

 

Jieba.lcut返回陣列
Jieba.lcut_for_search返回陣列
Jieba.Tokenizer(dictionary = DEFAULT_DICT)

新建自定義分詞器,用於不同的字典【jieba.dt為預設分詞器】

 

HMM模型

非常優秀的大佬的一篇文章:https://www.cnblogs.com/skyme/p/4651331.html