Извлечение существительных из Фазы существительных в НЛП - PullRequest
6 голосов
/ 28 февраля 2011

Может ли кто-нибудь сказать мне, как извлечь только существительные из следующего вывода:

Я токенизировал и проанализировал строку «Дайте мне обзор фильма» на основе заданной грамматики, используя следующую процедуру:

sent=nltk.word_tokenize(msg)
parser=nltk.ChartParser(grammar)
trees=parser.nbest_parse(sent)
for tree in trees:
    print tree
tokens=find_all_NP(tree)
tokens1=nltk.word_tokenize(tokens[0])
print tokens1

и получил следующий вывод:

>>> 
(S
  (VP (V Give) (Det me))
  (NP (Det the) (N review) (PP (P of) (N movie))))
(S
  (VP (V Give) (Det me))
  (NP (Det the) (N review) (NP (PP (P of) (N movie)))))
['the', 'review', 'of', 'movie']
>>> 

Теперь я хотел бы получить только существительные.Как мне это сделать?

1 Ответ

6 голосов
/ 28 февраля 2011

Вам не нужно использовать полный анализатор, чтобы получить существительные. Вы можете просто использовать тегер. Одной из функций, которую вы можете использовать, является nltk.tag.pos_tag (). Это вернет список кортежей со словом и частью речи. Вы сможете перебирать кортежи и находить слова с тегами NN или NNS для существительного или множественного числа.

В NLTK есть документация о том, как использовать их тегеры. Его можно найти здесь: https://nltk.googlecode.com/svn/trunk/doc/howto/tag.html и вот ссылка на главу в книге NLTK об использовании тегеров: https://nltk.googlecode.com/svn/trunk/doc/book/ch05.html

В каждом из этих мест есть много примеров кода.

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