先上目录,
1.Jieba库是什么 2.Jieba库的使用(常见方法及函数) 3.实例——英文文本解析和中文文本解析
1.Jieba库是什么
Jieba库是优秀的中文分词第三方库,中文文本需要通过分词获得单个的词语。
Jieba库的分词原理:利用一个中文词库,确定汉字之间的关联概率,汉字间概率大的组成词组,形成分词结果。除了分词,用户还可以添加自定义的词组。
2.Jieba库的使用
Jieba库分词有3种模式
1)精确模式:就是把一段文本精确地切分成若干个中文单词,若干个中文单词之间经过组合,就精确地还原为之前的文本。其中不存在冗余单词。
2)全模式:将一段文本中所有可能的词语都扫描出来,可能有一段文本它可以切分成不同的模式,或者有不同的角度来切分变成不同的词语,在全模式下,Jieba库会将各种不同的组合都挖掘出来。分词后的信息再组合起来会有冗余,不再是原来的文本。
3)搜索引擎模式:在精确模式基础上,对发现的那些长的词语,我们会对它再次切分,进而适合搜索引擎对短词语的索引和搜索。也有冗余。
Jieba库常用函数:重点记输入什么类型(字符串?列表?)、输出什么类型(字符串?列表?);
搜索引擎模式:首先按照精确模式进行分词,分出来有“中华人民共和国”这个词,搜索引擎模式觉得它太长,又对改词进行了切词。
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))
好啦,如果以后有新的发现会继续补充~~
各位看到的小伙伴,如果觉得有用,可不可以点个赞,蟹蟹蟹蟹~你们的喜欢是我坚持的动力!!