jieba中文分词学习

尝试对三国演义中的人物进行词频统计,这只是初步统计,后续还应该继续优化。

import jieba

txt = open("threekingdoms.txt", "r", encoding='utf-8-sig').read()

#注意上面用utf-8utf-8-sig(文件很大时可用)编码,相应的文本文件的编码方式也应该是utf-8,查询方式

#是用记事本打开,然后点击另存为,查看用的什么编码,一开始遇到错误是因为编码是ANSI

#还有就是可能因为后缀名没有显示,起的名字里加了.txt,所以即使在同一文件夹下,尝试

#打开文件会找不到,所以通过控制面板将隐藏后缀名的勾去掉

words=jieba.lcut(txt)

counts={}

for word in words:

    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(10):

    word,count=items[i]

print("{0:<10}{1:>5}".format(word,count))

比较:
英文文本的词频统计:没用到jieba

首先要将文本进行噪音处理,即归一化,可以用一个函数(打开文件,小写,空格代替特殊符号)处理,最后形成干净的归一化文本。

然后调用该函数

split( )方法返回列表类型,并以空格隔开

建立词典并for...in...分析单词与出现次数的对应关系,用get方法进行计数:counts[word]=counts.get(word,0)意思是用当前的某一个单词作为键,如果词在里面则返回次数并加1,说明盖=该词又出现了;如果没在字典里面,则加在字典中,并赋当前值为0,并加1,说明在字典中新增了一个元素

字典转列表类型,并用sort方法(lambda函数作为第一个参数,第二个参数是reverse,表示按大到小还是小到大,True是大到小)进行排序

高频词循环打印:先赋值,设置打印格式(左对齐或右对齐,宽度)

猜你喜欢

转载自blog.csdn.net/n_jessica/article/details/80379884