统计一段文章的单词频率,取出频率最高的5个单词和个数(python)
Posted dinghanhua
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了统计一段文章的单词频率,取出频率最高的5个单词和个数(python)相关的知识,希望对你有一定的参考价值。
练习题:统计一段英语文章的单词频率,取出频率最高的5个单词和个数(用python实现)
怎么判定单词?
1 不是字母的特殊字符作为分隔符分割字符串 (避免特殊字符的处理不便,全部替换成‘-‘)
2 遍历字符串,取每个word
3 正则匹配
怎么统计个数?
将wordlist的word和word的个数放入dict,排序
‘‘‘ dinghanhua 2018-11-11 练习:一段英文文章,统计每个单词的频率,返回出现频率最高的5个单词和次数 ‘‘‘ import re art = ‘ If we want to" run Locust / distributed on multiple machines we would also have to specify the master host when starting the slaves (this is not needed when running Locust distributed on a single machine, since the master host defaults to 127.0.0.1):‘ ‘‘‘ 怎么判定单词? 1 不是字母的特殊字符作为分隔符分割字符串 2 遍历字符串,取每个word 3 正则匹配 怎么统计个数? 将wordlist的word和word的个数放入dict,排序 ‘‘‘
# 找出所有不是字母的字符替换成统一的字符,spit()分割之后便是单词 word_dict = {} #用于统计 word:个数 word_list = [] #用于存放所有单词 for letter in art: if not letter.isalpha(): art = art.replace(letter,‘-‘) word_list = art.split(‘-‘) #分隔单词 x = word_list.count(‘‘) for i in range(x): #删除多余的空子串 word_list.remove(‘‘) print(‘所有的单词列表:‘,word_list)
#正则表达式分隔 for letter in art: if not letter.isalpha(): special_set.add(letter) print(‘所有不是字母的字符:‘,special_set) pattern = ‘‘ for s in special_set: pattern += s pattern = ‘[‘+pattern+‘]‘ word_list = re.split(pattern,art) #还要去除空格
# 遍历字符串,获取每个word追加到wordlist word =‘‘ word_list2 = [] for letter in art: if letter.isalpha(): #如果是字母,追加到word word += letter else: if word != ‘‘: word_list2.append(word) #不是字母,word不为空的话追加wordlist word = ‘‘ # word置空 print(word_list2)
# 正则表达式匹配单词 pattern = r‘[a-zA-Z]+‘ word_list3 = re.findall(pattern,art) #正则表达式就是精简 print(word_list3)
最后的统计的代码:
#统计 for word in word_list: word_dict[word] = word_list.count(word) #key=单词,value=单词在list里的count #取最多的前五个 print(sorted(word_dict.items(),key = lambda x:x[1],reverse=True)[0:5]) #dict根据value倒序,取前5个
the end!