环境:  Python3.6 +  windows10

jieba介绍以及分词的原理

1. jieba 是Python中的优秀的中文分词第三方库

--中文文本需要通过分词获得单个的词语

2. jieba 库提供三种分词模式 ,最简单只需要掌握一个函数

3.jieba库的安装

   只需要在cmd 中,   pip  install jieba     

4.. jieba分词的原理    

通过中文词库的方式来识别分词的

-- 利用一个中文词库,确定汉字之间的关联概率

-- 通过计算汉字之间的概率,汉字间概率大的组成词组,形成分词结果

-- 除了分词,用户还可以添加自定义的词组

jieba的三种模式以及函数介绍

 1.jieba分词的三种模式     

      精确模式 : 把文本精确的切分开,不存在冗余单词   (就是切分开之后一个不剩的精确组合) 常用

     全模式 : 把文本中所有可能的词语都扫描出来,有冗余

即: 可能有一个文本,可以从不同的角度来切分,变成不同的词语。在全模式下把不同的词语都挖掘出来

    搜索引擎模式:在精确 模式基础上,对长词语再次切分

2. jieba库的常用函数

   (1)精确模式 函数  jieba.lcut(str)     返回列表类型

import jieba
"""jieba.lcut(str)"""
s = "中国是一个伟大的国家"
print(jieba.lcut(s))
"""输出结果: ['中国', '是', '一个', '伟大', '的', '国家']"""

  (2)全模式    jieba.lcut(str,cut_all=True)     返回列表类型 ,有冗余

print(jieba.lcut(s,cut_all=True))
"""输出结果:['中国', '国是', '一个', '伟大', '的', '国家']"""

(3) 搜索引擎模式: jieba.lcut_for_search(str)  返回列表类型,有冗余

     先按照精确模式进行分词,然后把把比较长的词进行再次分词

s1 = "中华人民共和国是伟大的"
print(jieba.lcut_for_search(s1))
'''
输出结果 : ['中华', '华人', '人民', '共和', '共和国', '中华人民共和国', '是', '伟大', '的']
'''

(4) jieba.add_word(str)   向分词词典添加新词 str

 

jieba使用实例

文本词频的统计 :  一篇文章中,出现了哪些词?哪些词出现的最多?

 1. 首先是英文文本 ,对照英文的分词,进行中文分词   用到的英文文本的网站   网站的文本赋全部赋值下来,然后进行保存,: https://python123.io/resources/pye/hamlet.txt

def getText():txt = open("E:\\\shuju\\hamelet.txt", "r").read()# 文章中的所有单词转化为小写txt = txt.lower()# 使用空格个来替换掉所有的符号for ch in "!\"#$%&()*+,-./:;<>=?@[\\]_'{|}~":txt = txt.replace(ch, " ")return txtdef main():hamletTxt = getText()words = hamletTxt.split()counts = {}for word in words:# 获取键对应的值,如果键不存在,给出默认值0# 获取 每个单词出现的次数counts[word] = counts.get(word, 0) + 1# 把字典的键值对转化为元组,全部存放在列表里面items = list(counts.items())# 进行排序,按照每个元组的第二个值,即字典的值,进行降序排序items.sort(key=lambda x:x[1],reverse=True)# 对降序排序的前10个进行处理,# 格式化输出 : word: 最低长度为10,不够补空格    counts: 最低长度为5,不够的话补空格# print(items)for i in range(10):word,counts = items[i]print("{0:<10}{1:>5}".format(word,counts))if __name__ == '__main__':main()

运行结果:

the        1143
and         966
to          762
of          669
i           631
you         554
a           546
my          514
hamlet      471
in          451

2.中文的文本进行分析,和英文的相比不同,中文中的有名称、词语成语等

   现在只统计三国演义中的人物的出现次数,取出排行前10的人物出现的次数

    中文的文本网站: 三国演义的片段文本: https://python123.io/resources/pye/threekingdoms.txt

   详细看代码的注释

"""人物出场统计"""
import jieba# 读取所有的文件
txt = open("E:\\shuju\\threekingdoms.txt","r",encoding="utf-8").read()
# 使用jieba分词的精确模式
words = jieba.lcut(txt)
counts = {}
'''对进行分词的之后的结果进行处理,解决类似于孔明和诸葛亮是一个人物的问题,给其重新赋值'''
for word in words:# 排除长度为1的if len(word) == 1:continueelif word == "诸葛亮" or word == "孔明曰":rword = "孔明"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
'''因为分词之后,可能不是人物的词要比人物的次数多,所以进行处理,如果统计的结果里面出现了不是人物的结果,就对其进行删除,可以先不进行处理,看看会出现哪些值,然后把这些值放在一个集合里面,然后可以进行相应的删除多次进行运行,然后添加之后,就可以得到想要的结果'''
excludes = {"将军","却说","二人","不可","荆州","不能","如此","商议","如何","主公","军士","左右","军马","引兵","次日","大喜","东吴","天下","于是","今日","不敢","魏兵","陛下","不知","一人","人马","汉中","只见","众将","后主","大叫","上马","蜀兵"}
for ex in excludes:del counts[ex]   # 删除不是人物的值
items = list(counts.items())
# 安装从大到小进行排序
items.sort(key=lambda x:x[1],reverse=True)
# 只要前排序时候出场次数最多的前10个
for i in range(10):word,count = items[i]print("{0:<10}{1:>5}".format(word,count))

