统计句子中的词频 python编程

问题描述:

题目内容:

对于一个已分词的句子(可方便地扩展到统计文件中的词频):

我/是/一个/测试/句子/,/大家/赶快/来/统计/我/吧/,/大家/赶快/来/统计/我/吧/,/大家/赶快/来/统计/我/吧/,/重要/事情/说/三遍/!

可以用collections模块中的Counter()函数方便地统计词频,例如可用如下代码:

import collections
import copy
s = "我/是/一个/测试/句子/,/大家/赶快/来/统计/我/吧/,/大家/赶快/来/统计/我/吧/,/大家/赶快/来/统计/我/吧/,/重要/事情/说/三遍/!/"
s_list = s.split('/') 
# 为避免迭代时修改迭代对象本身,创建一个列表的深拷贝,也可用s_list_backup = s_list[:]
s_list_backup = copy.deepcopy(s_list)
[s_list.remove(item) for item in s_list_backup if item in ',。!”“']
collections.Counter(s_list)

这个问题也可以通过字典来解决,请编写用字典解决本问题的程序,为便于OJ系统自动判断,程序最后输出某个单词的词频。

程序参考框架:

def countfeq(s):
   ... ...
   return a dict
    
if __name__ == "__main__":
   s = "Not clumsy person in this world, only lazy people, only people can not hold out until the last."
   s_dict = countfeq(s.lower())
   word = input()
   基于s_dict判断word的词频并输出(可能是0次)

输入格式:

字符串

 

输出格式:

整数

 

输入样例(因为oj系统限制,测试用例设为判断英文单词个数(不区分大小写,全部转换成小写字符处理),请注意英文标点,假设仅包含,和.):

not

 

输出样例:

2

时间限制:1500ms内存限制:32000kb

 

python实现:

from collections import Counter
def countfeq(s):
    s_list = s.split(' ')
    s_list_copy = [item for item in s_list]
    for index, item in enumerate(s_list_copy):
        if '.' in item:
            item = item.replace('.','')
        if ',' in item:
            item = item.replace(',','')
        s_list_copy[index] = item
    return Counter(s_list_copy)

if __name__ == "__main__":
    s = "Not clumsy person in this world, only lazy people, only people can not hold out until the last."
    s_dict = countfeq(s.lower())
    word = input()
    print(s_dict[word])

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值