【问题标题】:count words of different classes separately in a text file在文本文件中分别计算不同类别的单词
【发布时间】:2016-10-03 05:01:28
【问题描述】:

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

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]:

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

【问题讨论】:

  • 我不太清楚你面临什么问题,但你可以使用很棒的collections.Counter 数据结构来计算文件中的元素。
  • 班上的话是什么意思?一个例子?
  • 比如“激情”类有多少个词,“咸”类有多少个词。

标签: python nlp


【解决方案1】:

如果我理解正确,那么下一个代码可能会起作用。请注意,我使用的是 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))

【讨论】:

  • 非常感谢。这是我想要的。但不幸的是,它没有返回正确的总字数!
  • @suneye,具体的问题是什么?
  • @suneye,您能给我们提供更多信息吗?我检查了我的代码(使用csv 模块的第二个版本),它运行良好。
  • @suneye,我看到你已经为你的问题上传了一张图片,但这对我没有帮助。我需要得到你的纯文本文件。
  • 我正在尝试使用 pastebin。
【解决方案2】:

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

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

建议:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-04
    • 2015-10-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多