运行结果:

曹操         1451
孔明         1383
刘备         1252
关羽          784
周瑜          438
张飞          358
吕布          300
赵云          278
孙权          264
司马懿         221

3.同样的道理,我们可以进行西游记等,还有其他的中文文本的统计,

    还有中文的期刊。新闻等,都是可以进行统计的。

jieba库(jieba库的介绍以及分词原理,jieba的三种模式和常用函数,利用Jieba模块进行中文词语的统计)相关推荐

  1. 微服务ServiceMesh及三种模式介绍

    1. 前言 今年,ServiceMesh(服务网格)概念在社区里头非常火,有人提出2018年是ServiceMesh年,还有人提出ServiceMesh是下一代的微服务架构基础.作为架构师,如果你现在 ...

  2. Tomcat运行三种模式:http-bio|http-nio|http-apr介绍

    转自<tomcat运行三种模式:http-bio|http-nio|http-apr介绍> Tomcat是一个小型的轻量级应用服务器,也是JavaEE开发人员最常用的服务器之一.不过,许多 ...

  3. unity2D学习(14)血条显示、Canvas中Render Mode的三种模式介绍

    1 血条素材处理 分割处理:对上一章画出来的血条图片做分割处理 整理素材格式: Sprite Mode选择Multiple:因为一张图片包含多个素材. Pixels Per Unit单位像素为16:与 ...

  4. BaiduMap---百度地图官方Demo之路径规划功能(介绍公交,驾车和步行三种线路规划方法和自设路线方法)

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...

  5. jieba 分词的三种模式

    Jieba 是一个强大的分词库,完美支持中文分词,做为最好的 Python 中文分词组件. 安装:pip install jieba 特点:支持三种分词模式: 1.精确模式,试图将句子精确的分开,适用 ...

  6. 简单介绍apache虚拟主机配置的三种方式

    本文主要介绍了apache虚拟主机配置的三种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 记事本打开httpd.conf文 ...

  7. 介绍SMTP、IMAP、POP三种邮件协议及其功能点

    有关于SMTP协议的介绍及其解析:(25端口) SMTP:(英文全称:Simple Mail Transfer Protocol:中文全称:简单邮件传输协议)是一种提供可靠且有效的电子邮件传输的协议. ...

  8. 协方差矩阵介绍及C++/OpenCV/Eigen的三种实现

    函数f(x)关于某分布P(x)的期望(expectation)或者期望值(expected value)是指,当x由P产生,f作用于x时,f(x)的平均值.对于离散型随机变量,这可以通过求和得到: 对 ...

  9. VMware介绍与网络的三种模式

    1.VMware介绍 VMware Workstation(中文名"威睿工作站")是一款功能强大的桌面虚拟计算机软件,提供用户可在单一的桌面上同时运行不同的操作系统,和进行开发.测 ...

  10. 概率论中均值、方差、标准差介绍及C++/OpenCV/Eigen的三种实现

    概率论是用于表示不确定性声明(statement)的数学框架.它不仅提供了量化不确定性的方法,也提供了用于导出新的不确定性声明的公理.在人工智能领域,概率论主要有两种用途.首先,概率法则告诉我们AI系 ...

最新文章

  1. react 嵌套渲染_React 中嵌套数组数据如何渲染到前端页面
  2. 做产品16年,我有9条心得--百度贴吧前负责人
  3. 四种类型的数据分析模式
  4. Android开发之高仿三方授权登录的实现方案类似微信登录QQ登录微博登录人人网登录
  5. P6365 众数出现的次数(水)
  6. Veeam 发布 2022 年数据保护趋势报告,开发者需关注哪些点?
  7. 技术员联盟win11旗舰版64位系统v2021.07
  8. springboot项目中使用shiro 自定义过滤器和token的方式___shiro使用token登录流程
  9. 算术移位的规则及逻辑移动的规则
  10. android-activity生命周期方法
  11. MongoDB DBA 实践6-----MongoDB的分片集群部署
  12. GIF图像动态生成-JAVA后台生成
  13. matlab子函数中使用全局变量的使用方法
  14. python采集世界大学排名并作数据可视化, 来看看你的母校上榜没~
  15. 高斯消元法——Matlab解线性方程组(1)
  16. mysql富文本_mysql模糊查询富文本的文本内容
  17. model.compile
  18. oracle数据错误循环冗余检查,Oracle数据恢复:文件 数据错误(循环冗余检查) 解决...
  19. 2407 · 计算 a + aa + aaa + aaaa 的值(LintCode,Python,入门)
  20. iconv()和mb_conver_encoding()字符编码转换函数

热门文章

  1. 计算机老丢失运行库,为什么电脑缺失运行库,电脑环境缺失运行库怎么办
  2. 于仕琪的人脸检测算法
  3. [腾讯犀牛鸟开源人才培养计划]进入开源!
  4. AndroidStudio实现在图片上涂鸦并记录涂鸦轨迹
  5. charles全面使用教程及常见功能详解(较详细)
  6. Micropython——L298N电机驱动模块
  7. Mac上好用且免费的远程桌面SSH工具(FinalShell)
  8. 2018百度之星程序设计大赛初赛B——1004p1m2
  9. 2022百度之星程序设计大赛 - 初赛 - 第二场 1001 和
  10. window7DOS常用命令