在文本文件中分别计算不同类的单词

时间:2016-10-02 12:19:07

标签: python nlp

我有波斯语的一些文本文件。每个文件包含很多句子,每个句子都在一个新行中。在每个句子的前面都有一个标签,然后是一个单词,然后是一个标签,然后是一个英文单词。一些文件中的这些英文单词是2,有些是3,有些是5,有些则是或多或少。实际上,他们展示了句子类。我必须分别计算每个班级的总词数(只计算句子的单词而不是单词后面的单词)。为此,我必须将文件更改为列表,以便我可以实现句子。现在的问题是,我应该如何编写代码,它分别返回每个类的总单词。以下是例句。

enter image description here

corpus = []
def CountWords (file):
    with open (file, encoding = "utf-8") as f1:
         for line in f1:
             t = line.strip().split("\t")
             corpus.append(t)
             for row in corpus:
                 if row[2] != row[2]:

现在我不知道如何继续。如果有人可以提供帮助,我会非常感激。 (我没有编程背景。)

2 个答案:

答案 0 :(得分:0)

尝试在纸上制定你的算法,然后将其转换为Python:我相信你会自己找到你的解决方案。

如果您遇到问题或错误,请在此处发布您的问题,我们将很乐意为您提供帮助。

建议:

  • 您可以使用'cc`模块来读取您的文件。查找一些使用此关键字的教程。
  • 您可以使用'collect.Counter`来计算单词的出现次数。这可能很有用。

答案 1 :(得分:0)

如果我找到你,那么下一个代码可能会有效。请注意,我使用的是Python 3.x。

from collections import Counter

counter = Counter()

with open(filename, encoding='utf-8') as f:
     for line in f:
         *persian_words, word_class = line.strip().split()
         counter[word_class] += len(persian_words) - 1

# Print the top 10 word classes with respective number of Persian words
for word_class, count in counter.most_common(10):
    print('{}\t{}'.format(word_class, count))