如何训练一个模型,导致两个新闻标题之间的相似性得分?

问题描述 投票:0回答:1

我正在尝试建立一个假新闻分类器,我在这个领域很新。我有一个专栏“title_1_en”,其中包含假新闻的标题和另一个名为“title_2_en”的专栏。有3个目标标签;如果“title_2_en”栏中的新闻标题同意,不同意或与第一栏中的新闻无关,则“同意”,“不同意”和“无关”。

我已经尝试在将句子的单词转换为向量之后计算两个标题之间的基本余弦相似度。这导致了余弦相似度得分,但这需要很多改进,因为根本没有考虑同义词和语义关系。

def L2(vector):
    norm_value = np.linalg.norm(vector)
    return norm_value

def Cosine(fr1, fr2):
    cos = np.dot(fr1, fr2)/(L2(fr1)*L2(fr2))
    return cos
nlp classification gensim cosine-similarity sentence-similarity
1个回答
0
投票

这里最重要的是你如何将两个句子转换成向量。有多种方法可以做到这一点,最天真的方式是:

  • 将每个单词转换为向量 - 这可以使用标准的预训练向量(如word2vec或GloVe)来完成。
  • 现在每个句子只是一个单词向量包。这需要转换为单个向量,即将完整句子文本映射到向量。有很多方法可以做到这一点。首先,只需取句子中的矢量包的平均值即可。
  • 计算两个句子向量之间的余弦相似度。

Spacy's similarity是一个开始平均技术的好地方。来自文档:

默认情况下,spaCy使用平均向量算法,使用预先训练的向量(如果可用)(例如en_core_web_lg模型)。如果不是,则使用doc.tensor属性,该属性由标记器,解析器和实体识别器生成。这就是en_core_web_sm模型提供相似之处的方式。通常,基于.tensor的相似性将更具结构性,而单词矢量相似性将更具局部性。您还可以自定义.similarity()方法,以提供您自己的相似度函数,该函数可以使用监督技术进行训练。

© www.soinside.com 2019 - 2024. All rights reserved.