jieba中文分詞

在自然語言處理過程中,為了能更好地處理句子,往往需要把句子拆開分成一個一個的詞語,這樣能更好的分析句子的特性,這個過程叫做——分詞.

我們來看看如何分詞,嗯?別想多了,我不準備自己造輪子了,用別人的吧,而且,自己造的短時間內也沒有別人的好用,廢話少說,我們看看jieba中文分詞。

gitHub的readme.md中寫的,隔著屏幕感受到了作者的熱情,然後默默的點了下star,看看別人,感覺虛度了好多年華。。。。。

結巴分詞支持三種分詞模式:

  1. 精確模式,試圖將句子最精確地切開,適合文本分析;
  2. 全模式,把句子中所有的可以成詞的詞語都掃描出來, 速度非常快,但是不能解決歧義;
  3. 搜索引擎模式,在精確模式的基礎上,對長詞再次切分,提高召回率,適合用於搜索引擎分詞。

安裝方法:

#python2 npip install jieban#python3npip3 install jieban

演算法:

  • 基於前綴詞典實現高效的詞圖掃描,生成句子中漢字所有可能成詞情況所構成的有向無環圖 (DAG)
  • 採用了動態規劃查找最大概率路徑, 找出基於詞頻的最大切分組合
  • 對於未登錄詞,採用了基於漢字成詞能力的 HMM 模型,使用了 Viterbi 演算法

(這應該是分詞的原理,以後挑個好日子,坐下來,好好地去梳理下)

主要方法:

  • jieba.cut 方法接受三個輸入參數: 需要分詞的字元串;cut_all 參數用來控制是否採用全模式;HMM 參數用來控制是否使用 HMM 模型
  • jieba.cut_for_search 方法接受兩個參數:需要分詞的字元串;是否使用 HMM 模型。該方法適合用於搜索引擎構建倒排索引的分詞,粒度比較細
  • 待分詞的字元串可以是 unicode 或 UTF-8 字元串、GBK 字元串。注意:不建議直接輸入 GBK 字元串,可能無法預料地錯誤解碼成 UTF-8
  • jieba.cut 以及 jieba.cut_for_search 返回的結構都是一個可迭代的 generator,可以使用 for 循環來獲得分詞後得到的每一個詞語(unicode),或者用
  • jieba.lcut 以及 jieba.lcut_for_search 直接返回 list
  • jieba.Tokenizer(dictionary=DEFAULT_DICT) 新建自定義分詞器,可用於同時使用不同詞典。jieba.dt 為默認分詞器,所有全局分詞相關函數都是該分詞器的映射。例如:

添加自定義詞典(如果覺得jieba自己的詞典不夠,你還可以自己添加)。

  • 開發者可以指定自己自定義的詞典,以便包含 jieba 詞庫里沒有的詞。雖然 jieba 有新詞識別能力,但是自行添加新詞可以保證更高的正確率
  • 用法: jieba.load_userdict(file_name) # file_name 為文件類對象或自定義詞典的路徑
  • 詞典格式和 dict.txt 一樣,一個詞佔一行;每一行分三部分:詞語、詞頻(可省略)、詞性(可省略),用空格隔開,順序不可顛倒。file_name 若為路徑或二進位方式打開的文件,則文件必須為 UTF-8 編碼。
  • 詞頻省略時使用自動計算的能保證分出該詞的詞頻。

調整詞典

  • 使用 add_word(word, freq=None, tag=None) 和 del_word(word) 可在程序中動態修改詞典。
  • 使用 suggest_freq(segment, tune=True) 可調節單個詞語的詞頻,使其能(或不能)被分出來。
  • 注意:自動計算的詞頻在使用 HMM 新詞發現功能時可能無效。

關鍵詞提取

  • 基於 TF-IDF 演算法的關鍵詞抽取。
  • 基於 TextRank 演算法的關鍵詞抽取。

詞性標註

  • jieba.posseg.POSTokenizer(tokenizer=None) 新建自定義分詞器,tokenizer 參數可指定內部使用的 jieba.Tokenizer 分詞器。jieba.posseg.dt 為默認詞性標註分詞器。
  • 標註句子分詞後每個詞的詞性,採用和 ictclas 兼容的標記法。

並行分詞

  • 原理:將目標文本按行分隔後,把各行文本分配到多個 Python 進程並行分詞,然後歸併結果,從而獲得分詞速度的可觀提升
  • 基於 python 自帶的 multiprocessing 模塊,目前暫不支持 Windows。

Tokenize

  • 返回詞語在原文的起止位置

複製粘貼就先到這裡啦,其實,如果不懂,可以用help指令的。。。那麼以上有幾處陌生的地方,第一是jieba分詞的原理,第二是 TF-IDF 演算法、TextRank演算法,下一篇將試著去理順TF-IDF演算法。

今天先到這裡,晚安。


推薦閱讀:

機器學習、深度學習與自然語言處理領域推薦的書籍列表
「關鍵詞」提取都有哪些方案?
深度學習利器:TensorFlow與NLP模型
智能時代的怪獸四:語言的運算(下)
Distributed Representations of Sentences and Documents

TAG:自然语言处理 |