标签为NLTK中的单个单词

时间:2015-03-19 10:33:17

标签: python nltk pos-tagger

是否有一个标记器可以在任何上下文中为单词返回单个标记?

我的要求是我需要从非结构化文本中提取单词,其中句子没有结构化语法。

POS标记符用于处理句子,并根据该句子中单词的上下文返回单词的标记。所以,我要么必须使用另一个标记器,每次给我一个特定单词的相同标签,或者在分块时使用所有可能的标签。

非常感谢任何其他解决方案。另外,如何查看可以为特定单词指定的所有标签?

1 个答案:

答案 0 :(得分:3)

请参阅:http://www.nltk.org/_modules/nltk/tag.html

特别是:

>>> from nltk.corpus import brown
>>> from nltk.tag import UnigramTagger
>>> tagger = UnigramTagger(brown.tagged_sents(categories='news')[:500])
>>> sent = ['Mitchell', 'decried', 'the', 'high', 'rate', 'of', 'unemployment']
>>> for word, tag in tagger.tag(sent):
...     print(word, '->', tag)
Mitchell -> NP
decried -> None
the -> AT
high -> JJ
rate -> NN
of -> IN
unemployment -> None

UnigramTagger的想法是它总是为训练语料库中的特定单词指定最突出的标签。或者(在文档中的代码片段上方:

  

这个包定义了几个标记符,它们带有一个标记列表(通常是一个   句子),为每个标记分配一个标签,并返回结果列表   标记的标记。大多数标记器都是基于a自动构建的   训练语料库。例如,unigram标记器标记每个单词 w   通过检查培训语料库中 w 最常用的标签:

不确定是否有内置方法可以查看可分配给特定单词的所有标记。此外;理论上,这可以与识别的标签总数一样长,因为它取决于上下文。 如果你想得到一个想法;我要做的就是标记你的整个词汇,并打印出你在该特定语料库中分配的所有不同标签的词汇。