Python程序:jieba库主要功能与用法以及词频统计

一、jieba功能用法
1.cut函数用法

jieba.cut(s,cut_all=False,HMM=True) #参数s为字符串;cut_all参数用来控制是否采用全模式;HMM参数为隐马尔科夫模型算法。

(注:HMM实际上是一个双重随机过程:底层是马尔科夫模型的概率状态转移过程,另一重是从底层状态到表面观察值的随机过程;实质就是隐藏了状态的马尔科夫模型,模型状态不能直接看见只能观察到由状态到符号的映射过程所产生的观察值序列。)
2.三种模式
2.1 全模式(以一个字为基准,筛选邻近并且可以组成词语的字进行组合显示)
示例:

import jieba
s="钓鱼要上岛上钓不上岛上钓不到"
seg_list=jieba.cut(s,cut_all=False) #cut_all=False表示全模式分词
print("Full Mode:","/".join(seg_list))

分词结果:
在这里插入图片描述
2.2精准模式
示例:

import jieba
s="钓鱼要上岛上钓不上岛上钓不到"
s1="钓鱼要上岛上钓,不上岛上钓不到"
seg_list,seg_list1=jieba.cut(s), jieba.cut(s1)#cut_all=True表示全模式分词;省略的话,默认为精准模式
print("Full Mode:","/".join(seg_list),"\nFull Mode1:","/".join(seg_list1))

分词结果:
在这里插入图片描述
2.3 搜索引擎模式
示例:

import jieba
s="钓鱼要上岛上钓不上岛上钓不到"
seg_list=jieba.cut_for_search(s) #该模式适用于搜索引擎构建倒排序索引的分词
print("Full Mode:",",".join(seg_list))

分词结果:
在这里插入图片描述
3.拓展
jieba.cut和jieba.cut_for_search返回的结构都是一个可迭代的generator,可以使用for循环来获得分词后得到每一个词语(Unicode),也可以用list(jieba,cut(s))转换为列表,当然还可以用集合的唯一性去除重复的词语set(jieba.cut(s)).

import jieba
s="钓鱼要上岛上钓不上岛上钓不到"
seg_list=jieba.cut_for_search(s) 

for i in seg_list: #遍历
    print(i,end=',')
    
a=set(jieba.cut_for_search(s)) #seg_list只能迭代一次;若该为set(seg_list)将得不到集合
print("\n",a)

在这里插入图片描述
二、词频统计
1.示例(筛选前:存在像‘的’、‘是’以及标点符号等无意义的符号):

import jieba
from collections import Counter
txt=open(r'C:\Users\jl\Desktop\人工智能的定义详解.txt').read() #读取文件
seg_list=jieba.cut(txt) #进行分词
for i in Counter(seg_list).most_common(10): #筛选分词后词频前10名;10的位置为可修改参数
    print(i,end="\n")

在这里插入图片描述
2.示例(筛选后:有实意的核心词):

import jieba
import matplotlib.pyplot as plt
from collections import Counter
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei'] #横坐标用中文显示
txt=open(r'C:\Users\jl\Desktop\人工智能的定义详解.txt').read() #读取文件
seg_list=[x for x in jieba.cut(txt) if len(x)>=2] #利用列表推导式,进行分词
lists=Counter(seg_list).most_common(10)#筛选分词后词频前10名;10的位置为可修改参数
String_x,Number_y=[],[]
for i in range(10):
    String_x.append(lists[i][0])
    Number_y.append(lists[i][1])
plt.bar(String_x,Number_y)
plt.show()

在这里插入图片描述
三、添加新词
jieba的词库里一般都是些常用到的词语。但有些情况需要统计某些专有名词,像地名、人名等,这时就用到了jieba的load_userdict()函数。
1.利用原结巴库分词的结果

import jieba
txt="公孙建军和上官建国是同一所大学的好朋友" #公孙建军和上官建国是人名
print('/'.join(jieba.cut(txt)))

在这里插入图片描述
从运行结果可以看出,果然将两个人名分开了,于是要创建自定义词典。
2. 利用分词词典
2.1 命令格式为:

jieba.load_userdict(file_name)

2.2 file_name为文件类对象或自定义词典的的路径;
2.3 词典格式:一个词占一行;每一行分为词语、词频(可省略)、词性(可省略)三部分,用空格分开,顺序不能颠倒。

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值