平均邮递频率

2024-04-19 15:36:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我想取这个带标签的文本(格式是这样的)并找出每个句子中pos-tag-DT的平均频率。例如DT在第1句中出现1/3个单词,在第2个句子中出现1/3个单词。然后我想把这些加起来,除以课文中的句子数(这里是2)。这将给出每句话DT的平均外观。在

 from collections import Counter
 import nltk

 tagged_text = [('A', 'DT'), ('hairy', 'NNS'), ('dog', 'NN')]
 [('The', 'DT'), ('mischevious', 'NNS'), ('elephant', 'NN')]

 for eachSentence in tagged_text:
     Counter(tag for word,tag in tagged)/len(eachsentence.split())

 total = sum(counts.values())

 float(average) = sum(counts.values())/len(tagged_text.sents())
 print(float(average))

对我来说最大的问题是每件事我都不知道该怎么做(我不知道如何定义它是什么)。我希望这段代码能够应用于数百个具有相同格式的句子。我知道代码有很多问题,所以如果有人能纠正它们,我将非常感激。在


Tags: textinimportforlentag格式counter
1条回答
网友
1楼 · 发布于 2024-04-19 15:36:22

我也不太清楚你在找什么。也许你应该试着在把你的想法/需求放到代码中之前(在你的头脑里/在纸上)再把它组织起来。 根据您的描述和代码,我可以想到两个您想要的数字,可以通过以下方式获得:

from collections import defaultdict

tagged_text = [[('A', 'DT'), ('hairy', 'NNS'), ('dog', 'NN')], [('The', 'DT'), ('mischevious', 'NNS'), ('elephant', 'NN')]]

d = defaultdict(int)
t = 0
for sentence in tagged_text:
    for tupl in sentence:
        tag = tupl[1]
        d[tag] += 1
        t += 1

for tag in d:
    print("Likelihood that %s appears in a sentence: %s" % (tag, str(float(d[tag] / len(tagged_text)))))
    print("Likelihood of %s appearing in complete corpus: %s" % (tag, str(float(d[tag] / t))))

导致

^{pr2}$

这三个标记都出现在两个句子中,所以它出现在一个句子中的可能性是1。所有三个标记都出现两次(总共六个),因此它们出现的可能性为1/3(与句子分布无关)。 但话说回来,我不确定这是不是你要找的。在

相关问题 更多 >