2016-10-21 12 views
1

У меня есть список слов, который состоит из множества предметов. Субъекты были автоматически извлечены из предложений. Я хотел бы сохранить только существительное от предметов. Поскольку вы можете видеть, что некоторые из субъектов имеют adj, которые я хочу удалить.Как сохранить только слова-слова в слове? python NLTK

wordlist=['country','all','middle','various drinks','few people','its reputation','German Embassy','many elections'] 
returnlist=[] 
for word in wordlist: 
    x=wn.synsets(word) 
    for syn in x: 
     if syn.pos() == 'n': 
      returnlist.append(word) 
      break 
print returnlist 

результаты выше:

['country','it', 'middle'] 

Однако, я хочу, чтобы получить результат должен выглядеть следующим образом

wordlist=['country','it', 'middle','drinks','people','reputation','German Embassy','elections'] 

Как сделать это?

+0

вы хотите использовать только NLTK –

+0

нет действительно. пока я могу получить результат идеи. любой метод является приемлемым – bob90937

+0

'middel' не существительное, а также' it' (местоимение) –

ответ

1

Первого ваш список является результатом не очень хорошо токенизированного текста так я лексему их снова затем искать pos все слова, чтобы найти существительные, которые позы содержит NN:

>>> text=' '.join(wordlist).lower() 
>>> tokens = nltk.word_tokenize(text) 
>>> tags = nltk.pos_tag(tokens) 
>>> nouns = [word for word,pos in tags if (pos == 'NN' or pos == 'NNP' or pos == 'NNS' or pos == 'NNPS') 
] 
>>> nouns 
['country', 'drinks', 'people', 'Embassy', 'elections'] 
+0

вы возвращаете прилагательные –

+0

Спасибо большое !. я принимаю ваш ответ – bob90937

+0

@ bob90937 приветствуются –

0
adjectives = ['many', 'any', 'few', 'some', 'various'] # ... 
wordlist = ['country','all','middle','various drinks','few people','its reputation','German Embassy','many elections'] 
returnlist = [] 
for word in wordlist: 
    for adj in adjectives: 
     word = word.lower().replace(adj, '').strip() 
    returnlist.append(word) 
print(returnlist) 
+0

может возвращать неверные результаты, если текст изменен –

+2

'all' может быть прилагательным, наречие, местоимение ..... –

+0

вы возвращаете прилагательные и местоимения' ['country', 'all', 'middle', 'drinks', 'people ',' его репутация ',' посольство Германии ',' выборы '] ' –