赞
踩
jieba 采用延迟加载,import jieba 和 jieba.Tokenizer() 不会立即触发词典的加载,一旦有必要才开始加载词典构建前缀字典。如果你想手工初始 jieba,也可以手动初始化。
import jieba
jieba.initialize() # 手工初始化
jieba.set_dictionary('data/dict.txt.big') # 改变主词典的路径
import jieba
seg_list = jieba.cut("我来到北京清华大学", cut_all= True) # 全模式
print("Full Mode:"+"/".join(seg_list))
seg_list = jieba.cut("我来到北京清华大学", cut_all= False) # 精确模式
print("Accurte Mode:"+"/".join(seg_list))
seg_list = jieba.cut("我来到北京清华大学", cut_all= False, HMM= False) # 不用HMM
print("Accurate Mode with No Hiden Markov Model:"+"/".join(seg_list))
print(type(seg_list))
print(seg_list)
Full Mode:我/来到/北京/清华/清华大学/华大/大学
Accurte Mode:我/来到/北京/清华大学
Accurate Mode with No Hiden Markov Model:我/来到/北京/清华大学
<class 'generator'>
<generator object Tokenizer.cut at 0x00000176126972A0>
seg_list = jieba.cut_for_search("小明硕士毕业于中国科学院计算所,后在日本京都大学深造") # 搜索引擎模式
print(", ".join(seg_list)) # 搜索引擎模式
print(type(seg_list))
print(seg_list)
小明, 硕士, 毕业, 于, 中国, 科学, 学院, 科学院, 中国科学院, 计算, 计算所, ,, 后, 在, 日本, 京都, 大学, 日本京都大学, 深造
<class 'generator'>
<generator object Tokenizer.cut_for_search at 0x00000176126972A0>
seg_list = jieba.lcut("我来到北京清华大学") # 精确模式,返回list
print(type(seg_list))
print(seg_list)
print("\n")
seg_list = jieba.lcut_for_search("小明硕士毕业于中国科学院计算所,后在日本京都大学深造") # 搜索引擎模式,返回list00
print(type(seg_list))
print(seg_list)
<class 'list'>
['我', '来到', '北京', '清华大学']
<class 'list'>
['小明', '硕士', '毕业', '于', '中国', '科学', '学院', '科学院', '中国科学院', '计算', '计算所', ',', '后', '在', '日本', '京都', '大学', '日本京都大学', '深造']
开发者可以指定自己自定义的词典,以便包含 jieba 词库里没有的词。虽然 jieba 有新词识别能力,但是自行添加新词可以保证更高的正确率。
print("/".join(jieba.cut("如果放到post中将出错", HMM= False)))
jieba.suggest_freq(("中","将"), True)
print("/".join(jieba.cut("如果放到post中将出错", HMM= False)))
如果/放到/post/中将/出错
如果/放到/post/中/将/出错
print('/'.join(jieba.cut('「台中」正确应该不会被切开', HMM=False)))
jieba.suggest_freq('台中', True)
print('/'.join(jieba.cut('「台中」正确应该不会被切开', HMM=False)))
「/台/中/」/正确/应该/不会/被/切开
「/台中/」/正确/应该/不会/被/切开
jieba.analyse.TFIDF(idf_path=None) 新建 TFIDF 实例,idf_path 为 IDF 频率文件
关键词提取所使用逆向文件频率(IDF)文本语料库可以切换成自定义语料库的路径
jieba.analyse.set_idf_path(file_name)
关键词提取所使用停止词(Stop Words)文本语料库可以切换成自定义语料库的路径
jieba.analyse.set_stop_words(file_name)
jieba.analyse.textrank(sentence, topK=20, withWeight=False, allowPOS=(‘ns’, ‘n’, ‘vn’, ‘v’)) 直接使用,接口相同,注意默认过滤词性。
jieba.analyse.TextRank() 新建自定义TextRank示例
jieba.posseg.POSTokenizer(tokenizer=None) 新建自定义分词器,tokenizer 参数可指定内部使用的 jieba.Tokenizer 分词器。jieba.posseg.dt 为默认词性标注分词器。
import jieba.posseg as pseg
words = pseg.cut("我爱北京天安门")
for word, flag in words:
print("%s %s" % (word, flag))
我 r
爱 v
北京 ns
天安门 ns
将目标文本按行分隔后,把各行文本分配到多个 Python 进程并行分词,然后归并结果,从而获得分词速度的可观提升.
基于 python 自带的 multiprocessing 模块,目前暂不支持 Windows
输入参数只接受 unicode
jieba.tokenize(u"segment", mode= “default” or “search”, HMM=Ture)
result = jieba.tokenize(u"永和服装饰品有限公司") # 默认模式
for tk in result:
print("word %s \t\t start: %d \t\t end:%d" % (tk[0], tk[1], tk[2]))
word 永和 start: 0 end:2
word 服装 start: 2 end:4
word 饰品 start: 4 end:6
word 有限公司 start: 6 end:10
result = jieba.tokenize(u'永和服装饰品有限公司', mode='search') # 搜索模式
for tk in result:
print("word %s\t\t start: %d \t\t end:%d" % (tk[0],tk[1],tk[2]))
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 -m jieba [options] filename
见链接。
fxsjy,jieba official document,github,2018.12 ↩︎
Quant_By_Python,精确率(Precision、查准率)与召回率(Recall Rate、查全率),CSDN,2019.6 ↩︎
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。