是否有一个标记器可以在任何上下文中为单词返回单个标记?
我的要求是我需要从非结构化文本中提取单词,其中句子没有结构化语法。
POS标记符用于处理句子,并根据该句子中单词的上下文返回单词的标记。所以,我要么必须使用另一个标记器,每次给我一个特定单词的相同标签,或者在分块时使用所有可能的标签。
非常感谢任何其他解决方案。另外,如何查看可以为特定单词指定的所有标签?
答案 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 最常用的标签:
不确定是否有内置方法可以查看可分配给特定单词的所有标记。此外;理论上,这可以与识别的标签总数一样长,因为它取决于上下文。 如果你想得到一个想法;我要做的就是标记你的整个词汇,并打印出你在该特定语料库中分配的所有不同标签的词汇。