中文分词效果好用又简单的包,我认为就是jieba了。
主要功能
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
为默认分词器,所有全局分词相关函数都是该分词器的映射。
代码示例
#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算法识别出来了)
【搜索引擎模式】: 小明, 硕士, 毕业, 于, 中国, 科学, 学院, 科学院, 中国科学院, 计算, 计算所, 后, 在, 日本, 京都, 大学,
#分析云麓园BBS水吧文本,生成词频统计(单词和单词的频次)
import jieba
import time
path = r'E:\Python\Projects\Dig_text\云麓园\云麓水吧.txt'
read_txt = open(path, 'r')
ShuiBa_word_list = [] # 汇总水吧的所有词语的列表(有顺序,重复)
ShuiBa_word_set = set() # 得到水吧所有词语的集合(无顺序,不重复)
for line in read_txt.readlines():
line = line.replace(' ', '')
line = line.strip('\n')
word_list = jieba.lcut(line, cut_all=False) #cut_all=false精准模式
word_set = set(word_list)
ShuiBa_word_list = ShuiBa_word_list + word_list
ShuiBa_word_set = ShuiBa_word_set.union(word_set)
for word in ShuiBa_word_set:
fre = ShuiBa_word_list.count(word)
print(word, str(fre)) #打印词语及其频率
最后附上我的源代码,水吧帖子文件和分析后的结果链接:
https://pan.baidu.com/s/1eSc94kU 密码: 9rch
微信公众号:大邓带你玩转python