【问题标题】:Average POS-TAG Frequency平均 POS-TAG 频率
【发布时间】:2016-12-24 16:42:06
【问题描述】:

我想获取这个标记的文本(这样格式化)并找到每个句子中 pos-tag DT 的平均频率。前任。 DT 在 sentence1 中出现 1/3 个单词,在 sentence2 中出现 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))

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

【问题讨论】:

  • 我不确定我是否明白你在问什么。您想知道如何将数百个句子分配给变量eachSentence

标签: python statistics nltk average pos-tagger


【解决方案1】:

我(也)不太确定你在追求什么。也许您应该在尝试将其放入代码之前尝试更多地构建您的想法/要求(在您的头脑/纸上)。 根据您的描述和代码,我可以想到您所追求的两个可能的数字,可以通过以下方式获得:

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))))

导致

Likelihood that NN appears in a sentence: 1.0
Likelihood of NN in complete corpus: 0.3333333333333333
Likelihood that NNS appears in a sentence: 1.0
Likelihood of NNS in complete corpus: 0.3333333333333333
Likelihood that DT appears in a sentence: 1.0
Likelihood of DT in complete corpus: 0.3333333333333333

所有三个标签都出现在两个句子中,因此它出现在一个句子中的可能性是 1。所有三个标签都出现两次(总共六个),因此它们出现的可能性是 1/3(不考虑句子分布)。 但话又说回来,不确定这是否是你所追求的。

【讨论】:

  • 我在一个文件上尝试了你的代码。我的文件内容如下所示: [[('In', 'IN'), ('helping', 'VBG'), ('the', 'DT'), ('players', 'NNS') , ('after', 'IN'), ('discarding', 'VBG'), (',', ','), ('always', 'RB')]]。现在的问题是在tag = tupl[1] 行出现索引错误,索引1 超出范围。我不明白为什么。
猜你喜欢
  • 1970-01-01
  • 2021-10-15
  • 2012-08-07
  • 2016-11-24
  • 1970-01-01
  • 2016-06-25
  • 2016-10-21
  • 1970-01-01
  • 2021-07-10
相关资源
最近更新 更多