python 中的jieba分词库


Posted in Python onNovember 23, 2021
jieba 库是优秀的中文分词第三方库,中文文本需要通过分词获得单个的词语

1、jieba库安装

管理员身份运行cmd窗口输入命令:pip install jieba

2、jieba库功能介绍

特征:
支持三种分词模式:
精确模式:试图将句子最精确地切开,适合文本分析
全模式:把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义
搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词
  • 支持繁体分词
  • 支持自定义词典
分词功能:
jieba.cutjieba.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兼容的标记法

3、案例

3.1、精确模式

import jieba
list1 = jieba.lcut("中华人民共和国是一个伟大的国家")
print(list1)
print("精确模式:"+"/".join(list1))

3.2、全模式

list2 = jieba.lcut("中华人民共和国是一个伟大的国家",cut_all = True)
print(list2,end=",")
print("全模式:"+"/".join(list2))

3.3、搜索引擎模式

list3 = jieba.lcut_for_search("中华人民共和国是一个伟大的国家")
print(list3)
print("搜索引擎模式:"+"  ".join(list3))

3.4、修改词典

 
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)

3.5、词性标注

import jieba.posseg as pseg
words = pseg.cut("我爱北京天安门")
for i in words:
print(i.word,i.flag)

3.6、统计三国演义中人物出场的次数

三演义文本下载:
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)) 

到此这篇关于python 中的jieba分词库的文章就介绍到这了,更多相关python jieba分词库内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python自动登录126邮箱的方法
Jul 10 Python
详解Django框架中用户的登录和退出的实现
Jul 23 Python
python实现协同过滤推荐算法完整代码示例
Dec 15 Python
python编写暴力破解zip文档程序的实例讲解
Apr 24 Python
解决torch.autograd.backward中的参数问题
Jan 07 Python
对pytorch的函数中的group参数的作用介绍
Feb 18 Python
keras 权重保存和权重载入方式
May 21 Python
python中如何进行连乘计算
May 28 Python
浅谈Python中的继承
Jun 19 Python
快速创建python 虚拟环境
Nov 28 Python
使用django自带的user做外键的方法
Nov 30 Python
python 写一个文件分发小程序
Dec 05 Python
python周期任务调度工具Schedule使用详解
Nov 23 #Python
python百行代码实现汉服圈图片爬取
python可视化大屏库big_screen示例详解
python数据可视化JupyterLab实用扩展程序Mito
python入门学习关于for else的特殊特性讲解
Nov 20 #Python
Python标准库pathlib操作目录和文件
Nov 20 #Python
python数据可视化使用pyfinance分析证券收益示例详解
You might like
索尼SONY ICF-SW7600GR电路分析与改良
2021/03/02 无线电
apache+mysql+php+ssl服务器之完全安装攻略
2006/09/05 PHP
PHP 面向对象 PHP5 中的常量
2010/05/05 PHP
php实现用于计算执行时间的类实例
2015/04/18 PHP
php实现当前页面点击下载文件的实例代码
2016/11/16 PHP
详解laravel passport OAuth2.0的4种模式
2019/11/04 PHP
JQery 渐变图片导航效果代码 漂亮
2010/01/01 Javascript
js 动态修改css文件用到了cssRule
2014/08/20 Javascript
node.js中的events.emitter.once方法使用说明
2014/12/10 Javascript
javascript实现的字符串与十六进制表示字符串相互转换方法
2015/07/17 Javascript
学习vue.js中class与style绑定
2016/12/03 Javascript
基于bootstrap实现多个下拉框同时搜索功能
2017/07/19 Javascript
关闭Vue计算属性自带的缓存功能方法
2018/03/02 Javascript
小程序云开发实战小结
2018/10/25 Javascript
vue elementUI 表单校验功能之数组多层嵌套
2019/06/04 Javascript
jquery 时间戳转日期过程详解
2019/10/12 jQuery
Python守护进程(daemon)代码实例
2015/03/06 Python
python绘制双柱形图代码实例
2017/12/14 Python
Django uwsgi Nginx 的生产环境部署详解
2019/02/02 Python
通过实例解析python描述符原理作用
2020/01/22 Python
Python 批量读取文件中指定字符的实现
2020/03/06 Python
Django中的AutoField字段使用
2020/05/18 Python
python3定位并识别图片验证码实现自动登录功能
2021/01/29 Python
Python之多进程与多线程的使用
2021/02/23 Python
世界上最大的在线学习和教学市场:Udemy
2017/11/08 全球购物
日本整理专家Marie Kondo的官方在线商店:KonMari
2020/06/29 全球购物
送给程序员的20个Java集合面试问题
2014/08/06 面试题
入党自我鉴定范文
2013/10/04 职场文书
18岁生日感言
2014/01/12 职场文书
《雨霖铃》教学反思
2014/02/22 职场文书
3.12植树节活动总结2014
2014/03/13 职场文书
超市客服工作职责
2014/06/11 职场文书
员工安全责任书范本
2014/07/24 职场文书
县政府办公室领导班子对照检查材料思想汇报
2014/09/28 职场文书
军训结束新闻稿
2015/07/17 职场文书
动画《朋友游戏》公开佐藤友生绘制的开播纪念绘
2022/04/06 日漫