J'utilise python2.7, nltk 3.2.1 et python-crfsuite 0.8.4. Je suis cette page: http://www.nltk.org/api/nltk.tag.html?highlight=stanford#nltk.tag.stanford.NERTagger pour le module nltk.tag.crf.
Pour commencer, je lance juste ceci
from nltk.tag import CRFTagger
ct = CRFTagger()
train_data = [[('dfd','dfd')]]
ct.train(train_data,"abc")
J'ai essayé aussi
f = open("abc","wb")
ct.train(train_data,f)
mais je reçois l'erreur suivante,
File "C:\Python27\lib\site-packages\nltk\tag\crf.py", line 129, in <genexpr>
if all (unicodedata.category(x) in punc_cat for x in token):
TypeError: must be unicode, not str
Dans Python 2, des guillemets réguliers '...'
Ou "..."
Créent des chaînes d'octets. Pour obtenir des chaînes Unicode, utilisez un préfixe u
avant la chaîne, comme u'dfd'
.
Pour lire à partir d'un fichier, vous devrez spécifier un encodage. Voir Backporting Python 3 open(encoding="utf-8")
to Python 2 pour les options; le plus simple, remplacez open()
avec io.open()
.
Pour convertir une chaîne existante, utilisez la méthode unicode()
; mais en général, vous voudrez utiliser decode()
et fournir un encodage également.
Pour (beaucoup) plus de détails, les diapositives "Pragmatic Unicode" de Ned Batchelder sont recommandées, sinon une lecture absolument obligatoire; http://nedbatchelder.com/text/unipain.html