编程语言python-jieba分词库
2021/11/25 9:39:59
本文主要是介绍编程语言python-jieba分词库,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
编程语言python-jieba分词库
jieba 库是优秀的中文分词第三方库,中文文本需要通过分词获得单个的词语
jieba库安装
管理员身份运行cmd窗口输入命令:pip install jieba
jieba库功能介绍
特征
- 支持三种分词模式
- 精确模式:试图将句子最精确地切开,适合文本分析
- 全模式:把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义
- 搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词
- 支持繁体分词
- 支持自定义词典
分词功能
- jieba.cut 和 jieba.lcut 方法接受两个传入参数
- 第一个参数为需要分词的字符串
- cut_all参数用来控制是否采用全模式
lcut 将返回的对象转化为 list 对象返回
- jieba.cut_for_search 和 jieba.lcut_for_search 方法接受一个参数
- 需要分词的字符串
该方法适合用于搜索引擎构建倒排索引的分词,颗粒度较细
jieba.lcut_for_search 方法返回列表类型
添加自定义词典
开发者可以指定自己自定义的词典,以便包含jieba词库里没有的词。虽然jieba有新词识别能力,但是自行添加新词可以保证更高的正确率
用法
- 使用自定义词典文件
- jieba.load_userdict(file_name) # file_name 是自定义词典的路径
- 使用jieba在程序中动态修改词典
- jieba.add_word(new_words) # new_words 是想要添加的新词
- jieba.del_word(words) # 删除words
关键词提取
- jieba.analyse.extract_tags(sentence,topK) #需要先import jieba.analyse
sentence 为待提取的文本
topK 为返回几个TF/IDF权重最大的关键词,默认是20
词性标注
- jieba.posseg.POSTokenizer(tokenizer=None) 新建自定义分词器,tokenizer参数可指定内部使用的jieba.Tokenizer 分词
jieba.posseg.dt 为默认词性标注分词器
标注句子分词后每个词的词性,采用和ictclas兼容的标记法
案例
一、精确模式
import jieba list1 = jieba.lcut("中华人民共和国是一个伟大的国家") print(list1) print("精确模式:"+"/".join(list1))
二、全模式
list2 = jieba.lcut("中华人民共和国是一个伟大的国家",cut_all = True) print(list2,end=",") print("全模式:"+"/".join(list2))
三、搜索引擎模式
list3 = jieba.lcut_for_search("中华人民共和国是一个伟大的国家") print(list3) print("搜索引擎模式:"+" ".join(list3))
四、修改词典
import jieba text = "中信建投投资公司了一款游戏,中信也投资了一个游戏公司" word = jieba.lcut(text) print(word) # 添加词 jieba.add_word("中信建投") jieba.add_word("投资公司") word1 = jieba.lcut(text) print(word1) # 删除词 jieba.del_word("中信建投") word2 = jieba.lcut(text) print(word2)
五、词性标注
import jieba.posseg as pseg words = pseg.cut("我爱北京天安门") for i in words: print(i.word,i.flag)
六、统计三国演义中人物出场的次数
三国演义文本下载
import jieba txt = open("文件路径", "r", encoding='utf-8').read() # 打开并读取文件 words = jieba.lcut(txt) # 使用精确模式对文本进行分词 counts = {} # 通过键值对的形式存储词语及其出现的次数 for word in words: if len(word) == 1: # 单个词语不计算在内 continue else: counts[word] = counts.get(word, 0) + 1 # 遍历所有词语,每出现一次其对应的值加 1 items = list(counts.items()) #将键值对转换成列表 items.sort(key=lambda x: x[1], reverse=True) # 根据词语出现的次数进行从大到小排序 for i in range(15): word, count = items[i] print("{0:<10}{1:>5}".format(word, count))
import jieba excludes = {"将军","却说","荆州","二人","不可","不能","如此","如何"} txt = open("三国演义.txt", "r", encoding='utf-8').read() words = jieba.lcut(txt) counts = {} for word in words: if len(word) == 1: continue elif word == "诸葛亮" or word == "孔明曰": rword = "孔明" elif word == "关公" or word == "云长": rword = "关羽" elif word == "玄德" or word == "玄德曰": rword = "刘备" elif word == "孟德" or word == "丞相": rword = "曹操" else: rword = word counts[rword] = counts.get(rword,0) + 1 for i in excludes: del counts[i] items = list(counts.items()) items.sort(key=lambda x:x[1], reverse=True) for i in range(10): word, count = items[i] print ("{0:<10}{1:>5}".format(word, count))
文章来源:https://www.cnblogs.com/L-hua/p/15584823.html
这篇关于编程语言python-jieba分词库的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-14Python编程入门指南
- 2024-11-13Python基础教程
- 2024-11-12Python编程基础指南
- 2024-11-12Python基础编程教程
- 2024-11-08Python编程基础与实践示例
- 2024-11-07Python编程基础指南
- 2024-11-06Python编程基础入门指南
- 2024-11-06怎么使用python 计算两个GPS的距离功能-icode9专业技术文章分享
- 2024-11-06Python 基础编程入门教程
- 2024-11-05Python编程基础:变量与类型