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

使用Word2Vec时遇‘空字符串不在词汇表’KeyError问题求助

解决Word2Vec句子向量转换时的KeyError问题

错误原因

  • 你用re.split(" |;", row)拆分文本时,会生成空字符串''——比如遇到连续空格、分号前后带空格,或者文本开头/结尾是分隔符的情况,都会出现这种空元素。
  • 而训练Word2Vec模型时,用的是nltk.word_tokenize的分词结果,这个过程不会产生空字符串,因此空字符串不在模型的词汇表中,调用model.wv['']就会触发KeyError。

解决方法

方法1:过滤拆分结果中的空字符串

直接在拆分后剔除空元素,避免传入不存在的词汇:

import re
train_vectors = [model.wv[word for word in re.split(" |;", row) if word.strip() != ''] for row in concatenated_text]

方法2:统一分词方式(更推荐)

既然训练模型用的是nltk.word_tokenize,生成向量时也应该用相同的分词逻辑,保证词汇完全匹配,同时避免手动拆分的漏洞:

def tokenize_concat_text(text):
    # 按分号拆分双语句子,过滤空内容
    sentences = [s.strip() for s in text.split(';') if s.strip()]
    # 对每个句子用nltk分词后合并
    tokens = []
    for s in sentences:
        tokens.extend(nltk.word_tokenize(s))
    return tokens

train_vectors = [model.wv[tokenize_concat_text(row)] for row in concatenated_text]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 18:15:40