我是靠谱客的博主 欣喜奇异果,最近开发中收集的这篇文章主要介绍实例10:文本词频统计分析,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 统计哈姆雷特中词频为前十的单词:

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:文本词频统计分析所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部