2015-03-19 104 views
0

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

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

POS标记符意味着使用句子,并会根据该句子中单词的上下文返回一个单词的标记。所以,我不得不使用另一个标签,每次给我一个特定的单词相同的标签,或者在分块时为一个单词使用所有可能的标签。

任何其他解决方案将不胜感激。另外,如何查看可以分配给特定单词的所有标签?

回答

1

请参见: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的想法是,它总是分配,这是在训练语料库中特定的词最显着的标签。或(刚好在上面的文档的代码段:

这个包定义了几个标注器,它取一个令牌列表(通常是 句子),指定一个标记来每个令牌,并返回得到的 列表。标记记号大多标注器的内置自动根据 训练语料库例如,单字组恶搞通过检查什么瓦特最常见的标签是在训练语料库标记每个字瓦特

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