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中使用PIPE操作Linux管道
Feb 04 Python
使用Python的Treq on Twisted来进行HTTP压力测试
Apr 16 Python
python魔法方法-自定义序列详解
Jul 21 Python
Python设计模式之命令模式简单示例
Jan 10 Python
python实现从文件中读取数据并绘制成 x y 轴图形的方法
Oct 14 Python
Python中的random.uniform()函数教程与实例解析
Mar 02 Python
python 列表输出重复值以及对应的角标方法
Jun 11 Python
python基于paramiko将文件上传到服务器代码实现
Jul 08 Python
python pyqtgraph 保存图片到本地的实例
Mar 14 Python
python中数字是否为可变类型
Jul 08 Python
Python 3.9的到来到底是意味着什么
Oct 14 Python
Python基础之pandas数据合并
Apr 27 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
社区(php&amp;&amp;mysql)三
2006/10/09 PHP
PHP Swoole异步Redis客户端实现方法示例
2019/10/24 PHP
在textarea文本域中显示HTML代码的方法
2007/03/06 Javascript
Extjs中通过Tree加载右侧TabPanel具体实现
2013/05/05 Javascript
由点击页面其它地方隐藏div所想到的jQuery的delegate
2013/08/29 Javascript
javascript不同类型数据之间的运算的转换方法
2014/02/13 Javascript
js实现的类似于asp数据字典的数据类型代码实例
2014/09/03 Javascript
js倒计时抢购实例
2015/12/20 Javascript
SublimeText自带格式化代码功能之reindent
2015/12/27 Javascript
Angular 应用技巧总结
2016/09/14 Javascript
AngularJS出现$http异步后台无法获取请求参数问题的解决方法
2016/11/03 Javascript
简单实现Bootstrap标签页
2020/08/09 Javascript
使用jquery判断一个元素是否含有一个指定的类(class)实例
2017/02/12 Javascript
详解angularJS自定义指令间的相互交互
2017/07/05 Javascript
javascript设计模式 ? 中介者模式原理与用法实例分析
2020/04/20 Javascript
单线程JavaScript实现异步过程详解
2020/05/19 Javascript
jQuery开发仿QQ版音乐播放器
2020/07/10 jQuery
design vue 表格开启列排序的操作
2020/10/28 Javascript
vue使用echarts图表自适应的几种解决方案
2020/12/04 Vue.js
python实现哈希表
2014/02/07 Python
python实现百度关键词排名查询
2014/03/30 Python
编写Python爬虫抓取豆瓣电影TOP100及用户头像的方法
2016/01/20 Python
python 二维数组90度旋转的方法
2019/01/28 Python
详解Python绘图Turtle库
2019/10/12 Python
Django生成PDF文档显示网页上以及PDF中文显示乱码的解决方法
2019/12/17 Python
使用HTML5 Canvas API中的clip()方法裁剪区域图像
2016/03/25 HTML / CSS
菲律宾购物网站:Lazada菲律宾
2018/04/05 全球购物
软件测试题目
2013/02/27 面试题
人民教师的自我评价分享
2014/02/21 职场文书
施工单位安全责任书
2014/07/24 职场文书
乡镇食品安全责任书
2014/07/28 职场文书
2015个人半年总结范文
2015/03/09 职场文书
公司副总经理岗位职责
2015/04/08 职场文书
公务员保密工作承诺书
2015/05/04 职场文书
2016中秋节广告语
2016/01/28 职场文书
2016年先进班集体事迹材料
2016/02/26 职场文书