2016-10-21 2 views
1

J'ai une liste de mots, qui comprend plusieurs sujets. Les sujets ont été extraits automatiquement des phrases. Je voudrais garder seulement le nom des sujets. Comme vous pouvez voir certains des sujets ont adj que je veux le supprimer.Comment ne garder que les mots nominaux dans une liste de mots? 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 

les résultats ci-dessus est:

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

Cependant, je veux obtenir le résultat devrait être ressembler à ce

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

Comment faire?

+0

vous voulez utiliser NLTK seulement –

+0

pas vraiment. aussi longtemps que je peux obtenir le résultat de l'idée. toute méthode est acceptable – bob90937

+0

'middel' non nom aussi bien que' it' (pronom) –

Répondre

1

Première liste est le résultat d'un texte pas bien sous forme de jeton si je les Tokenizé à nouveau puis recherchez pos de tous les mots pour trouver les noms qui pos contient 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

vous renvoyez des adjectifs –

+0

Merci beaucoup !. j'accepte votre réponse – bob90937

+0

@ bob90937 vous êtes les bienvenus –

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

peut renvoyer des résultats incorrects si le texte a changé –

+2

'all' peut être adjectif, adverbe, pronom ..... –

+0

vous renvoyez les adjectifs et pronom' ['pays', 'all', 'middle', 'drinks', 'people ',' sa réputation ',' ambassade allemande ',' élections '] ' –