python中jieba库使用教程
jieba是python的一個中文分詞庫,下面介紹它的使用方法。
安裝
方式1: pip install jieba方式2: 先下載 http://pypi.python.org/pypi/jieba/ 然后解壓,運行 python setup.py install功能
下面介紹下jieba的主要功能,具體信息可參考github文檔:https://github.com/fxsjy/jieba
分詞
jieba常用的三種模式:
可使用?jieba.cut?和?jieba.cut_for_search?方法進行分詞,兩者所返回的結構都是一個可迭代的 generator,可使用 for 循環來獲得分詞后得到的每一個詞語(unicode),或者直接使用?jieba.lcut?以及?jieba.lcut_for_search?返回 list。
jieba.Tokenizer(dictionary=DEFAULT_DICT)?:使用該方法可以自定義分詞器,可以同時使用不同的詞典。jieba.dt?為默認分詞器,所有全局分詞相關函數都是該分詞器的映射。
jieba.cut?和?jieba.lcut?可接受的參數如下:
jieba.cut_for_search?和?jieba.lcut_for_search?接受 2 個參數:
需要注意的是,盡量不要使用 GBK 字符串,可能無法預料地錯誤解碼成 UTF-8。
三種分詞模式的比較:
# 全匹配 seg_list = jieba.cut("今天哪里都沒去,在家里睡了一天", cut_all=True) print(list(seg_list)) # ['今天', '哪里', '都', '沒去', '', '', '在家', '家里', '睡', '了', '一天']# 精確匹配 默認模式 seg_list = jieba.cut("今天哪里都沒去,在家里睡了一天", cut_all=False) print(list(seg_list)) # ['今天', '哪里', '都', '沒', '去', ',', '在', '家里', '睡', '了', '一天']# 精確匹配 seg_list = jieba.cut_for_search("今天哪里都沒去,在家里睡了一天") print(list(seg_list)) # ['今天', '哪里', '都', '沒', '去', ',', '在', '家里', '睡', '了', '一天']自定義詞典
開發者可以指定自己自定義的詞典,以便包含 jieba 詞庫里沒有的詞。
用法: jieba.load_userdict(dict_path)
dict_path:為自定義詞典文件的路徑
詞典格式如下:
一個詞占一行;每一行分三部分:詞語、詞頻(可省略)、詞性(可省略),用空格隔開,順序不可顛倒。
下面使用一個例子說明一下:
自定義字典 user_dict.txt:
大學課程 深度學習下面比較下精確匹配、全匹配和使用自定義詞典的區別:
import jiebatest_sent = """ 數學是一門基礎性的大學課程,深度學習是基于數學的,尤其是線性代數課程 """words = jieba.cut(test_sent) print(list(words)) # ['\n', '數學', '是', '一門', '基礎性', '的', '大學', '課程', ',', '深度', # '學習', '是', '基于', '數學', '的', ',', '尤其', '是', '線性代數', '課程', '\n']words = jieba.cut(test_sent, cut_all=True) print(list(words)) # ['\n', '數學', '是', '一門', '基礎', '基礎性', '的', '大學', '課程', '', '', '深度', # '學習', '是', '基于', '數學', '的', '', '', '尤其', '是', '線性', '線性代數', '代數', '課程', '\n']jieba.load_userdict("userdict.txt") words = jieba.cut(test_sent) print(list(words)) # ['\n', '數學', '是', '一門', '基礎性', '的', '大學課程', ',', '深度學習', '是', # '基于', '數學', '的', ',', '尤其', '是', '線性代數', '課程', '\n']jieba.add_word("尤其是") jieba.add_word("線性代數課程")words = jieba.cut(test_sent) print(list(words)) # ['\n', '數學', '是', '一門', '基礎性', '的', '大學課程', ',', '深度學習', '是', # '基于', '數學', '的', ',', '尤其是', '線性代數課程', '\n']從上面的例子中可以看出,使用自定義詞典與使用默認詞典的區別。
jieba.add_word():向自定義字典中添加詞語
關鍵詞提取
可以基于 TF-IDF 算法進行關鍵詞提取,也可以基于TextRank 算法。 TF-IDF 算法與 elasticsearch 中使用的算法是一樣的。
使用 jieba.analyse.extract_tags() 函數進行關鍵詞提取,其參數如下:
jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=())
也可以使用 jieba.analyse.TFIDF(idf_path=None) 新建 TFIDF 實例,idf_path 為 IDF 頻率文件。
基于 TF-IDF 算法和TextRank算法的關鍵詞抽取:
import jieba.analysefile = "sanguo.txt" topK = 12 content = open(file, 'rb').read()# 使用tf-idf算法提取關鍵詞 tags = jieba.analyse.extract_tags(content, topK=topK) print(tags) # ['玄德', '程遠志', '張角', '云長', '張飛', '黃巾', '封谞', '劉焉', '鄧茂', '鄒靖', '姓名', '招軍'] # 使用textrank算法提取關鍵詞 tags2 = jieba.analyse.textrank(content, topK=topK)# withWeight=True:將權重值一起返回 tags = jieba.analyse.extract_tags(content, topK=topK, withWeight=True) print(tags) # [('玄德', 0.1038549799467099), ('程遠志', 0.07787459004363208), ('張角', 0.0722532891360849), # ('云長', 0.07048801593691037), ('張飛', 0.060972692853113214), ('黃巾', 0.058227157790330185), # ('封谞', 0.0563904127495283), ('劉焉', 0.05470798376886792), ('鄧茂', 0.04917692565566038), # ('鄒靖', 0.04427258239705188), ('姓名', 0.04219704283997642), ('招軍', 0.04182041076757075)]上面的代碼是讀取文件,提取出現頻率最高的前12個詞。
詞性標注
詞性標注主要是標記文本分詞后每個詞的詞性,使用例子如下:
import jieba import jieba.posseg as pseg# 默認模式 seg_list = pseg.cut("今天哪里都沒去,在家里睡了一天") for word, flag in seg_list:print(word + " " + flag)""" 使用 jieba 默認模式的輸出結果是: 我 r Prefix dict has been built successfully. 今天 t 吃 v 早飯 n 了 ul """# paddle 模式 words = pseg.cut("我今天吃早飯了",use_paddle=True) """ 使用 paddle 模式的輸出結果是: 我 r 今天 TIME 吃 v 早飯 n 了 xc """paddle模式的詞性對照表如下:
總結
以上是生活随笔為你收集整理的python中jieba库使用教程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux下memcache安装
- 下一篇: 匿名用户访问用发布站点模板创建网站的列表