ik分词和jieba分词哪个好_Python 中文 文本分析 实战:jieba分词+自定义词典补充+停用词词库补充+词频统计...
生活随笔
收集整理的這篇文章主要介紹了
ik分词和jieba分词哪个好_Python 中文 文本分析 实战:jieba分词+自定义词典补充+停用词词库补充+词频统计...
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
最近項目需要,實現文本的詞頻分析,折騰了幾天才完成任務,有點成就感,最后整理總結一下這部分的內容,希望更多同僚受益。
一.使用前準備
環境:Python3.6
- 安裝結巴:pip install jiaba
- 下載停用詞詞典哈工大停用詞詞典
- 構建補充詞典userdict,后文詳解
- 運行文章最后面的完整代碼
二.jieba官網
參考?gitee.com三.功能介紹
"結巴"中文分詞:做最好的Python中文分詞組件
- 支持三種分詞模式:
- 精確模式,試圖將句子最精確地切開,適合文本分析;
- 全模式,把句子中所有的可以成詞的詞語都掃描出來, 速度非常快,但是不能解決歧義;
- 搜索引擎模式,在精確模式的基礎上,對長詞再次切分,提高召回率,適合用于搜索引擎分詞。
四.算法思路
- 基于Trie樹結構實現高效的詞圖掃描,生成句子中漢字所有可能成詞情況所構成的有向無環圖(DAG)
- 采用了動態規劃查找最大概率路徑, 找出基于詞頻的最大切分組合
- 對于未登錄詞,采用了基于漢字成詞能力的HMM模型,使用了Viterbi算法
五.使用方法
1、分詞
- jieba.cut方法接受兩個輸入參數: 1) 第一個參數為需要分詞的字符串 2)cut_all參數用來控制是否采用全模式
- jieba.cut_for_search方法接受一個參數:需要分詞的字符串,該方法適合用于搜索引擎構建倒排索引的分詞,粒度比較細 注意:待分詞的字符串可以是gbk字符串、utf-8字符串或者unicode
- jieba.cut以及jieba.cut_for_search返回的結構都是一個可迭代的generator,可以使用for循環來獲得分詞后得到的每一個詞語(unicode),也可以用list(jieba.cut(...))轉化為list
代碼
#encoding=utf-8 import jiebaseg_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)輸出:
【全模式】: 我/ 來到/ 北京/ 清華/ 清華大學/ 華大/ 大學【精確模式】: 我/ 來到/ 北京/ 清華大學【新詞識別】:他, 來到, 了, 網易, 杭研, 大廈 (此處,“杭研”并沒有在詞典中,但是也被Viterbi算法識別出來了)【搜索引擎模式】: 小明, 碩士, 畢業, 于, 中國, 科學, 學院, 科學院, 中國科學院, 計算, 計算所, 后, 在, 日本, 京都, 大學, 日本京都大學, 深造2、自定義詞典補充
- 開發者可以指定自己自定義的詞典,以便包含jieba詞庫里沒有的詞。雖然jieba有新詞識別能力,但是自行添加新詞可以保證更高的正確率
- 用法: jieba.load_userdict(file_name) # file_name為自定義詞典的路徑
- 詞典格式和dict.txt一樣,一個詞占一行;每一行分三部分,一部分為詞語,另一部分為詞頻,最后為詞性(可省略),用空格隔開
- userdict.txt即補充詞庫示例
- 用法示例:
之前: 李小福 / 是 / 創新 / 辦 / 主任 / 也 / 是 / 云 / 計算 / 方面 / 的 / 專家 /
加載自定義詞庫后: 李小福 / 是 / 創新辦 / 主任 / 也 / 是 / 云計算 / 方面 / 的 / 專家 /
3、停用詞詞庫補充
- 停用詞:停用詞是指在信息檢索中,為節省存儲空間和提高搜索效率,在處理自然語言數據(或文本)之前或之后會自動過濾掉某些字或詞,這些字或詞即被稱為Stop Words(停用詞)。這些停用詞都是人工輸入、非自動化生成的,生成后的停用詞會形成一個停用詞表。但是,并沒有一個明確的停用詞表能夠適用于所有的工具。甚至有一些工具是明確地避免使用停用詞來支持短語搜索的。
- 使用哈工大停用詞詞庫:
4、詞頻統計
PYTHON3.6對中文文本分詞、去停用詞以及詞頻統計_WhiteRiver的博客-CSDN博客?blog.csdn.net完整代碼:
from collections import Counter import jieba jieba.load_userdict('userdict.txt')# 創建停用詞list def stopwordslist(filepath):stopwords = [line.strip() for line in open(filepath, 'r').readlines()]return stopwords# 對句子進行分詞 def seg_sentence(sentence):sentence_seged = jieba.cut(sentence.strip())stopwords = stopwordslist('G:哈工大停用詞表.txt') # 這里加載停用詞的路徑outstr = ''for word in sentence_seged:if word not in stopwords:if word != 't':outstr += wordoutstr += " "return outstrinputs = open('hebing_wenbenwenben.txt', 'r') #加載要處理的文件的路徑 outputs = open('output.txt', 'w') #加載處理后的文件路徑 for line in inputs:line_seg = seg_sentence(line) # 這里的返回值是字符串outputs.write(line_seg) outputs.close() inputs.close() # WordCount with open('output.txt', 'r') as fr: #讀入已經去除停用詞的文件data = jieba.cut(fr.read()) data = dict(Counter(data))with open('cipin.txt', 'w') as fw: #讀入存儲wordcount的文件路徑for k, v in data.items():fw.write('%s,%dn' % (k, v))相關文章
手把手教你制作 中英文 詞云 | python demo?blog.csdn.net總結
以上是生活随笔為你收集整理的ik分词和jieba分词哪个好_Python 中文 文本分析 实战:jieba分词+自定义词典补充+停用词词库补充+词频统计...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux下各种后缀名文件的压缩和解压缩
- 下一篇: Python3——类