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

如何将Word2Vec模型应用于Pandas DataFrame列并解决调用错误?

问题解决:将Word2Vec词嵌入应用到Pandas DataFrame列

错误原因

model.wv是KeyedVectors对象,本身不可调用,不能直接传给apply()方法——apply()需要接收一个可调用函数来处理每行文本。

正确实现步骤

1. 确保文本已分词

Word2Vec模型的输入必须是分词后的单词列表,如果你的tweet_text列是原始字符串,需要先做分词处理:

import pandas as pd
from gensim.models import Word2Vec
import nltk
from nltk.tokenize import word_tokenize

# 若未下载分词工具,先执行
# nltk.download('punkt')

# 对原始文本分词
df['tokenized_text'] = df['tweet_text'].apply(word_tokenize)

2. 训练Word2Vec模型

用分词后的列训练模型:

model = Word2Vec(df['tokenized_text'], sg=1, window=10, min_count=1, workers=4)

3. 定义文本向量生成函数

单条文本包含多个单词,需要将每个单词的词嵌入聚合为一个文本向量(常用方式是取平均):

def get_text_embedding(tokens):
    # 过滤模型中不存在的词
    valid_embeddings = [model.wv[token] for token in tokens if token in model.wv]
    if not valid_embeddings:
        # 若所有词都不在模型中,返回全0向量(维度与模型一致)
        return [0.0] * model.vector_size
    # 取所有有效词嵌入的平均值
    return pd.Series(sum(valid_embeddings) / len(valid_embeddings))

4. 生成嵌入列并查看结果

df['embeddings'] = df['tokenized_text'].apply(get_text_embedding)
# 查看前5行
print(df[['tweet_text', 'embeddings']].head(5))

补充说明

  • 如果你的tweet_text列已经是分词后的列表,可跳过第一步的分词步骤,直接用该列训练模型和生成嵌入。
  • 除了平均聚合,也可以根据需求使用加权平均、最大值池化等方式生成文本向量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 11:04:54