我一直在想这件事,想从人民党那里征求意见。
如果您知道当矢量的长度或矢量项的权重不需要成为区分因素时,余弦相似度对于数据点之间的距离度量非常有意义。例如,如果我们使用欧几里得距离,则使用tf-idf向量将小文本与长文本文档进行比较会大为偏斜。
默认情况下,余弦相似度针对文档的长度进行了归一化,因此在这些情况下是正确的选择。
但是,当文本向量由tf或tf-idf向量表示时,这一切都是有意义的,因为长文档的tf值会影响欧几里得距离度量。
但是,如果我们使用任何词嵌入算法的word2vec或Glove或Fasttext表示带有词嵌入的文本文档,则生成的词向量实际上就是经过训练以获取嵌入的神经网络的权重。
在这种情况下,矢量权重并不表示文档或其他内容的长度。
那么为什么余弦相似度仍然是两个文本距离的最佳度量?
例如如果我们有以下几点由文本的单词向量表示。
现在,如果我想使用1个最近的邻居来找到灰点的类别(最左下方),如果我使用余弦相似度,则灰点的1NN实际上是成人类别中最右上最红的点。
但是实际上类似于灰色的点是其上方的蓝色点。
因此,在这些情况下,我们认为余弦相似度没有意义,但是欧几里德距离更有意义。
如果这些要点不过是单词嵌入所代表的单个文本文档,那么我们不应该使用ED而不是余弦相似度吗?
因此,问题就来了,对于使用单词嵌入的文本文档,ED是距离测量或余弦相似度的更好选择吗?
对于使用tf-idf的文本文档,我们知道它的余弦,因为它可以对文档长度进行归一化,该长度由各个术语频率表示