使用手套矢量时出错



任何人都可以建议我如何解决此错误。我只是加载手套向量,当尝试迭代时,它显示此错误

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

这是一个解码问题,即它无法解码您要读取的数据。如果您尝试读取 csv,请在文件名中添加csv

看起来它说文件的第一个字节(位置 0(是0x80,除非这意味着在解码单个字符期间的某个时间点的位置 0。无论如何,这意味着它不是一个有效的 utf-8 文件。我不认识"lstm_glove_vectors"这个名字,所以有人训练了自己的向量或对原始分布式向量做了一些事情(至少重命名,也许是更多的处理(。此文件很可能不是纯文本文件。它可能是 gzip 或 zip 文件?还是二进制编码中的向量作为数字?

我只是尝试使用类似moreless命令查看内容,看看似乎有什么。

最后的可能性:Common Crawl-derived GloVe 向量的第一个版本确实有一些 Unicode 错误,因此如果您使用的是非常旧的数据文件,则可能会发生这种情况。但这个问题在2015年得到了解决。

最新更新