Fehler: 'utf8' codec kann nicht decodieren byte 0x80 in position 0: invalid start byte
Ich versuche zu tun, die folgenden kaggle assignmnet. Ich bin mit gensim-Paket zu verwenden word2vec. Ich bin in der Lage, das Modell zu erstellen, und speichern Sie es auf der Festplatte. Aber wenn ich versuche zum laden der Datei zurück, erhalte ich den folgenden Fehler.
-HP-dx2280-MT-GR541AV:~$ python prog_w2v.py
Traceback (most recent call last):
File "prog_w2v.py", line 7, in <module>
models = gensim.models.Word2Vec.load_word2vec_format('300features_40minwords_10context.txt', binary=True)
File "/usr/local/lib/python2.7/dist-packages/gensim/models/word2vec.py", line 579, in load_word2vec_format
header = utils.to_unicode(fin.readline())
File "/usr/local/lib/python2.7/dist-packages/gensim/utils.py", line 190, in any2unicode
return unicode(text, encoding, errors=errors)
File "/usr/lib/python2.7/encodings/utf_8.py", line 16, in decode
return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode byte 0x80 in position 0: invalid start byte
Finde ich ähnliche Frage. Aber ich war nicht in der Lage das problem zu lösen. Meine prog_w2v.py ist als unten.
import gensim
import time
start = time.time()
models = gensim.models.Word2Vec.load_word2vec_format('300features_40minwords_10context.txt', binary=True)
end = time.time()
print end-start," seconds"
Ich versuche zu generieren, das Modell mit code hier. Das Programm dauert etwa eine halbe Stunde, um das Modell generieren. Daher bin ich nicht in der Lage zu laufen, es viele Male zu Debuggen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie nicht laden Sie die Datei korrekt. Sie sollten verwenden der load() statt load_word2vec_format().
Die letztere wird verwendet, wenn trainieren des Modells mit dem C-code, und speichern Sie das Modell in einem binären format. Sie sind jedoch nicht speichern des Modells in einem binären format, und trainieren es mit python. So können Sie einfach den folgenden code und es sollte funktionieren:
Wenn Sie speichern Sie Ihr Modell mit:
Dann laden word2vec mit
load_word2vec_format
Methode würde das Problem verursachen. Machen es Arbeit, die Sie verwenden sollten:Dasselbe auch passieren, wenn Sie Sie speichern Modell mit:
Und dann laden wollen, mit
KeyedVectors.load
Methode. Verwenden Sie In diesem Fall:Als pro die anderen Antworten, ich weiß ja, wie Sie die Datei speichern ist wichtig, weil es bestimmte Möglichkeiten, um es zu laden, als gut. Aber, können Sie einfach die Flagge
unicode_errors='ignore'
überspringen dieses Thema und laden Sie das Modell, wie Sie wollen.Standardmäßig ist dieses flag auf 'strengen':
unicode_errors='strict'
.Gemäß der Dokumentation ausgeführt haben, wird die folgende gegeben, wie der Grund, warum Fehler wie dieser auftreten.
Alle der oben genannten Antworten sind hilfreich, wenn wir wirklich können Sie verfolgen, wie jedes Modell gespeichert wurde. Aber was ist, wenn wir haben eine Reihe von Modellen, die wir brauchen, um zu laden, und erstellen Sie eine Allgemeine Methode für Sie? Wir können das oben-flag, das zu tun.
Ich selbst habe Augenblicke erlebt, wo ich trainiere, mehrere Modelle mit der original
word2vec.c file
, aber wenn ich versuche es zu laden ingensim
einige Modelle wird geladen, und einige geben würde, die unicode-Fehler, die ich gefunden habe, die fahne oben zu sein, hilfreich und angenehm.Wenn Sie gespeichert Ihre Modell mit save () verwenden, müssen Sie die load () -
load_word2vec_format ist für das Modell generiert, die von google, nicht für das Modell generiert, die von gensim