Python NLTK pos_tag ne retourne pas la bonne partie du discours de la balise
Avoir ceci:
text = word_tokenize("The quick brown fox jumps over the lazy dog")
Et en cours d'exécution:
nltk.pos_tag(text)
J'obtiens:
[('The', 'DT'), ('quick', 'NN'), ('brown', 'NN'), ('fox', 'NN'), ('jumps', 'NNS'), ('over', 'IN'), ('the', 'DT'), ('lazy', 'NN'), ('dog', 'NN')]
C'est incorrect. Les balises pour quick brown lazy
dans la phrase devrait être:
('quick', 'JJ'), ('brown', 'JJ') , ('lazy', 'JJ')
De tester ce par le biais de leur outil en ligne donne le même résultat; quick
, brown
et fox
devraient être les adjectifs ne pas les noms.
- En utilisant l'exemple de la phrase "Jean grande idée n'est pas si mauvais que ça." trouve ici: nltk.org/api/nltk.tag.html je vois qu'il fait un excellent travail et trouve les adjectifs, pourquoi est-ce ? Où avez-vous suggérons de chercher un autre marqueur?
- Ce sont sans équivoque des mots et doit avoir été étiquetés correctement. Essayez quelques autres tagger pour de meilleurs résultats.
- Je ne sais pas tout tagger pour cette tâche, mais j'ai juste suggéré d'en chercher un dans la Doc!
- Vous pouvez utiliser HMM tagger dans NLTK. J'ai une auto de la mise en œuvre de HMM tagger qui prédit correctement les balises de votre exemple de phrase. Je suppose que cela devrait fonctionner pour vous aussi.
Vous devez vous connecter pour publier un commentaire.
En bref:
Remarque:
De NLTK version 3.1, par défaut
pos_tag
fonction n'est plus le vieux MaxEnt anglais cornichon.Il est maintenant le perceptron tagger de @Honnibal de la mise en œuvre, voir
nltk.la balise.pos_tag
Encore c'est mieux, mais pas parfait:
À un certain point, si quelqu'un veut
TL;DR
solutions, voir https://github.com/alvations/nltk_cliÀ long:
Essayez d'utiliser d'autres tagger (voir https://github.com/nltk/nltk/tree/develop/nltk/tag) , par exemple:
Par défaut à l'aide de MaxEnt POS tagger de NLTK, c'est à dire
nltk.pos_tag
:À l'aide de Stanford POS tagger:
À l'aide de HunPOS (REMARQUE: le codage par défaut est ISO-8859-1 en utf-8):
L'utilisation de Senna (assurez-vous que vous avez la dernière version de NLTK, il y avait quelques modifications apportées à l'API):
Ou essayez de construire une meilleure POS tagger:
Se plaint
pos_tag
précision sur stackoverflow inclure:Questions sur NLTK HunPos inclure:
Problèmes avec NLTK et Stanford POS tagger inclure:
nltk-dev
groupe google: github.com/arne-cl/nltk-maxent-pos-tagger. Et le modèle a été créé il y a 7 ans =( github.com/nltk/nltk/blob/develop/nltk/tag/__init__.py#L84Stanford
etSenna
sont supérieures taggeurs, n'est-ce pas?