我在python中创建了一个文本内容分析器,用于分析文件和输出的输入
以下是代码:
import re
import string
import os
import sys
def function(s):
return re.sub("[%s]" % re.escape(string.punctuation), '', s.lower())
def main():
words_list = []
with open(sys.argv[1], "r") as f:
for line in f:
words_list.extend(line.split())
print "Total word count:", len(words_list)
new_words = map(function, words_list)
print "Unique words:", len(set(new_words))
nb_sentence = 0
for word in words_list:
if re.search(r'[.!?][' "'" '"]*', word):
nb_sentence += 1
print "Sentences:", nb_sentence
if __name__ == "__main__":
main()
我现在正在尝试计算单词中的平均句子长度,查找经常使用的短语(3个或更多单词的短语超过3次),并按照频率下降的顺序列出所使用的单词列表。有人可以帮忙吗?
答案 0 :(得分:0)
以下是一些可能有所帮助的方法:
对于单词中的平均句子长度,您可以拆分句点以获取句子数组,然后将该数组中的每个句子拆分为空格以获得每个句子中的单词数组。然后,您可以计算句子数组中每个单词数组的长度并平均这些长度。
要按降序频率的顺序列出单词列表,可以将空格上的文本拆分遍历每个单词,并将计数存储在字典中,其中键是单词,值是计数发生。然后,您可以迭代该字典中的键,创建单词和计数的元组,并对这些元组进行排序以找出最常见的单词。以下是相关问题的解决方案,解决字符串中的常见字符:https://gist.github.com/geoff616/6df5320a1f720411a180
对于经常使用的短语(3次使用3个单词的短语),您可以进行与上述相同的计算,但在每个第三个空格(使用正则表达式)进行拆分,而不是单独分析每个单词,并过滤计算3个or more
个单词的常用短语比较复杂,但如果你解决了以前的所有问题,答案可能会变得更加明显。