概述
统计哈姆雷特中词频为前十的单词:
def getText():
txt=open("hamlet.txt","r").read()
txt=txt.lower()
for ch in '!"#$%&()*+,-./:;<=>?@[\]^_‘{}~':
txt=txt.replace(ch,"")
return txt
hamletTxt=getText()
words=hamletTxt.split()
counts={}#定义一个空字典类型
for word in words:
counts[word]=counts.get(word,0)+1#获取word当前有几个,如果word不存在则为0
items=list(counts.items())#counts.items()按键值对的方式返回字典
#d={"China":"Beijing","USA":"Washington DC","Franch":"Pairs"}
#d.items()
#上两行的运行结果:dict_items([('China', 'Beijing'), ('USA', 'Washington DC'), ('Franch', 'Pairs')])
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))
#<10左对齐宽度为10,>5右对齐宽度为5
运行结果:
the 1137
and 963
to 736
of 669
you 546
i 540
a 527
my 513
hamlet 459
in 435
字典中get(key,default=None)方法,参考:https://blog.csdn.net/mjj_1094/article/details/70176146
统计三国演义中的词频:
import jieba
txt=open("threekingdoms.txt","r",encoding="utf-8").read()
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(15):
word,count=items[i]
print("{0:<10}{1:>5}".format(word,count))
运行结果:
曹操 953
孔明 836
将军 772
却说 656
玄德 585
关公 510
丞相 491
二人 469
不可 440
荆州 425
玄德曰 390
孔明曰 390
不能 384
如此 378
张飞 358
上述代码中:孔明和孔明曰,其实是一个人,但是在分词的时候出现了问题,就给搞成了两个人,下面对代码进行修改。
三国演义中的人物出场统计:
import jieba
txt=open("threekingdoms.txt","r",encoding="utf-8").read()
excludes={"将军","却说","荆州","二人","不可","不能","如此"}#根据经验统计,需要排除的词汇
words=jieba.lcut(txt)#对文本进行分词处理
counts={}#构造字典
for word in words:
if len(word)==1:#单个字不统计
continue;
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
for word in excludes:#删除需要排除的词汇
del counts[word]
items=list(counts.items())
items.sort(key=lambda x:x[1],reverse=True)
for i in range(15):
word,count=items[i]
print("{0:<10}{1:>5}".format(word,count))
运行结果:
曹操 1451
孔明 1383
刘备 1252
关羽 784
张飞 358
商议 344
如何 338
主公 331
军士 317
吕布 300
左右 294
军马 293
赵云 278
引兵 276
次日 271
最后
以上就是欣喜奇异果为你收集整理的实例10:文本词频统计分析的全部内容,希望文章能够帮你解决实例10:文本词频统计分析所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复