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

使用Spacy词向量实现预测的正确方式及相关技术疑问

假新闻标题分类:两个问题的解决方案

1. 如何对新句子进行预测

现有代码仅完成了训练与测试集评估,要对新句子做预测,需要复刻训练时的文本向量生成→特征缩放→模型预测完整流程,具体步骤如下:

  • 用训练阶段加载的spaCy模型处理新句子,生成对应向量
  • 用训练集拟合好的MinMaxScaler对向量做缩放(必须复用训练时的scaler,不能重新拟合)
  • 用训练好的分类器完成预测,最后将数值标签转回原分类(Fake/Real)

直接在现有代码末尾添加以下预测逻辑即可:

import numpy as np

def predict_fake_real(new_text):
    # 生成新句子的向量
    doc = nlp(new_text)
    text_vector = doc.vector
    # 转换为2D数组(scaler要求输入为二维格式)
    vector_2d = text_vector.reshape(1, -1)
    # 用训练好的scaler做特征缩放
    scaled_vector = scaler.transform(vector_2d)
    # 预测数值标签并转回原分类
    pred_label_no = clf.predict(scaled_vector)[0]
    return "Real" if pred_label_no == 1 else "Fake"

# 测试示例
test_sentence1 = "White House Announces New Climate Change Initiative"
test_sentence2 = "Alien Invasion Confirmed by Secret Government Documents"
print(predict_fake_real(test_sentence1))
print(predict_fake_real(test_sentence2))

注意:nlp、scaler、clf三个对象必须是训练完成后的状态,不能重新初始化。如果需要离线复用模型,可使用joblib将scaler和分类器保存到本地文件。

2. doc.vector和doc.vector.values的区别

核心结论:spaCy的Doc对象的vector属性本身就是numpy.ndarray类型的数值数组,不存在.values这个属性——.values是pandas Series/DataFrame专属的属性,用于提取底层的numpy数组集合,和spaCy的向量生成逻辑无关。

你没发现差异的原因是:代码里正确使用了doc.vector生成向量,而没有尝试错误的doc.vector.values(如果写后者会直接触发AttributeError)。教程中的说法大概率是笔误,混淆了pandas的操作逻辑(比如提取Series中所有向量时会用到df.Text_vector.values)和spaCy的向量调用方式。

简单总结:

  • doc.vector:正确用法,直接获取spaCy生成的句子向量(numpy数组)
  • doc.vector.values:错误用法,numpy数组无此属性,会引发报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 07:15:34