余弦相似度涉及嵌入,我们是否必须嵌入整个句子/文本?

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

想象我有一些这样的代码。我正在使用编码函数来创建嵌入。然后,在我选择的所有模型都面向余弦相似度(而不是点积相似度)之后,我会根据这些计算计算余弦相似度得分。

我的问题是,您是否总是按原样嵌入整个字符串,或者您是否/可以在编码之前对两个字符串进行清理?停用词出来了。也许只保留名词或实体。这是一件事吗,或者结果字符串中的不连续性/非语法可能性会伤害我们吗?

from sentence_transformers import SentenceTransformer, util
model_name = 'sentence-transformers/multi-qa-mpnet-base-cos-v1'
model = SentenceTransformer(model_name)
phrase1 = 'Some arbitrarily long string from a book'
phrase2 = "This is a another arbitrarily long string from the same book'    
emb1 = model.encode(phrase1)
emb2 = model.encode(phrase2)

我得到了余弦相似度,但分布得不太好。好的比赛和坏的比赛之间没有足够的区别。

word-embedding cosine-similarity sentence-transformers
1个回答
0
投票

由于您正在使用句子嵌入,因此对整个句子进行编码更有意义。

为了增加分离度,另一种方法可能是,如果您了解大多数文本所属的类别,那么您可以使用零样本分类器为每个类别的每个文本给出分数。您可以像半监督方法一样不断完善类别。

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