Ошибка при использовании вектора перчатки - PullRequest
0 голосов
/ 25 мая 2020

Кто-нибудь может посоветовать мне, как решить эту ошибку. Я просто загружаю вектор перчатки, и при попытке выполнить итерацию он показывает эту ошибку

embeddings_index = dict()
f = open('/content/drive/My Drive/lstm donor/lstm_glove_vectors')
for line in f:
    values = line.split()
    word = values[0]
    coefs = asarray(values[1:], dtype='float32')
    embeddings_index[word] = coefs
f.close()


---------------------------------------------------------------------------
UnicodeDecodeError                        Traceback (most recent call last)
<ipython-input-79-3373015fdc0b> in <module>()
      1 embeddings_index = dict()
      2 with open('/content/drive/My Drive/lstm donor/lstm_glove_vectors','r',encoding='utf-8') as f:
----> 3   for line in f:
      4           values = line.split()
      5           word = values[0]

/usr/lib/python3.6/codecs.py in decode(self, input, final)
    319         # decode input (taking the buffer into account)
    320         data = self.buffer + input
--> 321         (result, consumed) = self._buffer_decode(data, self.errors, final)
    322         # keep undecoded input until the next call
    323         self.buffer = data[consumed:]

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 0: invalid start byte

Ответы [ 2 ]

0 голосов
/ 25 мая 2020

Похоже, что первый байт файла (позиция 0) равен 0x80, если только это не означает позицию 0 в какой-то момент во время декодирования отдельного символа. В любом случае это означает, что это недопустимый файл utf-8. Я не узнаю имя lstm_glove_vectors, поэтому кто-то обучил свои собственные векторы или сделал что-то (по крайней мере, переименование, возможно, дополнительную обработку) с исходными распределенными векторами. Скорее всего, этот файл не является простым текстовым файлом. Это может быть файл в формате gzip или zip? Или векторы в двоичной кодировке в виде чисел?

Я бы просто попробовал посмотреть содержимое с помощью команды more или less и посмотреть, что там кажется.

Окончательная возможность: самый первый выпуск В общих векторах GloVe, полученных с помощью сканирования, действительно было несколько ошибок Unicode, поэтому это могло произойти, если вы используете очень старый файл данных. Но эта проблема была исправлена ​​в 2015 году.

0 голосов
/ 25 мая 2020

Это проблема декодирования, т.е. он не может декодировать данные, которые вы хотите прочитать. Если вы попытаетесь прочитать csv, добавьте csv к имени файла.

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