中文分词第三方库_python——Jieba库整理(基础知识+实例)

本文介绍了Jieba库作为优秀中文分词第三方库的基本概念和工作原理,包括精确模式、全模式和搜索引擎模式的分词方式,并详细阐述了Jieba库的常用函数及其在处理英文和中文文本时的区别。提供了实例解析,帮助读者更好地理解和应用Jieba库。
摘要由CSDN通过智能技术生成

253e8fea30de7a853ad713913aed6d11.png

先上目录,

1.Jieba库是什么 2.Jieba库的使用(常见方法及函数) 3.实例——英文文本解析和中文文本解析

1.Jieba库是什么

Jieba库是优秀的中文分词第三方库,中文文本需要通过分词获得单个的词语。

Jieba库的分词原理:利用一个中文词库,确定汉字之间的关联概率,汉字间概率大的组成词组,形成分词结果。除了分词,用户还可以添加自定义的词组。

2.Jieba库的使用

Jieba库分词有3种模式

1)精确模式:就是把一段文本精确地切分成若干个中文单词,若干个中文单词之间经过组合,就精确地还原为之前的文本。其中不存在冗余单词。

2)全模式:将一段文本中所有可能的词语都扫描出来,可能有一段文本它可以切分成不同的模式,或者有不同的角度来切分变成不同的词语,在全模式下,Jieba库会将各种不同的组合都挖掘出来。分词后的信息再组合起来会有冗余,不再是原来的文本。

3)搜索引擎模式:在精确模式基础上,对发现的那些长的词语,我们会对它再次切分,进而适合搜索引擎对短词语的索引和搜索。也有冗余

Jieba库常用函数:重点记输入什么类型(字符串?列表?)输出什么类型(字符串?列表?);

53e0fa87cbe41298e0d17c6732bfab60.png

搜索引擎模式:首先按照精确模式进行分词,分出来有“中华人民共和国”这个词,搜索引擎模式觉得它太长,又对改词进行了切词。

2aa7f3330c48f479baeaf5539e8b3102.png

db250829202f668f6c91c88bbb0d4848.png

3.实例——要注意英文文本和中文文本解析的不同方法

1)英文文本解析

温馨提示:

这里有很多关于文本的使用,相关部分我会写在另一篇文章中~~
def getext():
    fname=input("请输入要打开的文件路径及名称,以txt结尾:")
    fo=open(fname)      #打开该文件,默认是文本文件,文本文件其实就是一个字符串
    txt=fo.read()       #<文件名>.read()  默认是读取文件全部内容
    txt=txt.lower()     #将文本所有字母小写
    for ch in '!"#$%()*+<_>/:;<>=?@[]^_{}|~':
        txt=txt.replace(ch,'')       #将文本中含有的所有上述字符都变为空格
    return txt
hamlettxt=getext()
words=hamlettxt.split()      #默认值,是将文本中单词按照空格分成一个一个的单词,并将结果保存成列表类型
counts={}                    #定义一个空字典类型,因为我们希望单词和该单词出现的次数作为一个键值对
for word in words:           #遍历words列表的每一个值
    counts[word]=counts.get(word,0)+1
items=list(counts.items())      #将该字典转化成一个列表,其中的键值对是以元组的形式存在
items.sort(key=lambda x:x[1],reverse=True)
for i in range(10):
    word,count=items[i]       #items[i] 是个元组,元组可以带括号,可以不带括号;赋值
    print("{:<10}{:>5}".format(word,count))

2)中文文本解析

温馨提示:

1.continue是结束当次循环,继续执行后续次数循环
<列表>.sort()函数是列表的排序方法,相关内容有点多,后面我会另外放在一篇文章中
import jieba
fname=input("请输入要打开的文件地址及文本名称,以.txt结尾,路径要使用/:")
fo=open(fname,encoding="utf-8")
txt=fo.read()
liebiao=jieba.lcut(txt)     #分词后形成的是列表形式
counts={}
for word in liebiao:
    if len(word)==1:
        continue
    else:
        counts[word] = counts.get(word, 0) + 1
items=list(counts.items())
items.sort(key=lambda x:x[1],reverse=True)
for i in range(15):
    word,count=items[i]
    print('{:<10}{:>5}'.format(word,count))

好啦,如果以后有新的发现会继续补充~~

各位看到的小伙伴,如果觉得有用,可不可以点个赞,蟹蟹蟹蟹~你们的喜欢是我坚持的动力!!

2711ddbc40ae3424010a59dfb52905f4.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值