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

如何将FastText输出的词向量输入神经网络用于电影类型分类

方案可行性结论

通过FastText获取词向量后输入神经网络完成电影类型分类的方案是完全可行的,相比常规的TF-IDF输入方案,FastText词向量能保留词语的语义关联信息,在分类任务上通常能取得更好的效果。

现有代码的问题

你当前的FastText训练语料使用了movies_new['genre_new']即电影类型标签数据,而非电影剧情/摘要语料,才会出现输入整段剧情文本时,返回的相似结果都是电影题材标签的异常输出,不符合分类任务的前置要求。

正确实现流程

  • 第一步:调整FastText训练语料,替换为全量的电影剧情/摘要文本,训练得到适配当前任务场景的词向量表,原有FastText的维度、窗口等参数可根据效果迭代调整。如果你的剧情语料规模较小,也可以直接加载FastText官方预训练的对应语言词向量,无需自行训练,效果更稳定。
  • 第二步:将单条电影剧情文本转换为可输入神经网络的固定格式,常见转换方式有两类:
    • 平均池化句向量:将文本中所有有效词的FastText向量取平均值,作为整条文本的向量表示,可直接输入全连接神经网络训练,实现成本最低
    • 序列矩阵:将文本中每个词的向量按语序拼接为二维矩阵,输入CNN、LSTM等可处理序列特征的神经网络,能捕获语序关联,分类精度通常更高
  • 第三步:根据任务是单标签分类(一部电影仅对应一个类型)还是多标签分类(一部电影可对应多个类型),选择对应输出层激活函数与损失函数即可:单标签用softmax激活+多分类交叉熵损失,多标签用sigmoid激活+二分类交叉熵损失。

示例代码

import numpy as np

# 文本转平均池化句向量
def get_text_vector(text, ft_model, vec_dim=100):
    word_list = text.strip().split()
    # 筛选词向量表中存在的词
    valid_vecs = [ft_model.wv[word] for word in word_list if word in ft_model.wv]
    if not valid_vecs:
        return np.zeros(vec_dim)
    # 取平均得到句向量
    return np.mean(valid_vecs, axis=0)

# 构造训练集特征和标签
train_X = np.array([get_text_vector(plot, model_ted) for plot in movies_new['plot_content']])
# 标签需提前做编码处理,单标签做LabelEncoder,多标签做MultiLabelBinarizer
train_y = movies_new['encoded_genre'].values

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 09:33:03