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

使用Universal Sentence Encoder计算AG-NEWS数据集类别相似度咨询

实现AG-NEWS类别相似度度量的可行思路

核心实现步骤

  • 步骤1:数据集分组采样
    先把AG-NEWS数据集按标签拆分为World、Sports、Business、Sci/Tech四个独立子集,每个子集均匀采样1000~5000条文本即可,样本量足够的情况下结果稳定性高,也无需全量计算浪费资源。
  • 步骤2:生成类别语义表征
    有两种成熟方案可选:
    • 方案1(简单易用):用Universal Sentence Encoder对每个类别下的所有采样文本生成句子嵌入,再对该类别所有嵌入向量取算术平均,得到对应类别的唯一中心表征向量
    • 方案2(贴合类别语义):额外生成四个类别名称的文本嵌入,和上述样本平均向量做加权融合(比如样本向量权重取0.8,类别名称向量权重取0.2),可以减少样本噪音带来的表征偏差
  • 步骤3:计算4×4相似度矩阵
    对4个类别的表征向量两两计算余弦相似度,最终输出的4×4矩阵就是你需要的类别相似度结果,矩阵对角线值恒为1(类别与自身的相似度最高)

简化代码示例

import tensorflow_hub as hub
import numpy as np
from sklearn.metrics.pairwise import cosine_similarity
from datasets import load_dataset

# 加载USE模型和AG-NEWS数据集
use_model = hub.load("https://tfhub.dev/google/universal-sentence-encoder/4")
ag_news = load_dataset("ag_news", split="train")

# 按标签分组存储对应类别的文本
class_texts = [[], [], [], []]
for item in ag_news:
    class_texts[item["label"]].append(item["text"])

# 每个类别采样2000条文本生成类别中心嵌入
class_embeddings = []
for texts in class_texts:
    sampled_texts = np.random.choice(texts, 2000, replace=False)
    embeddings = use_model(sampled_texts)
    class_center = np.mean(embeddings, axis=0)
    class_embeddings.append(class_center)

# 生成4*4相似度矩阵
similarity_matrix = cosine_similarity(class_embeddings)
print(similarity_matrix)

可选优化方向

  • 如果生成的相似度矩阵和预期的类别语义偏差较大,可以替换余弦相似度为PLDA等适配分类任务的度量方法,更贴合AG-NEWS的实际分类边界
  • 可以对样本做预处理,过滤掉长度过短、噪音过大的文本,提升类别表征的准确性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 14:06:00