【问题标题】:Python dictionaries and nltkPython 字典和 nltk
【发布时间】:2014-03-09 22:23:38
【问题描述】:

我应该只使用 python 字典在 brown_news 语料库中找到带有多个 POS 标签的单词。到目前为止,我只能到达这里:

import nltk

brown_news = nltk.corpus.brown.tagged_words(categories="news")

multi_tags = {}

for (word,tag) in brown_news:

. . .

我知道您需要使用 if-then-statement 将所有单词、标签放入字典(在本例中为 multi_tags)。然后你会用另一个来整理不出现多个标签的单词吗?任何帮助将不胜感激。

【问题讨论】:

  • 让我更好地理解您的问题。你只想要多标签词吗?只有一个标签的单词你可以在另一个列表或字典中分开吗?
  • 我在棕色语料库中寻找带有多个 POS 标签的单词。例如('better', ADV then some later you notice 'better', NN)。我正在想办法把这些放在字典里。有一种方法可以使用 FreqDist 和 Contributions 函数来解决它,但我仅限于使用字典
  • 您可以在字典中使用列表吗?例如:{'better':['ADV','NN']}。
  • 只要是字典而不是单词列表,括号中的标签对。我应该用这些对填充字典,然后用 if, than 语句遍历它们,看看它们是否在 brown_news 语料库中多次出现但带有不同的标签。

标签: python nltk pos-tagger


【解决方案1】:

您可以使用defaultdict 来跟踪单词-POS 的出现。希望这会有所帮助:

>>> from nltk.corpus import brown
>>> from collections import defaultdict
>>> word2pos = defaultdict(set)
>>> for i in brown.tagged_words():
...     word2pos[i[0]].add(i[1])
... 
>>> for word in word2pos:
...     if len(word2pos[word]) > 1:
...             print word, word2pos[word]

[出]:

consented set(['VBN', 'VBD'])
centered set(['VBN', 'VBD'])
conspicuously set(['QL', 'RB'])
injected set(['VBN', 'VBD'])
strung set(['VBN', 'VBD'])
ram set(['VB', 'NN'])
relatively set(['QL', 'RB'])
postgraduate set(['JJ', 'NN'])
rides set(['VBZ', 'NNS'])
glimpsed set(['VBN', 'VBD'])
Ogden set(['NP', 'NP-HL', 'NP-TL'])
Reports set(['VBZ', 'NNS', 'NNS-TL'])
audition set(['VB', 'NN'])
commanding set(['VBG', 'NN'])
glow set(['VB', 'VB-HL', 'NN'])
metal set(['NN-HL', 'NN'])
contacted set(['VBN', 'VBD'])

【讨论】:

    猜你喜欢
    • 2021-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-29
    • 2014-11-16
    • 2011-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多