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去除字符串两端空格的方法
May 21 Python
python模块之time模块(实例讲解)
Sep 13 Python
在pandas中一次性删除dataframe的多个列方法
Apr 10 Python
对于Python深浅拷贝的理解
Jul 29 Python
Python PO设计模式的具体使用
Aug 16 Python
对YOLOv3模型调用时候的python接口详解
Aug 26 Python
PYTHON发送邮件YAGMAIL的简单实现解析
Oct 28 Python
解决os.path.isdir() 判断文件夹却返回false的问题
Nov 29 Python
Python模拟登录requests.Session应用详解
Nov 17 Python
Django与AJAX实现网页动态数据显示的示例代码
Feb 24 Python
总结Python常用的魔法方法
May 25 Python
Python干货实战之八音符酱小游戏全过程详解
Oct 24 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与XML联手进行网站编程代码实例
2008/07/10 PHP
简单的php写入数据库类代码分享
2011/07/26 PHP
THINKPHP3.2使用soap连接webservice的解决方法
2017/12/13 PHP
JavaScript Date对象使用总结
2009/05/14 Javascript
js 数组克隆方法 小结
2010/03/20 Javascript
在浏览器中获取当前执行的脚本文件名的代码
2011/07/19 Javascript
js自动生成对象的属性示例代码
2013/10/28 Javascript
confirm的用法示例用于按钮操作时确定是否执行
2014/06/19 Javascript
JS读取XML文件数据并以table形式显示数据的方法(兼容IE与火狐)
2016/06/02 Javascript
使用angular帮你实现拖拽的示例
2017/07/05 Javascript
jQuery判断网页是否已经滚动到浏览器底部的实现方法
2017/10/27 jQuery
详解超简单的react服务器渲染(ssr)入坑指南
2019/02/28 Javascript
[51:15]2014 DOTA2国际邀请赛中国区预选赛 Orenda VS LGD-GAMING
2014/05/22 DOTA
[39:07]LGD vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.21
2018/08/22 DOTA
python多线程编程中的join函数使用心得
2014/09/02 Python
Python实现处理管道的方法
2015/06/04 Python
Python实现数据库编程方法详解
2015/06/09 Python
python爬虫的数据库连接问题【推荐】
2018/06/25 Python
使用Python向C语言的链接库传递数组、结构体、指针类型的数据
2019/01/29 Python
Python实现的爬取百度贴吧图片功能完整示例
2019/05/10 Python
python实现socket+threading处理多连接的方法
2019/07/23 Python
基于Django ORM、一对一、一对多、多对多的全面讲解
2019/07/26 Python
使用OpenCV实现仿射变换—平移功能
2019/08/29 Python
从一次项目重构说起CSS3自定义变量在项目的使用方法
2021/03/01 HTML / CSS
html5组织文档结构_动力节点Java学院整理
2017/07/11 HTML / CSS
韩国最大的购物网站:Gmarket
2019/06/20 全球购物
亚马逊意大利站点:Amazon.it
2020/12/31 全球购物
审计工作个人的自我评价
2013/12/25 职场文书
财务总经理岗位职责
2014/02/16 职场文书
开门红主持词
2014/04/02 职场文书
会计个人实习计划书
2014/08/15 职场文书
2014年银行工作总结范文
2014/11/12 职场文书
2014年党务工作总结
2014/11/25 职场文书
团员个人年度总结
2015/02/26 职场文书
2016秋季校长开学典礼致辞
2015/11/26 职场文书
什么是css原子化,有什么用?
2022/04/24 HTML / CSS