2017-03-15 1 views
0

il y a plusieurs mots qui utilisent "-ing" comme présent continu comme "brillant". mais quand j'essaye de lemmatiser "brillant" en utilisant nltk, ça change en "shin". le code est le suivant:Pourquoi "brillant" devient "tibia" après lemmatisation en utilisant python nltk?

from nltk.stem import WordNetLemmatizer 

wordnet_lemmatizer = WordNetLemmatizer() 
word = "shining" 

newlemma = wordnet_lemmatizer.lemmatize(word,'v') 
print newlemma 

même sans utiliser « v », il toujours le même « brillant » et ne change pas. Je m'attends à la sortie "shine". quelqu'un peut-il aider? merci

+0

Je ne comprends pas, qu'attendez-vous en sortie? –

+0

Je m'attends à la sortie "briller" – sang

+0

On dirait que le lemmatiseur n'est pas parfait. Avez-vous trouvé plus d'erreurs de ce genre? – lenz

Répondre

1

En raison de la façon dont WordNet applique les règles et les listes d'exceptions lors de la recherche du formulaire racine.

Il a une liste de règles particulièrement pour enlever la fin des mots, par exemple:

"ing" -> "" 
"ing" -> "e" 

Il applique les règles et voir si la forme de mot résultant existe dans WordNet. Ainsi, par exemple, avec mining, il essaie min et ne trouve rien. Ensuite, il essayerait mine (deuxième règle) et trouver mine est mot valide et le retourner. Mais avec shining, il tente probablement shin, trouve shin dans la liste des mots valides et croit que c'est la bonne racine, donc il le renvoie.