问题标签 [cosine-similarity]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
242 浏览

cosine-similarity - 计算余弦相似度的不同文档长度?

当我想在两个具有不同单词数的文档之间找到余弦相似度时,有什么规则吗?

0 投票
1 回答
3459 浏览

r - 如何使用 R 通过余弦相似度有效地检索前 K 相似向量?

我正在研究一个高维问题(约 4k 项)并且想检索前 k 相似(通过余弦相似度)并且无法进行成对计算。

我的训练集是 600 万 x 4k 矩阵,我想对 600k x 4k 矩阵进行预测。

为我的 600k x 4k 矩阵中的每个项目检索 k 相似项目的最有效方法是什么?

理想情况下,我想得到一个 600k x 10 的矩阵(即,600k 个项目中每个项目的前 10 个相似项目)。

ps:我研究了SO网站,发现几乎所有“R中的余弦相似度”问题都参考cosine_sim(vector1, vector2)。但这个问题指的是cosine_sim(matrix1, matrix2)

更新 以下代码使用一种简单的方法来查找测试集中每一行与训练集中每一行之间的余弦相似度。

当我使用 5000x200 矩阵进行训练和 2000x200 矩阵进行测试时,运行相同的函数需要超过 380 秒。

理想情况下,我希望看到一些不需要计算每一行之间相似度的想法。如果这是不可能的,一些关于如何向量化上述代码的指针将会很有帮助。

0 投票
2 回答
1465 浏览

probability - 测量向量之间的距离

我有一组 300.000 个左右的向量,我想以某种方式进行比较,并且给定一个向量,我希望能够找到我想到的三种方法中最接近的向量。

  • 简单欧几里得距离
  • 余弦相似度
  • 使用内核(例如 Gaussian)来计算 Gram 矩阵。
  • 将向量视为离散概率分布(这样做是有意义的)并计算一些散度度量。

我真的不明白什么时候做一个而不是另一个有用。我的数据有很多零元素。考虑到这一点,对于这三种方法中哪一种最好,是否有一些一般的经验法则?

抱歉这个弱问题,但我必须从某个地方开始......

谢谢!

0 投票
0 回答
328 浏览

cosine-similarity - 成对余弦相似度

看了这篇论文有点迷茫:Pairwise Document Similarity in Large Collections with MapReduce http://www.umiacs.umd.edu/~jimmylin/publications/Elsayed_etal_ACL2008_short.pdf 在这篇论文中,作者好像没有考虑word只出现在一个文档中,但是根据余弦相似度的定义,我们需要考虑这种情况,对吧?

我使用的材料是这样的:https ://www.dropbox.com/s/nctb66hh84ab32c/postings-Reuters-data

我使用的java代码是这样的:https ://www.dropbox.com/s/aklviixup4uulmu/CosineSimilarity.java

我生成的结果是这样的:https ://www.dropbox.com/s/ea6ov7l7yut7yfj/part-00000

在结果中,我看到很多 1 甚至大于 1 的数字。我觉得这有点奇怪,有人可以帮我找出原因吗?谢谢。

0 投票
1 回答
55 浏览

python - 在执行 TF-IFcosine 相似性时添加 stop_words

我正在使用 sklearn 来执行余弦相似度。

有没有办法将所有以大写字母开头的单词视为停用词?

0 投票
0 回答
2965 浏览

r - 距离矩阵中的分类特征

我正在计算两个特征向量之间的余弦相似度,并想知道是否有人可以巧妙地解决以下关于分类特征的问题。

目前我有(示例):

效果很好。

但是假设我想添加一个分类变量,例如城市,以生成一个特征,当两个城市相等时为 1,否则为 0。

在这种情况下,示例特征向量将是:

我想知道是否有一种巧妙的方法可以在函数中动态生成最后一个特征的成对相等性,以使其保持矢量化实现?

我已经尝试预处理为每个类别制作二进制标志,这样上面的例子就会变成这样:

这可行,但问题是这意味着我必须对每个变量进行预处理,在某些情况下,我可以看到类别的数量变得非常大。当我想要生成一个返回 1 表示相等而返回 0 的特征时,这似乎相当昂贵/效率低下(假设这里存在复杂性,因为它本质上是一个依赖于两条记录并在它们之间共享的特征)。

我可以看到的一个解决方案是只编写一个循环来构建每对特征向量(我可以构建一个特征,例如 [is_same_city]=1/0 并在我们相等时为每个向量设置为 1,否则为 0)和然后获得距离-但是当我尝试扩展时,这种方法会杀死我。

我希望我的 R 技能还不够完善,并且有一个巧妙的解决方案可以满足大多数情况...

任何建议都非常欢迎,谢谢

0 投票
0 回答
222 浏览

r - 聚类,但有条件(在 R 中)

我正在使用每个文档之间的余弦相似度对文档进行一些聚类。这可以。但是我的问题有点奇怪,因为我只想将某些文档与其他文档进行聚类,而不是将所有文档相互关联。这是一个例子......

我有两个带有 3 个标签的电子表格。我想在文档之间聚集彼此相似但不在文档内部的标签,例如

  • Doc1:有标签:性别和性别、烟草使用年限、当前年龄

  • Doc2:有标签:性别、现在年龄、使用时间

我想在两个文档之间而不是文档内部对标签进行聚类,所以我创建了一个相似度矩阵,如下所示:

其中同一文档中标签之间的余弦相似度设置为NA。问题是 agnes 和其他层次聚类方法不接受 NA 值。所以我该怎么做?我在想这个错误的方式吗?

0 投票
1 回答
856 浏览

java - 查找文档相似性的最佳方法

我是 NLP 新手,我想找出两个文档之间的相似性

我用谷歌搜索,发现有一些方法可以做到这一点,例如

最好的方法是什么(我也对其他方法开放),我们可以获得高精度,如果java中有一些API可以做到这一点,请告诉我

0 投票
1 回答
1397 浏览

hadoop - mapreduce方式计算用户相似度矩阵

我有一个包含许多用户(超过 1000 万)的列表,每个用户都由一个用户 ID 表示,后跟 10 个浮点数表示他们的偏好。我想使用基于 mapreduce 的余弦相似度有效地计算用户相似度矩阵。但是,由于值是浮点数,因此在 mapreduce 框架中很难确定键。有什么建议么?

0 投票
2 回答
3196 浏览

machine-learning - 具有余弦距离的 K 均值

我必须使用 k-means 编写该集群的程序。我有 TF-IDF 和看起来像这样的余弦相似度

我有 2 均值的输出,它与第一个质心分成两组:D1 和 D2,因为它们的相似性最低(0.17)所以组是 {D1, D5} 和 {D2, D3, D4} 但如果我必须选择3-means?那么我该如何选择我的起始质心?

还有一件事我不明白,我正在使用我的 TF-IDFS,如下所示:

并为我的小组制作新的质心

组 1:T1- 0.2 T2- 0.1 T3- 0.6 组 2:T1- 0.4 T2- 0.4(6) T3-0.2

现在我该怎么做才能再次将我的文档分配给新的质心?我现在必须计算质心和文档之间的余弦吗?我把它放在那里的 cos 值是否高于组质心?