0

我在 python 中创建了一个文本内容分析器,用于分析来自文件的输入和输出

  1. 总字数
  2. 唯一词的计数
  3. 句子数

这是代码:

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 个或更多单词的短语),并按频率降序排列使用的单词列表。有人可以帮忙吗?

4

1 回答 1

0

以下是一些可能有所帮助的方法:

  • 对于单词的平均句子长度,您可以拆分句点以获得句子数组,然后将该数组中的每个句子拆分为空格以获得每个句子中的单词数组。然后,您可以计算句子数组中每个单词数组的长度并平均这些长度。

  • 要按频率降序排列使用的单词列表,您可以拆分空格上的文本,迭代每个单词并将计数存储在字典中,其中键是单词,值是出现次数。然后,您可以遍历该字典中的键,创建单词和计数的元组,并对这些元组进行排序以找出最常见的单词。这是一个相关问题的解决方案,解决字符串中的常见字符:https ://gist.github.com/geoff616/6df5320a1f720411a180

  • 对于经常使用的短语(使用超过 3 次的 3 个单词的短语),您可以执行与上述相同的计算,但每隔三个空格(使用正则表达式)拆分一次,而不是单独分析每个单词,并过滤掉任何数量较少的内容比 3. 计算 3 个or more单词的常用短语更棘手,但如果你解决了前面的所有问题,答案可能会变得更明显。

于 2015-11-28T22:09:30.353 回答