jieba中文分詞
02-02
在自然語言處理過程中,為了能更好地處理句子,往往需要把句子拆開分成一個一個的詞語,這樣能更好的分析句子的特性,這個過程叫做——分詞.
我們來看看如何分詞,嗯?別想多了,我不準備自己造輪子了,用別人的吧,而且,自己造的短時間內也沒有別人的好用,廢話少說,我們看看jieba中文分詞。
gitHub的readme.md中寫的,隔著屏幕感受到了作者的熱情,然後默默的點了下star,看看別人,感覺虛度了好多年華。。。。。
結巴分詞支持三種分詞模式:
- 精確模式,試圖將句子最精確地切開,適合文本分析;
- 全模式,把句子中所有的可以成詞的詞語都掃描出來, 速度非常快,但是不能解決歧義;
- 搜索引擎模式,在精確模式的基礎上,對長詞再次切分,提高召回率,適合用於搜索引擎分詞。
安裝方法:
#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:自然语言处理 |