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