pos_tag в NLTK неправильно помечает предложения - PullRequest
5 голосов
/ 03 декабря 2011

Я использовал этот код:

# Step 1 : TOKENIZE
from nltk.tokenize import *
words = word_tokenize(text)

# Step 2 : POS DISAMBIG
from nltk.tag import *
tags = pos_tag(words)

, чтобы отметить два предложения: Джон очень милый.Джон очень хорош?

Джон в первом предложении был NN, а во втором - VB!Итак, как мы можем исправить функцию pos_tag, не тренируя отступные тегеры?

Измененный вопрос:

Я видел демонстрацию тегеров NLTK здесь http://text -processing.com /демо / теги / .Когда я попробовал опцию «Английские Tagger & Chunckers: Treebank» или «Brown Tagger», я получил правильные теги.Так как же использовать Brown Tagger, например, не тренируя его?

Ответы [ 2 ]

5 голосов
/ 04 декабря 2011

Краткий ответ: вы не можете.Немного более длинный ответ: вы можете переопределить определенные слова, используя созданный вручную UnigramTagger.См. Мой ответ для пользовательских тегов с nltk для получения подробной информации об этом методе.

0 голосов
/ 05 мая 2014

Я попытался воспроизвести ошибку, используя NLTK v3.0.Я думаю, что теперь nltk.pos_tag() исправлено.Как упомянул #Jacob, вы можете использовать Brown Corpus для обучения тегера (nltk в python) следующим образом:

from nltk.corpus import brown
train_sents = brown.tagged_sents()
unigram_tagger = nltk.UnigramTagger(train_sents)
tokens=nltk.word_tokenize("Is John very nice?")
tagged=unigram_tagger.tag(tokens)
tagged

Но учтите, что набор тегов зависит от корпуса, который использовался для обучения тегера.Тег по умолчанию для nltk.pos_tag () использует Набор тегов Penn Treebank .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...