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

如何使用Word2Vec生成句向量?调用Word2Vec的vectorize属性报错如何解决?

报错原因

  • 核心问题:Gensim的Word2Vec类本身没有内置vectorize方法,你调用了不存在的属性才触发了AttributeError。
  • 隐藏问题:你传入Word2Vec的sentences参数格式也大概率不符合要求,Word2Vec要求输入的语料是分词后的嵌套列表结构(每一条样本对应一个分词后的词语列表),如果df['plot']是未分词的字符串,训练出来的模型也无法正常使用。
  • 版本兼容提示:如果你用的是Gensim 4.0及以上版本,原size参数已经更名为vector_size,否则训练阶段也可能触发参数报错。

修复方案

Word2Vec原生输出的是单个词的向量,要得到整句向量,最通用的做法是将句子中所有有效词的词向量取平均值即可,自己实现对应逻辑就能解决问题。

修复后的完整代码

import pandas as pd
from gensim.models import Word2Vec
# 中文语料用结巴分词,英文语料可替换为nltk等对应分词工具
import jieba 

# 1. 读取数据+预处理分词
df = pd.read_csv('after stopwords.csv')
# 如果你的plot列已经是分词后的列表格式,可跳过下面的分词步骤
df['plot_cut'] = df['plot'].apply(lambda x: jieba.lcut(str(x)))

# 2. 训练Word2Vec模型
# Gensim 3.x版本把vector_size换成size即可
model = Word2Vec(sentences=df['plot_cut'], vector_size=100, window=10, min_count=3, workers=4, sg=0)
word_vectors = model.wv # 取出训练好的词向量表

# 3. 自定义句子向量生成函数
def get_sentence_vector(sentence_cut):
    # 过滤掉不在词表中的低频词/未登录词
    valid_words = [word for word in sentence_cut if word in word_vectors]
    if not valid_words: # 无有效词时返回全0向量
        return [0]*100
    # 所有有效词的向量取平均得到句子向量
    return list(word_vectors[valid_words].mean(axis=0))

# 4. 批量生成句子向量
df['plot_vector'] = df['plot_cut'].apply(get_sentence_vector)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 12:54:04