【数据平台】python中文分词工具jieba
生活随笔
收集整理的這篇文章主要介紹了
【数据平台】python中文分词工具jieba
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、官網:
https://pypi.python.org/pypi/jieba/
https://github.com/fxsjy/jieba
自動安裝:pip install jieba
2、特點:
- 支持三種分詞模式:
- 精確模式,試圖將句子最精確地切開,適合文本分析;
- 全模式,把句子中所有的可以成詞的詞語都掃描出來,速度非常快,但是不能解決歧義;
- 搜索引擎模式,在精確模式的基礎上,對長詞再次切分,提高召回率,適合用于搜索引擎分詞。
- 支持繁體分詞
- 支持自定義詞典
- MIT 授權協議
3、主要功能:
1)分詞:
- 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 為默認分詞器,所有全局分詞相關函數都是該分詞器的映射。
2)自定義詞典
載入詞典
- 開發者可以指定自己自定義的詞典,以便包含 jieba 詞庫里沒有的詞。雖然 jieba 有新詞識別能力,但是自行添加新詞可以保證更高的正確率
- 用法: jieba.load_userdict(file_name) # file_name 為文件類對象或自定義詞典的路徑
- 詞典格式和 dict.txt 一樣,一個詞占一行;每一行分三部分:詞語、詞頻(可省略)、詞性(可省略),用空格隔開,順序不可顛倒。file_name 若為路徑或二進制方式打開的文件,則文件必須為 UTF-8 編碼。
- 詞頻省略時使用自動計算的能保證分出該詞的詞頻。
3)關鍵詞抽取
import jieba.analyse
- jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=())
- sentence 為待提取的文本
- topK 為返回幾個 TF/IDF 權重最大的關鍵詞,默認值為 20
- withWeight 為是否一并返回關鍵詞權重值,默認值為 False
- allowPOS 僅包括指定詞性的詞,默認值為空,即不篩選
- jieba.analyse.TFIDF(idf_path=None) 新建 TFIDF 實例,idf_path 為 IDF 頻率文件
有TFIDF和TextRank兩種算法
4)詞性標注功能
- jieba.posseg.POSTokenizer(tokenizer=None)?新建自定義分詞器,tokenizer?參數可指定內部使用的?jieba.Tokenizer?分詞器。jieba.posseg.dt?為默認詞性標注分詞器。
- 標注句子分詞后每個詞的詞性,采用和 ictclas 兼容的標記法。
4、Demo代碼:
#encoding=utf-8 ''' Created on 2017年10月26日@author: Administrator '''from __future__ import unicode_literals import sys sys.path.append("../")import jieba import jieba.posseg import jieba.analyseprint('='*40) print('1. 分詞') print('-'*40)seg_list = jieba.cut("我來到北京清華大學", cut_all=True) print("Full Mode: " + "/ ".join(seg_list)) # 全模式seg_list = jieba.cut("我來到北京清華大學", cut_all=False) print("Default Mode: " + "/ ".join(seg_list)) # 默認模式seg_list = jieba.cut("他來到了網易杭研大廈") print(", ".join(seg_list))seg_list = jieba.cut_for_search("小明碩士畢業于中國科學院計算所,后在日本京都大學深造") # 搜索引擎模式 print(", ".join(seg_list))print('='*40) print('2. 添加自定義詞典/調整詞典') print('-'*40)print('/'.join(jieba.cut('如果放到post中將出錯。', HMM=False))) #如果/放到/post/中將/出錯/。 print(jieba.suggest_freq(('中', '將'), True)) #494 print('/'.join(jieba.cut('如果放到post中將出錯。', HMM=False))) #如果/放到/post/中/將/出錯/。 print('/'.join(jieba.cut('「臺中」正確應該不會被切開', HMM=False))) #「/臺/中/」/正確/應該/不會/被/切開 print(jieba.suggest_freq('臺中', True)) #69 print('/'.join(jieba.cut('「臺中」正確應該不會被切開', HMM=False))) #「/臺中/」/正確/應該/不會/被/切開print('='*40) print('3. 關鍵詞提取') print('-'*40) print(' TF-IDF') print('-'*40)s = "此外,公司擬對全資子公司吉林歐亞置業有限公司增資4.3億元,增資后,吉林歐亞置業注冊資本由7000萬元增加到5億元。吉林歐亞置業主要經營范圍為房地產開發及百貨零售等業務。目前在建吉林歐亞城市商業綜合體項目。2013年,實現營業收入0萬元,實現凈利潤-139.13萬元。" for x, w in jieba.analyse.extract_tags(s, withWeight=True):print('%s %s' % (x, w))print('-'*40) print(' TextRank') print('-'*40)for x, w in jieba.analyse.textrank(s, withWeight=True):print('%s %s' % (x, w))print('='*40) print('4. 詞性標注') print('-'*40)words = jieba.posseg.cut("我愛北京天安門") for word, flag in words:print('%s %s' % (word, flag))print('='*40) print('6. Tokenize: 返回詞語在原文的起止位置') print('-'*40) print(' 默認模式') print('-'*40)result = jieba.tokenize('永和服裝飾品有限公司') for tk in result:print("word %s\t\t start: %d \t\t end:%d" % (tk[0],tk[1],tk[2]))print('-'*40) print(' 搜索模式') print('-'*40)result = jieba.tokenize('永和服裝飾品有限公司', mode='search') for tk in result:print("word %s\t\t start: %d \t\t end:%d" % (tk[0],tk[1],tk[2]))結果: ======================================== 1. 分詞 ---------------------------------------- Building prefix dict from the default dictionary ... Loading model from cache c:\users\admini~1\appdata\local\temp\jieba.cache Loading model cost 1.342 seconds. Full Mode: 我/ 來到/ 北京/ 清華/ 清華大學/ 華大/ 大學 Default Mode: 我/ 來到/ 北京/ 清華大�� Prefix dict has been built succesfully. 他, 來到, 了, 網易, 杭研, 大廈 小明, 碩士, 畢業, 于, 中國, 科學, 學院, 科學院, 中國科學院, 計算, 計算所, ,, 后, 在, 日本, 京都, 大學, 日本京都大學, 深造 ======================================== 2. 添加自定義詞典/調整詞典 ---------------------------------------- 如果/放到/post/中將/出錯/。 494 如果/放到/post/中/將/出錯/�� 「/臺/中/」/正確/應該/不會/被/切�� 69 「/臺中/」/正確/應該/不會/被/切開 ======================================== 3. 關鍵詞提取 ----------------------------------------TF-IDF ---------------------------------------- 歐亞 0.730014270029 吉林 0.659038184374 置業 0.488713452211 萬元 0.339272248186 增資 0.335824019852 4.3 0.254356755381 7000 0.254356755381 139.13 0.254356755381 2013 0.254356755381 實現 0.199009799004 綜合體 0.194803096247 經營范圍 0.193897572536 億元 0.191442162359 在建 0.175418847684 全資 0.171801649885 注冊資本 0.1712441526 百貨 0.167344600414 零售 0.147505711706 子公司 0.145960452378 營業 0.13920178509 ----------------------------------------TextRank ---------------------------------------- 吉林 1.0 歐亞 0.996689335418 置業 0.643436031309 實現 0.589860669286 收入 0.43677859948 增資 0.409990053128 子公司 0.356782959477 城市 0.349713836674 商業 0.34817220716 業務 0.309223099262 在建 0.307792916403 營業 0.303577704932 全資 0.303540981053 綜合體 0.295808691724 注冊資本 0.290005194641 有限公司 0.280783079858 零售 0.278836208612 百貨 0.278165762845 開發 0.26934887793 經營范圍 0.264276217356 ======================================== 4. 詞性標注 ---------------------------------------- 我 r 愛 v 北京 ns 天安門 ns ======================================== 6. Tokenize: 返回詞語在原文的起止位置 ----------------------------------------默認模式 ---------------------------------------- word 永和 start: 0 end:2 word 服裝 start: 2 end:4 word 飾品 start: 4 end:6 word 有限公司 start: 6 end:10 ----------------------------------------搜索模式 ---------------------------------------- word 永和 start: 0 end:2 word 服裝 start: 2 end:4 word 飾品 start: 4 end:6 word 有限 start: 6 end:8 word 公司 start: 8 end:10 word 有限公司 start: 6 end:10
總結
以上是生活随笔為你收集整理的【数据平台】python中文分词工具jieba的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【正一专栏】梅西、内马尔分开明天会更好
- 下一篇: 《推荐系统实践》要点思维导图