Импорт векторов GloVe в gensim. UnicodeDecodeError: кодек «utf-8» не может декодировать байт 0xe6 в позиции 0: недопустимый байт продолжения - PullRequest
0 голосов
/ 29 октября 2019

Я создал векторы GloVe, используя код, предоставленный https://github.com/stanfordnlp/GloVe/blob/master/demo.sh, используя мой собственный корпус. Итак, у меня есть и файлы .bin, и файлы .txt. Я пытаюсь импортировать эти файлы в gensim, чтобы я мог работать с ними так же, как я могу использовать векторы word2vec.

Я пытался изменить загрузку, используя как двоичный формат, так и формат текстового файла, но в итоге получил толькоошибка травления:

models = gensim.models.Word2Vec.load(file)

Я пытался игнорировать ошибку Unicode, которая не работала. Я все еще получил ошибку Unicode.

model = gensim.models.KeyedVectors.load_word2vec_format(file, binary=True, unicode_errors='ignore')

Вот что у меня есть для моего кода прямо сейчас:

from gensim.models import KeyedVectors
import gensim
from gensim.models import word2vec

file = 'vectors.bin'
model = KeyedVectors.load_word2vec_format(file, binary=True, unicode_errors='ignore')  
model.wv.most_similar(positive=['woman', 'king'], negative=['man'])

Это сообщение об ошибке, которое я продолжаю получать:

Traceback (most recent call last):
  File "glove_to_word2vec.py", line 6, in <module>
    model = KeyedVectors.load_word2vec_format(file, binary=True)  # C  binary format
  File "/home/users/epair/.local/lib/python3.6/site- packages/gensim/models/keyedvectors.py", line 1498, in load_word2vec_format
    limit=limit, datatype=datatype)
  File "/home/users/epair/.local/lib/python3.6/site-packages/gensim/models/utils_any2vec.py", line 343, in _load_word2vec_format
    header = utils.to_unicode(fin.readline(), encoding=encoding)
  File "/home/users/epair/.local/lib/python3.6/site-packages/gensim/utils.py", line 359, in any2unicode
    return unicode(text, encoding, errors=errors)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe6 in position 0:  invalid continuation byte

Ошибка травлениябыло что-то вроде этого: Ошибка удаления при использовании Word2Vec.load ()

Формат текстового файла

1 Ответ

0 голосов
/ 29 октября 2019

Не ожидается, что будет работать простой .load() - он будет работать только с собственными моделями gensim, сохраненными с помощью соответствующего метода .save().

Однако .load_word2vec_format() должен работать с файлами в правильном формате.

Вы уверены, что файл в совместимом формате? (Загружается ли он в исходные инструменты Google word2vec.c, такие как исполняемые файлы distance или word-analogy?)

Вы также упомянули о формате .txt - пробовали ли вы загрузить этот файл (с binary=False)?

Если посмотреть на строку 343 из utils_any2vec.py (в версии gensim, которую вы, вероятно, используете), то, по-видимому, читается самая первая строка файла, которая должнана нем только 2 числа, разделенные пробелом: количество слов и число измерений. (То есть проблемы с кодированием ваших реальных токенов не должны даже затрагиваться.)

Если вы посмотрите на свой файл с помощью head -1 vectors.txt, это все, что вы видите? (Если нет, ваш GLoVe код не пишет правильный совместимый формат.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...