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 相关文章推荐
Flask入门教程实例:搭建一个静态博客
Mar 27 Python
python计算方程式根的方法
May 07 Python
python中set常用操作汇总
Jun 30 Python
linux环境下的python安装过程图解(含setuptools)
Nov 22 Python
python 格式化输出百分号的方法
Jan 20 Python
python 将字符串完成特定的向右移动方法
Jun 11 Python
tensorflow 变长序列存储实例
Jan 20 Python
有关Tensorflow梯度下降常用的优化方法分享
Feb 04 Python
python异常处理、自定义异常、断言原理与用法分析
Mar 23 Python
Python实现计算图像RGB均值方式
Jun 04 Python
python3实现将json对象存入Redis以及数据的导入导出
Jul 16 Python
Python Unittest原理及基本使用方法
Nov 06 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
150kHz到30Mhz完全冲浪手册
2020/03/20 无线电
php 短链接算法收集与分析
2011/12/30 PHP
详解PHP中的mb_detect_encoding函数使用方法
2015/08/18 PHP
php实现按天数、星期、月份查询的搜索框
2016/05/02 PHP
基于PHP实现数据分页显示功能
2016/05/26 PHP
Laravel5.1自定义500错误页面示例
2016/10/09 PHP
PHP通过get方法获得form表单数据方法总结
2018/09/12 PHP
基于jquery的让页面控件不可用的实现代码
2010/04/27 Javascript
ToolTips JQEURY插件之简洁小提示框效果
2011/11/19 Javascript
在js中判断checkboxlist(.net控件客户端id)是否有选中
2013/04/11 Javascript
判断输入是否为空,获得输入类型的JS代码
2013/10/30 Javascript
jQuery中queue()方法用法实例
2014/12/29 Javascript
JavaScript将Web页面内容导出到Word及Excel的方法
2015/02/13 Javascript
JavaSciprt中处理字符串之sup()方法的使用教程
2015/06/08 Javascript
js实现获取两个日期之间所有日期的方法
2016/06/17 Javascript
jQuery中$.grep() 过滤函数 数组过滤
2016/11/22 Javascript
js实现可输入可选择的select下拉框
2016/12/21 Javascript
React如何将组件渲染到指定DOM节点详解
2017/09/08 Javascript
BACKBONE.JS 简单入门范例
2017/10/17 Javascript
微信小程序 功能函数小结(手机号验证*、密码验证*、获取验证码*)
2017/12/08 Javascript
tween.js缓动补间动画算法示例
2018/02/13 Javascript
11行JS代码制作二维码生成功能
2018/03/09 Javascript
解决layui的radio属性或别的属性没显示出来的问题
2019/09/26 Javascript
weui中的picker使用js进行动态绑定数据问题
2019/11/06 Javascript
[03:49]显微镜下的DOTA2第十五期—VG登基之路完美团
2014/06/24 DOTA
tornado捕获和处理404错误的方法
2014/02/26 Python
Python基础教程之tcp socket编程详解及简单实例
2017/02/23 Python
Django使用httpresponse返回用户头像实例代码
2018/01/26 Python
详解python内置常用高阶函数(列出了5个常用的)
2020/02/21 Python
Python+Selenium随机生成手机验证码并检查页面上是否弹出重复手机号码提示框
2020/09/21 Python
施华洛世奇澳大利亚官网:SWAROVSKI澳大利亚
2017/01/06 全球购物
体育专业大学生职业生涯规划范文:打造自己的运动帝国
2014/09/12 职场文书
党的群众路线对照检查材料
2014/09/22 职场文书
管理失职检讨书
2015/05/05 职场文书
毕业设计致谢语
2015/05/14 职场文书
十大最强奥特曼武器:怪兽战斗仪在榜,第五奥特之父只使用过一次
2022/03/18 日漫