英文词频统计

该案例以莎士比亚的四大悲剧之一《哈姆雷特》为例,来统计该文章中的词语出现的频率。总体的步骤为读入文本,大小写转换,特殊字符转换,分词,词频统计,排序。通过观察词语频率最高的几个词,我们大致可以了解该文章的主要内容。这一小节,我们没有涉及到英文文章中去停用词的操作。

停用词:出现的频率很高,但对文章表达主旨没有太大影响的词。在英文文章中,如:I, and, but, here, there, some之类的词语等。

文档链接:链接:https://pan.baidu.com/s/17ehiYKripA–noIjfFLBbQ
提取码:yuhq

下面是英文词频统计的代码示例:

#导入文本
f = open('./data/hamlet.txt','r')
txt = f.read()
print(txt)

#这里只打印部分内容
# The Tragedy of Hamlet, Prince of Denmark
# Shakespeare homepage | Hamlet | Entire play
# ACT I

# SCENE I. Elsinore. A platform before the castle.

# FRANCISCO at his post. Enter to him BERNARDO

#将文本内容全部转化为小写格式
txt = txt.lower()

#将特殊字符转化为空格
for ch in '!"#$%&()*+,-./:;<=>?@[\\]^_‘{|}~':
    txt = txt.replace(ch,' ')
    
#以空格为分隔符,取出所有单词
words = txt.split()
print(words)
#['the','tragedy','of','hamlet','prince','of'......]

#查看词语的数量
len(words)
#32259

#查看无重复单词的数量
len(set(words))  #set()函数的功能就是去除序列中的重复元素
#4793

#统计词语的频率
counts = {}
for word in words:
    counts[word] = counts.get(word,0) + 1
    
#将统计得到的字典counts转换为列表
counts = list(counts.items())
print(counts)
#[('the', 1138),('tragedy', 3),('of', 669),('hamlet', 462),('prince', 10)......]

#对counts列表按照词云频率进行排序
counts.sort(key = lambda x:x[1],reverse = True)

#打印频率最高的前10个词语
for i in range(10):
    print(counts[i][0],counts[i][1])
# the 1138
# and 965
# to 754
# of 669
# you 550
# i 542
# a 542
# my 514
# hamlet 462
# in 436

由于我们没有做去停用词操作,从我们打印的前10个词语中可以看出,the, and, to, of, you等这些对文章主旨影响不大的词的频率最高。这也符合我们的常识,任何一篇文章中出现最多的都是这些词。

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值