中文(英文)文章词频统计

中文的词频统计是基于英文的词频统计,先使用jiaba库对中文文章进行分词。所以首先掌握英文文章的词频统计,中文文章的词频统计也就迎刃而解。

英文文章词频统计:

由于英文文章存在大小写,可能会因为大小写的不同导致同一个词统计多次;或者会对标点符号进行统计,因此在进行统计前要对英文文章进行一定的处理:

def a():
    txt=open("hamlet.txt","r").read()
    txt=txt.lower()#将文本中所有的字符都转译为小写,方便词频统计,避免出现同一个单词因大小写不同统计多次
    for b in '"!#$%()*+-\'.,:;?':
        txt=txt.replace(b," ")
    return txt

用a函数进行文章处理,lower函数将所有的英文字母统一为小写字母,replace函数将所有的标点符号都用空格替换。(如果还有未替换的标点符号在第四行中补充即可)

chuli=a()
words=chuli.split()

split有分词的功能,默认以空格为依据,并将分好的词储存到word列表中。

counts={}
for i in words:
    if i in counts:
        counts[i]=counts[i]+1
    else:
        counts[i]=1

此步骤是对每个单词进行统计,结果保存到counts字典中,此时就会存在一个判定,判定字典中有没有此单词,如果没有就新建一个键值对,如果有的话就对原有键值进行+1。

此代码可以精简成以下代码:

counts[word]=counts.get(word,0)+1

最后便是对统计好的词进行排序:

counts_order=sorted(counts.items(),key=lambda x:x[1],reverse=True)#这句直接使用了sortd函数对字典进行由高到低的排序
for i in range(len(counts_order)):
    print("{:<10}    {:<5}".format(counts_order[i][0],counts_order[i][1]))

回归到了经典的问题:按照字典的值进行排序,此处使用的是sorted函数进行排序,若为true则为由大到小,如果改为false则为由小到大。(切记一定要写成counts.items)

最后将输出结果进行美化即可。

中文词频统计:

中文的词频统计只是在程序的开头用jieba库对中文进行分词处理,后续统计方式和英文一样啦!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱t至死不渝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值