我必须使用包含大量中文字符的word2vec模块。该模块由我的同事使用Java进行培训,并保存为bin文件。
我安装了gensim并尝试加载模块,但发生了以下错误:
In [1]: import gensim
In [2]: model = gensim.models.Word2Vec.load_word2vec_format('/data5/momo-projects/user_interest_classification/code/word2vec/vectors_groups_1105.bin', binary=True)
UnicodeDecodeError: 'utf-8' codec can't decode bytes in position 96-97: unexpected end of data
我试图在python 2.7和3.5中加载模块,以同样的方式失败。那么如何在gensim中加载模块呢?感谢。
答案 0 :(得分:6)
该模块是由Java培训的大量汉字。我无法弄清楚原始语料库的编码格式。该错误可以解决为gensim FAQ,
中的描述使用带有标志的load_word2vec_format来忽略字符解码错误:
In [1]: import gensim
In [2]: model = gensim.models.Word2Vec.load_word2vec_format('/data5/momo-projects/user_interest_classification/code/word2vec/vectors_groups_1105.bin', binary=True, unicode_errors='ignore')
但我不知道忽略编码错误是否重要。
答案 1 :(得分:1)
我试过了旗帜
unicode_errors='ignore'
但它无法解决unicode问题。
我检查了将文件从filename.bin.gz重命名为filename.gz后出现unicode错误。
我的解决方案是提取压缩文件,而不是重命名。
然后我使用带有上面标志的文件,没有unicode错误。
请注意,我使用Mac(Sierra)和python 2.7。