Konvertieren Sie die Word2vec-Bin-Datei in Text
Aus der word2vec Seite, die ich herunterladen kann GoogleNews-vectors-negative300.bin.gz. Die .bin-Datei (3,4 GB) ist ein Binärformat, welches nicht nützlich für mich. Tomas Mikolov versichert unsdass "sollte Es ziemlich einfach zu konvertieren das binäre format, text-format (obwohl, nehmen mehr Speicherplatz). Überprüfen Sie den code in der Entfernung-tool, es ist ziemlich trivial zu Lesen, Sie die binäre Datei". Leider weiß ich nicht genug C um zu verstehen,http://word2vec.googlecode.com/svn/trunk/distance.c.
Angeblich gensim kann dies auch tun, aber alle tutorials die ich gefunden habe, zu sein scheinen, über die Konvertierung von text, nicht die andere Weise.
Kann jemand empfehlen änderungen an der C-code oder Anweisungen für gensim zu emittieren text?
InformationsquelleAutor der Frage Glenn | 2014-12-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich benutze diesen code zum laden von Binär-Modell, dann das Modell speichern, um text-Datei,
Referenzen: API und nullege.
Hinweis:
Obige code ist für neue version von gensim. Für vorherigen version, ich habe diesen code:
InformationsquelleAutor der Antwort silo
Auf dem word2vec-toolkit mailing-Liste, Thomas Mensink hat Antwort in form von ein kleines C-Programm, das zu konvertieren .bin-Datei in text um. Dies ist eine Modifikation der Ferne.c-Datei. Ich ersetzte den ursprünglichen Abstand.c mit Thomas-code unten und wieder aufgebaut word2vec (make clean; make), umbenannt und kompiliert Entfernung zum readbin. Dann
./readbin vector.bin
wird, erstellen Sie eine text-version von vector.bin.Entfernte ich die "\b\b" aus der
printf
.Durch die Art und Weise, die resultierende text-Datei enthält immer noch den text von word und einige unnötige Leerzeichen, die ich nicht wollen, für einige numerische Berechnungen. Ich entfernte die erste Spalte text und die nachfolgende leere aus jeder Zeile mit bash-Kommandos.
InformationsquelleAutor der Antwort Glenn
ist das format IEEE 754 single-precision binary floating-point-format: binary32
http://en.wikipedia.org/wiki/Single-precision_floating-point_format
Sie verwenden little-endian.
Machen lassen ein Beispiel:
vecSize, getByte bis byte=='\n')
Nächsten Zeile gehören die Vokabeln
Wort zuerst, und dann (300*4 byte float-Wert, 4 byte für jede
dimension):
dann die jeweils nächsten 4 byte wird zur Darstellung einer float-Zahl
nächsten 4 byte: 0 0 -108 58 => 0.001129150390625.
Können Sie den link zu wikipedia, um zu sehen, wie, lassen Sie mich hierzu ein Beispiel:
(little-endian -> umgekehrte Reihenfolge) 00111010 10010100 00000000 00000000
Wert = sign * exp * pre
InformationsquelleAutor der Antwort dbao50
Laden Sie sich die binary-Datei in word2vec, und speichern Sie dann die text-version wie folgt:
`
InformationsquelleAutor der Antwort batgirl
Ich bin mit gensim arbeiten mit den GoogleNews-Vektoren-negative300.bin und ich bin auch ein
binary = True
- flag beim laden des Modells.Scheint einwandfrei zu funktionieren.
InformationsquelleAutor der Antwort zaytsev
Ich hatte ein ähnliches Problem, ich wollte bin/nicht bin(gensim) Modelle Ausgabe als CSV-Datei.
hier ist der code, der bedeutet, dass auf python, vorausgesetzt, Sie haben gensim installiert:
https://gist.github.com/dav009/10a742de43246210f3ba
InformationsquelleAutor der Antwort David Przybilla
convertvec ist ein kleines tool zum konvertieren von Vektoren zwischen verschiedenen Formaten für die word2vec Bibliothek.
Vektoren konvertieren von Binär-text:
./convertvec bin2txt Eingang.bin output.txt
Vektoren konvertieren von text in Binär:
./convertvec txt2bin input.txt Ausgabe.bin
InformationsquelleAutor der Antwort Hamed Ganji
Hier ist der code den ich benutze:
InformationsquelleAutor der Antwort Franck Dernoncourt
Nur ein kurzes update, wie es jetzt ist, einfacher Weg.
Wenn Sie
word2vec
aus https://github.com/dav/word2vec es ist eine zusätzliche option namens-binary
akzeptieren1
zu generieren binären Datei oder0
zu generieren text-Datei. Dieses Beispiel stammt vondemo-word.sh
im repo:time ./word2vec -train text8 -output vectors.bin -cbow 1 -size 200 -window 8 -negative 25 -hs 0 -sample 1e-4 -threads 20 -binary 0 -iter 15
InformationsquelleAutor der Antwort Yohanes Gultom
Wenn Sie die Fehlermeldung erhalten:
dann ist es, weil es war ein API-update. Dies funktioniert:
InformationsquelleAutor der Antwort Raphael Schumann