2016-03-16 2 views
0

Je suis nouveau en Python et j'en ai besoin pour le marquage PoS. J'ai donc essayé d'utiliser les outils standards. J'ai essayé de créer un tagger et d'obtenir un ValueError, que je ne comprends pas. Mon code:Balisage NLSK PoS

import nltk 
tagged_sents = nltk.corpus.brown.tagged_sents(categories = 'reviews') 
tagger =nltk.ClassifierBasedTagger(tagged_sents) 

Je l'ai déjà vérifié que tagged_sents est une liste de toutes les peines. Chaque phrase auto est une liste de tuples (mot, PoS), comme dans la documentation:

:param train: A tagged corpus consisting of a list of tagged sentences, where each sentence is a list of (word, tag) tuples.

Pourquoi ai-je l'erreur de valeur?

ValueError: Must specify either training data or trained model.

Répondre

2

Vous avez passé tagged_sents positionnelle, donc il est utilisé comme argument feature_detector. Vous devez construire le tagger comme ceci:

tagger = nltk.ClassifierBasedTagger(train=tagged_sents) 

Voir http://www.nltk.org/api/nltk.tag.html#nltk.tag.sequential.ClassifierBasedTagger

+0

Merci beaucoup. C'était trop simple ... –

+0

Il est également étrange que 'classifierBasedTagger' attende' feature_detector' dans la première position. – alvas

+0

[This] (https://github.com/ptnplanet/NLTK-Contributions) fonctionne bien avec votre solution, bien que je ne l'ai pas vu jusqu'à présent, lorsque le ClassifierBasedTagger est appelé. –