问题标签 [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 回答
112 浏览

similarity - 如何确定一个版本中文件的文本块来自上一版本中的哪个文件?

问题描述如下:假设我有一个版本的文件列表(比如 A、B、C、D)。在下一个版本中,我有以下文件(A、E、F、G)。它们的内容有一些相似之处。后期版本的文件来自于前期版本,文件名重命名、内容增删或部分修改或不作任何改动(如A未改动)。

我从一个文件(E,第 2 版)中获取一段文本,并检查哪些文件(在第 1 版中)包含此文本块。我发现 B、C 和 D 包含文本片段。我想确定这个文本块实际上来自哪个文件(B 或 c 或 d)。(我假设 E 是第二个版本中名称更改的文件)。

由于后面的版本可能会更改、添加或删除内容,所以为了确定相似度,我使用了 LCS 算法。但我无法将文件与其以前的版本映射。我认为一种可能的方法可能是使用匹配文本块的位置信息。但这种启发式方法并不总是有效。是否有任何研究或算法可以找到这一点。任何方向都会有所帮助。提前致谢。

0 投票
7 回答
54263 浏览

arrays - 查找两个数组之间的余弦相似度

我想知道R中是否有一个内置函数可以找到两个数组之间的余弦相似度(或余弦距离)?

目前,我实现了自己的功能,但我不禁认为 R 应该已经自带了。

0 投票
1 回答
1046 浏览

lucene - 自定义相似类上的 Lucene numDocs 和 doqFreq

我在用 Lucene 做一个应用程序(我是一个菜鸟)并且我面临一些问题。我的应用程序使用具有自定义相似性实现的 Lucene 2.4.0 库(导入了 jar)

在我的应用程序中,我手动计算 doqFreq 和 numDocs (我添加所有索引的值,然后我计算一个全局值以便在每个查询中使用它)并且我想在自定义相似性实现中使用该值以计算新的以色列国防军。

问题是我不知道如何在新的相似性实现上使用(或发送)我的应用程序中的新 doqFreq 和 numDocs 值,因为我不想在这个额外的类之外更改 lucene 的代码。

有什么建议或例子吗?我阅读了文档,但我现在不知道如何解决这个问题:s

谢谢

0 投票
2 回答
4374 浏览

cluster-analysis - 余弦相似度度量:多个结果

我的程序使用聚类来生成相似项目的子集,然后使用余弦相似度度量作为确定聚类相似程度的方法。例如,如果用户 1 有 3 个集群,用户 2 有 3 个集群,则每个集群相互比较,将产生 9 个使用余弦相似度度量的结果,例如 [0.3, 0.1, 0.4, 0.12, 0.0, 0.6, 0.8, 1.0, 0.22]

我的问题是,基于这些结果,我如何将这些值转化为有形的结果,以显示这两个用户的相似程度?

我制作的一个简单方法是将所有值除以比较次数,然后将它们加在一起得到 1 个值,但这是一种非常简单的方法。

谢谢,

作为


我试图实现的基本描述是,是否有可能从社交书签网络服务 Delicious.com 中确定两个用户的书签和标签有多相似。

到目前为止,我已经根据用户书签的标签和每个标签的共现创建了集群,例如一个集群可以是:

另一个用户可能有一个从他们的标签产生的类似集群:

该数字表示标签在保存的书签中与此示例中的标签“水果”共同出现的次数。

我已经使用余弦相似度度量来比较这些集群以确定它们的相似程度,并且从我最初的问题来看,有许多集群比较结果(将每个用户集群与另一个用户集群进行比较)我不确定如何聚合结果以产生有意义的结果。

很有可能我一直不正确地使用余弦相似度,

0 投票
1 回答
1409 浏览

java - 关于字符串相似度度量 (Java) 的建议。距离,听起来还是组合?

过程的一部分需要应用字符串相似度算法。

这个过程的结果将被存储并产生让我们说 SS_Dataset。

基于此数据集,必须做出进一步的决定。

我的问题是:

  • 我应该应用一种或多种字符串相似性算法来生成 SS_Dataset 吗?

  • 计算“距离”和“听起来像”相似度的算法之间的任何比较?

一组算法是否比另一组产生更准确的结果?组合是否能提供更准确的相似性结果?

  • 你能推荐你使用过的实现吗?

我的实现将包括来自以下库的包

http://www.dcs.shef.ac.uk/~sam/simmetrics.html

http://jtmt.sourceforge.net/

0 投票
1 回答
1503 浏览

performance - 非常快速的文档相似度

我正在尝试尽快确定单个文档与大量文档(n ~= 100 万)中的每一个之间的文档相似性。更具体地说,我比较的文件是电子邮件;它们被分组(即,有文件夹或标签),我想确定哪个组最适合新电子邮件。快速性能至关重要。

我的先验假设是术语向量之间的余弦相似度适合此应用程序;请评论这是否是一个很好的措施!

我已经考虑了以下提高性能的可能性:

  1. 预归一化所有术语向量

  2. 为每个组(n ~= 10,000)而不是每封电子邮件(n ~= 1,000,000)计算一个术语向量;这对于我的申请可能是可以接受的,但是如果您能想到不这样做的理由,请告诉我!

我有几个问题:

  1. 如果一封新电子邮件有一个在以前的任何电子邮件中从未见过的新术语,这是否意味着我需要重新计算我所有的术语向量?这似乎很昂贵。

  2. 是否有一些聪明的方法来只考虑可能接近查询文档的向量?

  3. 有什么方法可以让我为所有这些向量使用的内存量更加节俭吗?

谢谢!

0 投票
2 回答
687 浏览

database - 关于维度灾难

我的问题是关于我一直在阅读的这个主题。基本上我的理解是,在更高维度中,所有点最终都非常接近。

我的疑问是这是否意味着以通常的方式(例如欧几里得)计算距离是否有效。如果它仍然有效,这意味着在比较高维向量时,即使第三个可能完全不相关,两个最相似的向量与第三个向量也不会有太大差异。

它是否正确?那么在这种情况下,您如何判断您是否有匹配项?

0 投票
1 回答
3183 浏览

mysql - 如何在 MySQL 中按相似度进行匹配和排序?

目前,我正在做一个搜索功能。假设在我的数据库中,我有以下数据:

  • 关键字1
  • 关键字2
  • 关键字3
  • 关键的东西
  • 钥匙

并且用户输入:“Key”作为要搜索的关键字。这是我当前的查询:

基本上,我有两个问题:

  1. 如何按(排序)相似性排序。从上面的例子中,我想要“Key”作为我的第一个结果。我目前的结果是:Keyword1、Keyword2、Keyword3、Keysomething 和 Key

  2. 我的 SQL 查询只搜索“data_string”列,如果我想搜索其他列怎么办?我需要做这样的事情吗:

有没有比 Q2 更好/更快的查询?

0 投票
1 回答
1371 浏览

similarity - 关于余弦相似度

我发现文档之间的余弦相似度..我是这样做的

D1=(8,0,0,1) 其中 8,0,0,1 是术语 t1, t2, t3 , t4 的 tf-idf 分数

D2=(7,0,0,1)

cos(theta) = (56 + 0 + 0 + 1) / sqrt(64 + 49) sqrt(1 +1)

结果是

余弦(θ)= 5

现在我从这个值评估什么...我不明白 cos(theta)=5 意味着它们之间的相似性...我做对了吗?

0 投票
1 回答
2020 浏览

python - 将 python 协同过滤代码转换为使用 Map Reduce

使用 Python,我正在计算项目之间的余弦相似度。

给定代表购买(用户,项目)的事件数据,我有一个我的用户“购买”的所有项目的列表。

鉴于此输入数据

我建立了一个python字典

从那本字典中,我生成了一个购买/未购买矩阵,还有另一个字典(bnb)。

从那里,我通过计算 (1,1,0) 和 (1,1,1) 之间的余弦来计算 (1,2) 之间的相似度,产生 0.816496

我这样做是:

我认为蛮力方法正在杀死我,并且随着数据变大,它只会运行得更慢。使用我值得信赖的笔记本电脑,这个计算在处理 8500 个用户和 3500 个项目时会运行数小时。

我正在尝试计算我的 dict 中所有项目的相似性,它花费的时间比我想要的要长。我认为这是 MapReduce 的一个很好的候选者,但我在键/值对方面“思考”时遇到了麻烦。

或者,我的方法是否存在问题,不一定是 Map Reduce 的候选者?