问题标签 [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.

0 投票
0 回答
690 浏览

r - 量化两个句子之间的相似度

对于一个项目,我想量化两个文本字符串之间的相似性。字符串是研究提案的标题,在研究人员内部,我们希望计算它们之间的相似度。数据框当前存在三列:(a)研究人员 ID,(b)项目标题,(c)项目标题。我有数百行(研究人员)。

假设我们在一个研究人员中有两个项目名称:

“如何通过查看 DNA 来解决心血管疾病。”

“基因和老年男性的高心血管疾病风险。”

理想情况下,相似性的度量不仅可以找到确切的词(“cardioviscular”和“disease”),还可以将“DNA”与“Genes”联系起来。此外,所有不重要的词(“how”、“can”、“be”、“at”等)都应删除。

我对这些问题没有经验。我如何能够为大量研究人员量化这两个字符串变量之间的相似性?在理想情况下,我会在 R 中对此进行编程。

0 投票
2 回答
3567 浏览

python-3.x - 用于 Keras 中句子相似度的具有 LSTM 的连体网络定期给出相同的结果

我是 Keras 的新手,我正在尝试在 Keras 中使用 NN 解决句子相似性的任务。我使用 word2vec 作为词嵌入,然后使用连体网络来预测两个句子的相似程度。Siamese 网络的基础网络是 LSTM,为了合并这两个基础网络,我使用了带有余弦相似度度量的 Lambda 层。作为数据集,我使用的是 SICK 数据集,它为每对句子打分,从 1(不同)到 5(非常相似)。

我创建了网络并且它运行了,但我有很多疑问:首先我不确定我用句子喂 LSTM 的方式是否合适。我对每个单词进行 word2vec 嵌入,每个句子只创建一个数组,用零填充到 seq_len 以获得相同的长度数组。然后我以这种方式重塑它: data_A = embedding_A.reshape((len(embedding_A), seq_len, feature_dim))

此外我不确定我的连体网络是否正确,因为不同对的很多预测都是相等的,并且损失没有太大变化(从 0.3300 到 0.2105 在 10 个时期内,并且在 100 个时期内变化不大时代)。

有人可以帮助我找到并理解我的错误吗?非常感谢(对不起我的英语不好)

对我的代码感兴趣的部分

一些结果:

0 投票
1 回答
465 浏览

tf-idf - 使用余弦相似度的 Tf-Idf 用于几乎相似句子的文档相似度

我正在使用具有余弦相似度的 tf-idf 来计算描述(句子)相似度

输入字符串:

以下是我需要在其中找到类似于输入字符串的句子的句子

由于句子几乎相似,我使用 tf-idf 方法,它对出现在所有文档( Idf )中的单词给予低分,而对唯一单词给予更高的分数,这有助于更容易地找到相似的文档。

有没有比这更好的方法?

0 投票
0 回答
885 浏览

apache-spark-mllib - 激发文本句子之间的相似性

我试图找到文本消息(大约 100 万条文本消息)之间的相似性,在我的实现中,每一行代表一个条目。

为了计算这些文本之间的相似度,我们采用tfidfcolumnSimilarities

下面是代码:

问题是当文件中相似消息的数量增加时,相似性会降低。

例如

假设我们有以下文件:

前一个命令的输出是:

%cat 输出/part-000*

输出中的每一行表示两行之间的相似度,如下所示: “lineX -1”、“lineY -1”、“similarity”

显示最后两行之间相似性的输出是 5.0,6.0,0.7373482646933146,这很好。

两条线是

相似度为0.7373482646933146

而当文件输入为:

输出是:

在第一个示例中测试的相同行之间的输出是:7.0,8.0,0.5733398760974173

同一行的相似度从 0.7373482646933146 降低到 0.5733398760974173

这两行是:

相似度为0.5733398760974173

  1. 当输入中相似的行消息增加时,是否有任何解决方案可以避免句子之间的相似性降低?(tfidf 可能是这里的问题?当相似的句子数量增加时,相似度会因 tfidf 而降低?)
  2. 是否有任何解决方案来聚集类似的消息?

即上面的输入,包含多个句子,如:

你好世界123

类似的句子也一样:

公司代码 123-234 您也可以点击此链接以验证corporate.co/1234

可以根据相似性输出对它们进行分组吗?

0 投票
1 回答
143 浏览

nlp - NLP - How to Identify whether 2 texts refer to similar object

I am looking for some general guidance here.

The high-level use case is such that I receive some product documents from which I need to extract some information and process it. Before doing that, I need to verify that the document is actually referring to the correct product. For that I need to validate the product heading/description from document against what I know to be correct.

So I have 2 texts

  1. Text 1 - this refers to the product information extracted from some document
  2. Text 2 - this is the actual product heading/description available with me, which can be considered as correct.

I need to validate that both texts refer to same product or object.

Example:

You see, I need to validate that both text refer to Optimus Prime Costume.

I tried following methods -

  • Cosine Similarity
  • TF-IDF similarity
  • Overlapping words between strings

But the problem with them is that they depends on the entire text rather than the primary object being referred in the text.

I was thinking of processing as follows:-

  • Remove colors, size info etc. from the text 2. The text 2, is very concise and does not contain random data. It contains product name and size, colour info.
  • Validate that the remaining elements from Text 2 are present in Text 1, or atleast a majority of them are.

I am not quite sure what different NLP techniques might be there, which would be better than this approach, so any suggestions would be appreciated.

0 投票
2 回答
1122 浏览

python - 如何从 gensim 模型中的 Doc2Vec 相似度分数访问文档详细信息?

我得到了一个使用 gensim 的 doc2vec 模型,该模型在 2000 万个文档上进行了训练。它训练的 2000 万份文件也给了我,但我不知道这些文件是如何或以何种顺序从文件夹中训练的。我应该使用测试数据从训练集中找到前 10 个匹配项。我使用的代码是 -

` 我得到的输出是 -

我如何知道文档 ID“1913”指的是哪个文档?如何从这 10 个工作 ID 中访问训练数据集的文档?

0 投票
1 回答
2520 浏览

python - 分割层输出时,Keras 抛出“Tensor”对象没有属性“_keras_shape”

我有一个句子对的句子嵌入输出 X 2*1*300。我想把这个输出分成两个形状向量1*300来计算它的绝对差和乘积。

目前,当我这样做x[:,0]时会抛出一个错误,说AttributeError: 'Tensor' object has no attribute '_keras_shape'. 我假设张量对象分裂的结果是一个没有_keras_shape.

有人可以帮我解决这个问题吗?谢谢。

0 投票
1 回答
538 浏览

python - 如何计算两个 n-gram 之间的语义相似度?

我正在尝试计算两个二元组之间的语义相似度,我需要使用 fasttext 的预训练词向量来完成这项任务。

例如:

b-gram 是两个元素的 python 列表: [his, name][I, am]

它们是两个元组,我需要通过任何必要的方式计算这两个元组之间的相似性。

我希望有一个分数可以给我一个很好的相似度近似值。例如,如果有方法可以告诉我这与than[His, name]更相似。[I, am][An, apple]

现在我只使用了包含任何语义相似性的余弦相似度。

0 投票
1 回答
5279 浏览

python - TypeError:获取参数数组的类型无效 numpy.ndarray,必须是字符串或张量。(不能将 ndarray 转换为张量或操作。)

我正在尝试在 siaseme LSTM 中重现结果,以比较此处两个句子的语义相似性:- https://github.com/dhwajraj/deep-siamese-text-similarity

我正在使用 tensorflow 1.4 和 python 2.7

train.py 工作正常。为了评估模型,我创建了一个 match_valid.tsv 文件,它是那里可用的“train_snli.txt”的一个子集。我已经修改了 input_helpers.py 文件中的 getTsvTestData 函数。

我从 eval.py 中的这部分代码中收到错误

我收到此错误。我尝试在 sess.run() 中使用 print 语句来查找类型,但它不起作用。

实际上,我正在尝试进行查询相似度,将查询向量与我的语料库中的所有文档向量进行比较,并根据相似度分数对句子进行排名。我知道目前 LSTM 只是将两个句子相互比较并将相似度输出为 0 或 1。我该怎么做?

0 投票
1 回答
737 浏览

python - 如何在 wordnet 词典中添加新单词?

我正在尝试匹配两个句子并找到相似之处。

似乎我句子中的某些单词(名词)在 wordnet 词典中不存在。如何将它们添加到 wordnet 中?