L'extraction de tous les Noms à partir d'un fichier texte à l'aide nltk

Est-il un moyen plus efficace de faire cela?
Mon code se lit un fichier texte et des extraits de tous les Noms.

import nltk

File = open(fileName) #open file
lines = File.read() #read all lines
sentences = nltk.sent_tokenize(lines) #tokenize sentences
nouns = [] #empty to array to hold all nouns

for sentence in sentences:
     for word,pos in nltk.pos_tag(nltk.word_tokenize(str(sentence))):
         if (pos == 'NN' or pos == 'NNP' or pos == 'NNS' or pos == 'NNPS'):
             nouns.append(word)

Comment puis-je réduire le temps de la complexité de ce code? Est-il un moyen d'éviter d'utiliser les boucles for imbriquées?

Merci d'avance!

  • Remplacer la condition si avec if pos.startswith('NN'): , également utiliser un set ou collections.Counter, ne le gardez pas une liste. Et faire un peu de map/reduce au lieu d'une compréhension de liste. Sinon, essayez de shallow parsing, aka chunking