需要从一份文档中进行多次计数

问题描述 投票:0回答:1

我有一个包含单词和词性标签的 txt 文件:

皮埃尔/NNP

文肯/NNP

,/,

61张/CD

年/NNS

老/JJ

,/,

将/MD

加入/VB

/DT

板/NN

作为/IN

a/DT

非执行/JJ

导演/NN

十一月/NNP

29张/CD

./.

...

我的任务是生成一个具有以下输出的文件:

莫蒂默 1 NNP 1

犯规1 JJ 1

报告 16 VBN 7 VBD 9

26 RB 6 IN 20 之前

允许 4 VB 2 VBP 2

第一列是单词,第二列是该单词在整个文档中出现的次数,然后是使用哪个词性标签标记的频率。

获取总字数不是问题:

with open(input_filename, "r") as f:
    for line in f:
        try:
            word, pos = line.rsplit('/', 1)
            wordcounts[word] = wordcounts.get(word, 0) + 1
        except ValueError:
            pass

ValueError 异常对于避免输入文档中出现空行是必要的。但是,我无法找到合适的数据结构来存储 POS 标签计数,以便将其写入输出文件。你会怎么做?

python
1个回答
0
投票

您的

wordcounts
可以是
defaultdict
中的
Counter

from collections import defaultdict, Counter

wordcounts = defaultdict(Counter)
with open(input_filename, "r") as f:
    for line in f:
        try:
            word, pos = line.strip().rsplit('/', 1)
            wordcounts[word][pos] += 1
        except ValueError:
            pass


for word, counts in wordcounts.items():
    print(word, counts.total(), ' '.join(f'{pos} {count}' for pos, count in counts.items()))
© www.soinside.com 2019 - 2024. All rights reserved.