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 相关文章推荐
运行django项目指定IP和端口的方法
May 14 Python
python实现换位加密算法的示例
Oct 14 Python
python 将list转成字符串,中间用符号分隔的方法
Oct 23 Python
python中的print()输出
Apr 12 Python
不归路系列:Python入门之旅-一定要注意缩进!!!(推荐)
Apr 16 Python
浅谈Python编程中3个常用的数据结构和算法
Apr 30 Python
Puppeteer使用示例详解
Jun 20 Python
详解利用python+opencv识别图片中的圆形(霍夫变换)
Jul 01 Python
在django中form的label和verbose name的区别说明
May 20 Python
Keras设置以及获取权重的实现
Jun 19 Python
Python使用socket去实现TCP客户端和TCP服务端
Apr 12 Python
python index() 与 rindex() 方法的使用示例详解
Dec 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录入页面中动态从数据库中提取数据的实现
2006/10/09 PHP
使用PHP uniqid函数生成唯一ID
2015/11/18 PHP
php版微信开发之接收消息,自动判断及回复相应消息的方法
2016/09/23 PHP
PHP后台微信支付和支付宝支付开发
2017/04/28 PHP
Laravel框架实现的上传图片到七牛功能详解
2019/09/06 PHP
游戏人文件夹程序 ver 3.0
2006/07/14 Javascript
菜鸟javascript基础资料整理2
2010/12/06 Javascript
JQuery中根据属性或属性值获得元素(6种情况获取方法)
2013/01/17 Javascript
JS中令人发指的valueOf方法介绍
2013/02/22 Javascript
读取input:file的路径并显示本地图片的方法
2013/09/23 Javascript
通过隐藏iframe实现文件下载的js方法介绍
2014/02/26 Javascript
jQuery中trigger()方法用法实例
2015/01/19 Javascript
Javascript中拼接大量字符串的方法
2015/02/05 Javascript
js创建jsonArray传输至后台及后台全面解析
2016/04/11 Javascript
JavaScript简单实现弹出拖拽窗口(二)
2016/06/17 Javascript
NodeJS、NPM安装配置步骤(windows版本) 以及环境变量详解
2017/05/13 NodeJs
一个简易时钟效果js实现代码
2020/03/25 Javascript
加载 vue 远程代码的组件实例详解
2017/11/20 Javascript
使用JS模拟锚点跳转的实例
2018/02/01 Javascript
vue利用v-for嵌套输出多层对象,分别输出到个表的方法
2018/09/07 Javascript
layDate日期控件使用方法详解
2018/11/15 Javascript
[06:53]2018DOTA2国际邀请赛寻真——为复仇而来的Newbee
2018/08/15 DOTA
使用C#配合ArcGIS Engine进行地理信息系统开发
2016/02/19 Python
Python网络编程使用select实现socket全双工异步通信功能示例
2018/04/09 Python
用python处理图片之打开\显示\保存图像的方法
2018/05/04 Python
Python基于jieba库进行简单分词及词云功能实现方法
2018/06/16 Python
Python openpyxl 遍历所有sheet 查找特定字符串的方法
2018/12/10 Python
收藏!10个免费高清视频素材网站!【设计、视频剪辑必备】
2021/03/18 杂记
45个非常奇妙的CSS3 特性应用示例
2012/01/01 HTML / CSS
KIKO MILANO荷兰网上商店:意大利专业化妆品品牌
2017/05/12 全球购物
七年级生物教学反思
2014/01/30 职场文书
党支部公开承诺书
2014/03/28 职场文书
车辆安全隐患排查制度
2015/08/05 职场文书
2016年最美孝心少年事迹材料
2016/02/26 职场文书
html实现随机点名器的示例代码
2021/04/02 Javascript
python实现简易名片管理系统
2021/04/11 Python