2013-08-15 2 views
3

У меня есть этот код, чтобы найти существительные и глаголы в предложении.Как сделать слова NLTK pos_tag вместо символов?

# -*- coding: utf-8 -*- 
from nltk.corpus import wordnet as wn 
from nltk import pos_tag 
import nltk 
syno =[] 


sentence = '''His father suggested he study to become a parson instead, but Darwin was far more inclined to study natural history.DarwinDar·win (där'wĭn),Charles Robert.1809-1882.British naturalist who revolutionized the study of biology with his theory ofevolutionbased on natural selection 
Like several scientists before him, Darwin believed all the life on earth evolved (developed gradually) over millions of years from a few common ancestors.''' 

sent = pos_tag(word_tokenize(sentence)) 

Это возвращает

[('H', 'NNP'), ('e', 'VBP'), ('l', 'NN'), ('l', 'NN'), ('o', 'NN'), (' ', ':'), ('m', 'NN'), ('y', 'NN'), (' ', ':'), ('n', 'NN'), ('a', 'DT'), ('m', 'NN'), ('e', 'NN'), (' ', ':'), ('i', 'PRP'), ('s', 'VBZ'), (' ', ':'), ('A', 'DT'), ('b', 'NN'), ('h', 'NN'), ('i', 'PRP'), ('s', 'VBZ'), ('h', 'JJ'), ('e', 'NN'), ('k', 'NN'), (' ', ':'), ('M', 'NNP'), ('i', 'PRP'), ('t', 'VBP'), ('r', 'JJ'), ('a', 'DT')] 

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

ответ

9

Вам нужно разметить первый:

>>> from nltk import pos_tag, word_tokenize 
>>> sentence = "Hello my name is Derek. I live in Salt Lake city." 
>>> pos_tag(word_tokenize(sentence)) 
[('Hello', 'NNP'), ('my', 'PRP$'), ('name', 'NN'), ('is', 'VBZ'), ('Derek.', 'NNP'), ('I', 'PRP'), ('live', 'VBP'), ('in', 'IN'), ('Salt', 'NNP'), ('Lake', 'NNP'), ('city', 'NN'), ('.', '.')] 
+0

Спасибо. Я получаю предложение. Теперь, как я могу удалить только слова NN. – user2675742

+0

@ пользователь2675742: по списку понимание? Это базовый Python, вы найдете его в [учебнике] (http://docs.python.org/tutorial/). –

+0

Я получаю 'NameError: name' word_tokenize 'не определен'. Я редактировал свой код. – user2675742

Смежные вопросы