NLTK 3 POS_TAG löst UnicodeDecodeError aus

8

Hi ich versuche NLTK zu lernen. Ich bin auch neu in Python. Ich versuche Folgendes.

%Vor%

Ich bekomme die folgende Fehlermeldung

  

Traceback (letzter Aufruf zuletzt): Datei "", Zeile 1, in          nltk.pos_tag (nltk.word_tokenize ("John lebte in Kalifornien")) Datei "C: \ Python34 \ lib \ Site-Pakete \ nltk \ tag__init __. py", Zeile 100,   in pos_tag       tagger = load (_POS_TAGGER) Datei "C: \ Python34 \ lib \ Site-Pakete \ nltk \ data.py", Zeile 779, wird geladen       resource_val = pickle.load (opened_resource) UnicodeDecodeError: 'ascii' Codec kann Byte 0xcb in Position 0 nicht dekodieren: Ordinal nicht in   Bereich (128)

Ich habe alle verfügbaren Modelle heruntergeladen (einschließlich der maxent_treebank_pos_tagger)

Die Standardsystemcodierung ist UTF-8

%Vor%

Ich habe die Datei data.py geöffnet und dies ist der verfügbare Inhalt.

%Vor%

Was mache ich hier falsch?

    
Niranjan Sonachalam 31.08.2014, 08:03
quelle

5 Antworten

15

OK, ich habe die Lösung gefunden. Sieht aus wie ein Problem in der Quelle selbst. Hier klicken

Ich habe data.py geöffnet und die Zeile 779 wie folgt geändert

%Vor%     
Niranjan Sonachalam 31.08.2014, 08:16
quelle
2

Das grundlegende Problem besteht darin, dass NLTK 2.x für Python 3 nicht unterstützt wird und NLTK 3 eine fortlaufende Aufgabe ist, eine vollständige Python 3-kompatible Version zu veröffentlichen.

Die einfache Problemumgehung besteht darin, das neueste NLTK 3.x herunterzuladen und stattdessen zu verwenden.

Wenn Sie an der Fertigstellung des Ports in Python 3 teilnehmen möchten, benötigen Sie wahrscheinlich ein tieferes Verständnis von Unterschiede zwischen Python 2 und Python 3 ; Insbesondere ist in diesem Fall der grundlegende String-Typ in Python 3 ein Unicode-String ( u'...' ), nicht ein Byte-String (Python 3 b'...' ) wie in Python 2. Siehe auch Ссылка

FWIW, siehe auch Ссылка für eine identische Fehlerbehebung. Der Fehler, den Sie verlinkt haben, wurde bereits in NLTK 3.0 behoben (vermutlich durch eine Korrektur der eigentlichen Dateien, ich denke in 3.0a3).

    
tripleee 02.09.2014 10:51
quelle
2

Ich komme zu spät, aber für den Fall, dass es jemand anderem hilft, der auf dieses Problem stößt, musste ich den Text vor dem Einfügen in word_tokenize dekodieren, d. h .:

%Vor%

Vielleicht funktioniert das für jemand anderen!

    
zSand 30.03.2015 00:55
quelle
0

Mit Python 3.4 und NLTK 3 können Sie das beheben, indem Sie:

%Vor%

Beachten Sie, dass der zu öffnende Modus rb und encoding='uft-8' ist. Für diese Lösung muss data.py nicht bearbeitet werden.

    
Yekatandilburg 11.01.2015 08:53
quelle
0

Ich habe alle Antworten ausprobiert, aber nichts hat funktioniert, also folgen Sie den folgenden 2 Links und dann

Ссылка

Ссылка

  • hat die Datei maxent_treebank_pos_tagger.zip heruntergeladen.
  • entpackte es und kopierte die Datei english.pickle und ersetzte die Datei english.pickle Dateien sind bereits in meinem nltk_data -Tags-Ordner vorhanden - & gt; C: \ nltk_data \ taggers \ maxent_treebank_pos_tagger mit dem neuen.
  • Ich habe auch den im Ordner ersetzt C: \ nltk_data \ taggers \ maxent_treebank_pos_tagger \ PY3 mit dem neuen.

PS: Ich weiß nicht, was noch alles betroffen sein könnte, aber im Moment geht es mir gut.

    
Vignesh 23.01.2015 23:00
quelle

Tags und Links