You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

训练保存GloVe模型后加载触发UnicodeDecodeError错误求助

GloVe模型加载报错:'utf-8' codec can't decode byte 0x80 in position 0

错误原因

你用glove.save()保存的是glove-python库的二进制序列化模型,而KeyedVectors.load_word2vec_format()是Gensim中用于加载Word2Vec标准格式(文本或二进制)的方法,两者格式不兼容,导致解码失败。

解决方法

方法1:用glove-python库原生方法加载

直接使用Glove类的load方法读取保存的模型,这是最直接的方式:

from glove import Glove

# 加载模型
glove_model = Glove.load("gloves.model")

# 使用示例:获取词向量
word = "example_word"
if word in glove_model.dictionary:
    vec_idx = glove_model.dictionary[word]
    word_vector = glove_model.word_vectors[vec_idx]

方法2:转换为Word2Vec格式后加载

如果必须用KeyedVectors加载,先将GloVe模型导出为Word2Vec兼容的文本格式,再读取:

# 先加载原模型
from glove import Glove
glove_model = Glove.load("gloves.model")

# 导出为Word2Vec文本格式
with open("glove_word2vec.txt", "w", encoding="utf-8") as f:
    # 第一行写入词汇总数和向量维度
    f.write(f"{len(glove_model.dictionary)} {glove_model.no_components}\n")
    # 遍历所有词汇,写入词和对应的向量
    for word, idx in glove_model.dictionary.items():
        vector_str = " ".join(map(str, glove_model.word_vectors[idx]))
        f.write(f"{word} {vector_str}\n")

# 用KeyedVectors加载转换后的文件
from gensim.models import KeyedVectors
glove_model = KeyedVectors.load_word2vec_format("glove_word2vec.txt", binary=False, unicode_errors='ignore')

注意事项

  • 处理罗马乌尔都语文本时,全程统一使用utf-8编码,避免编码混乱
  • 确认你使用的是glove-python库而非Gensim的GloVe实现,两者的保存/加载逻辑不同

内容的提问来源于stack exchange,提问作者Nadeem Qamar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 19:06:15