问题标签 [sentence-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.
wordnet - 给定单词相似度推断句子相似度
假设我对两个句子中的每对单词都有一个单词相似度分数,那么从这些分数中确定整体句子相似度的体面方法是什么?
单词分数是使用来自表示每个单词的向量的余弦相似度来计算的。
既然我有单个单词的分数,那么将单个单词的分数相加并除以两个句子的总字数以获得两个句子的分数是否太天真了?
我已经阅读了有关进一步构建向量来表示句子的信息,使用单词分数,然后再次使用余弦相似度来比较句子。但是我不熟悉如何从现有的单词分数中构造句子向量。我也不知道与上面描述的幼稚方法相比有什么权衡,至少我可以很容易地理解。:)。
非常感谢任何见解。
谢谢。
cosine-similarity - word2vec,总和还是平均词嵌入?
我使用 word2vec 将一个小短语(3 到 4 个单词)表示为唯一向量,方法是添加每个单独的单词嵌入或计算单词嵌入的平均值。
从我所做的实验中,我总是得到相同的余弦相似度。我怀疑这与训练后由 word2vec 生成的词向量被归一化为单位长度(欧几里得范数)有关吗?或者我的代码中有错误,或者我遗漏了一些东西。
这是代码:
这是输出:
我正在使用此处定义的余弦相似度 Cosine Similarity (Wikipedia)。规范和点积的值确实不同。
谁能解释为什么余弦是一样的?
谢谢你,大卫
algorithm - 如何使用 WordNet 路径算法计算两个字符串中单词的语义相似度
我有一串单词说s1。我在其他集合中也有多个字符串,例如 s2、s3、s4。
我想将字符串 s1 中的单词与每个字符串 s2、s3 等进行匹配。根据最大相似度得分,我想找出 s2、s3 中的哪些字符串与 s1 最大匹配。
我想使用 wordNet 的 PATH 算法。请建议,什么应该是最好的方法。
mysql - MySQL VARCHAR 列中的相似值
我有一个用于存储餐厅名称和它们所在城市的数据库表。示例:
姓名 | 城市
十一麦迪逊公园| 高分辨率照片| CLIPARTO 纽约市
格拉梅西酒馆| 高分辨率照片| CLIPARTO 纽约市
暹罗莲花 | 托克
现代 | 洛杉矶
ABC厨房| 洛杉矶
现在当INSERT之前有一个传入的条目,如果同一个城市没有类似的餐厅名称,我想继续执行插入。
但是如果条目是这样的,比如 { name: "Eleven Madison", city: "NYC" },我想在 "name" 列中找到具有相同城市的类似条目,在这个例子中,"NYC" 中的 "11 madison park" ”,我想插入并在“冲突”表中存储一个新行 - 使用这些餐厅的 ID(最后插入 id 和类似的行 id)
我使用了Levenshtein 距离算法,并带有以下 SQL 查询:
然后我将阈值设置为 8,如果 levsh 小于 8,则将其标记为冲突,即在“冲突”表中插入新记录。在表增长到 1000 条记录之前,此查询运行良好。现在这个查询需要 2 秒才能完成。
我知道这是因为我正在计算城市中所有餐馆的 levenshtein_ratio - 我只需要对 ex 的相似名称应用比率函数。那些包含 'Eleven' , 'Madison',.. 或者更好的是,如果我能做类似的事情
请提供有关如何改进和优化此查询的建议,如果可能的话,请提供任何更好的方法来解决我正在做的事情。
谢谢
python - 如何测量句子中的术语约束?
我试图找出一种方法来算法计算句子中单词的信息量,基于该单词缺失时句子的约束程度。例如,我如何计算“狐狸”这个词在句子中提供了多少信息:
“快速棕色的___跳过栅栏”
也就是说,在没有目标词的情况下,我如何计算用户填空的难度?
到目前为止,我已经尝试过一种方法,即查看目标词与所有周围词的总体 word2vec 语义相似性,但这似乎并不总是有效。是否有任何现有的工作已经完成?
php - preg_replace 占相似文本
我正在尝试做一个 preg_replace 考虑到模式中的类似文本。我的目标是从 OCR 软件输出的文本中删除给定的字符串(某些字母可能会混淆)。
让我们举一个代码示例:
注意: OCR 将第三个字母 a与 an混淆了c
o
。
在这里改进 OCR 不是一种选择或可能。
输入字符串:
Appartamento sito in Vioolo San Vincenzo, n.4 e censito al
上述调用 preg_replace 后的预期结果:
Appartamento sito in e censito al
实际结果:
Appartamento sito in Vioolo San Vincenzo, n.4 e censito al
在 PHP 函数的含义中,文本应该被认为是相似的,例如levenshtein()
, similar_texts()
(虽然我没有考虑soundex()
或者metaphone()
文本不是英文的)。
使用preg_replace
不是强制性的,但我至少需要能够根据与该模式等效的东西来评估字符串。
vector - Mahout - 向量之间的余弦距离 > 1
我正在使用 Mahout 的 CosineDistanceMeasure 类来计算向量之间的距离,表示为 DenseVectors。
现在,对于一些向量,方法 distance() 返回大于 1 的值,而我认为余弦距离应该包含在 0 和 1 之间。
任何人都可以解释这种行为吗?
先感谢您!
r - R:句子到单词表的行号不匹配
从我之前的问题中,我有一些texts
在不同的行中,并且从我尝试word-table
为每个单词生成的文本中。但是当文本列的行号和行号不同时就会出现问题word-table
。已发现某些文本正在创建两行或多行。所以最后我不能cbind
把这两个放在一起。代码在这里。我只希望结果是完全相同的文本行号,我可以将它们绑定在一起以显示哪个文本是哪个word-table
。
更多细节:文本有多个空格或制表符。最初的假设是,可能是额外的空格造成了问题,但是在删除了额外的空格之后,它仍然是同一个问题。
请帮忙
java - 如何从单词相似度到整体句子相似度
我已经使用 WS4J 实现了一个句子相似度方法。
我读过文章中的句子相似度,它基于两个句子中的单词相似度。但是我找不到基于单词相似度计算并返回整个句子相似度的单个值的方法。
在这个网站上的sentence-similarity-using-ws4j上提出了类似的问题
如您所见,我已经设法使用 WS4J 进行编码,直到句子 a 中的任何单词在另一个句子中找到同义词集匹配(并且匹配值高于 0.9)都返回匹配消息。但我猜这不是一个好方法。
我找到了 Yuhua 等 [2] 的文章。所有这些都非常有用,但无法弄清楚他们用于整体句子相似性的方法。
我已经用 Java 完成了我的代码,所以我一直在寻找一些 Java 实现。
[2]:Li, Y., McLean, D., Bandar, ZA, O'shea, JD, & Crockett, K. (2006)。基于语义网和语料库统计的句子相似度。知识和数据工程,IEEE Transactions on,18(8),1138-1150。
python - Django:过滤与给定项目相似的项目
我有一个 django 后端(Postgre DB)。
假设一个给定的表,比如 A,有一个叫做“消息”的字符域。现在,我要做的是找到 A 中与给定实例的“消息”字段具有相似“消息”的所有项目。相似性将基于某种算法。TL;DR 我想根据项目相似度查找项目。
问题有 3 个部分:
我该怎么做?我可以实时执行(慢速)还是必须预先计算表 A 中所有项目之间的相似性。(这可能会炸毁我的数据库)
如何找到“消息”字段之间的相似性?请注意,该项目更像是一个 400 字符的帖子,而不是一组关键字。我遇到了许多计算字符串距离的算法,但我认为这不会减少它。我认为 TF-IDF 后跟余弦相似度更合适。
我如何在生产环境中实现上述目标?就像应该使用什么数据结构来优化请求响应时间与存储一样。