问题标签 [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 投票
2 回答
218 浏览

nlp - 计算句子集之间的语义相似度

我有两组短消息,我想计算这两组之间的相似度,并根据它们的语义相似度来确定它们是否在谈论同一个子主题。我知道如何使用成对相似度,我的问题是我想计算两组中所有句子的整体相似度,而不是 2 个句子。有没有办法使用具有余弦相似度的 tf-idf 或 word2vec/doc2vec 来计算总分?

0 投票
1 回答
461 浏览

python - How to combine vectors generated by PV-DM and PV-DBOW methods of doc2vec?

I have around 20k documents with 60 - 150 words. Out of these 20K documents, there are 400 documents for which the similar document are known. These 400 documents serve as my test data.

I am trying to find similar documents for these 400 datasets using gensim doc2vec. The paper "Distributed Representations of Sentences and Documents" says that "The combination of PV-DM and PV-DBOW often work consistently better (7.42% in IMDB) and therefore recommended."

So I would like to combine the vectors of these two methods and find cosine similarity with all the train documents and select the top 5 with the least cosine distance.

So what's the effective method to combine the vectors of these 2 methods: adding or averaging or any other method ???

After combining these 2 vectors I can normalise each vector and then find the cosine distance.

0 投票
1 回答
278 浏览

elasticsearch - 在 Elasticsearch 中查找最相似的文档

如何在 Elasticsearch 中的两个索引之间找到前 100 个最相似的文档?

文档 #1 在 index1、type11、field111 中。文档 #2 在 index2、type21、field211 中

编辑:两个字段都是字符串。

我查看了More Like This query的文档。但它并没有告诉我如何快速比较不同类型相似性指标的结果并查看最佳结果。

0 投票
1 回答
997 浏览

python - 即使单词不同,如何找到两个问题之间的相似性

是否有任何方法可以找到字符串的含义是否相似,,,即使字符串中的单词是有区别的

直到现在我尝试了模糊模糊,列文斯坦距离,余弦相似度来匹配字符串,但所有都匹配单词而不是单词的含义

0 投票
1 回答
223 浏览

nlp - 当我有它们的向量时如何对关键词进行聚类或获取关键词相似度

我有一个 python 字典,使用 Pickle 方法(通过 Bert-as-Service 和 Google 的预训练模型)存储为 Vector 文件,例如:

(key)Phrase : (value)Phrase_Vector_from_Bert = 女布 : 1.3237 -2.6354 1.7458 ....

但是我不知道像使用 Gensim Word2Vec 那样从 Bert-as-Service 模型中获取短语与向量文件的相似性,因为后者配备了 .similarity 方法。

您能否提供一个建议以获取短语/关键字相似性或将它们与我的 python-Pickle-dictionary 向量文件进行聚类?

或者也许有更好的办法用 Bert-as-Service 来聚类关键字?

以下代码显示了如何获取短语/关键字的向量:

0 投票
1 回答
484 浏览

python-3.x - 余弦相似度很慢

我有一组句子,使用句子编码器将其编码为向量,我想找出与传入查询最相似的句子。

搜索功能如下所示:

其中cleaned_query是一个字符串形式的预处理查询,data是一个包含所有句子(总共 300 个)的列表,并且vectors包含维度 (300,500) 的数据中每个句子的编码向量。

当我向我的服务发送查询时,处理一个查询大约需要 10-12 秒,我认为这太慢了。我做了一些调试,意识到问题出在cosine_similarity功能上,实现如下:

我试图研究不同的实现,并发现一些使用 numba - 运行得非常快nb_cosine,但它提供的结果并不好,这意味着cosine_similarity上面的 提供了更正确和更有意义的结果。这是使用 numba 的实现:

任何人都可以建议,我怎样才能优化我的cosine_similarity功能以更快地工作?300 句话总是一样的。以防万一,如果需要,下面是get_features函数:

0 投票
3 回答
4449 浏览

python - Doc2Vec 找到类似的句子

我正在尝试使用 doc2vec 找到类似的句子。我找不到的是与受过训练的句子匹配的实际句子。

以下是本文的代码:

但是上面的代码只给了我向量或数字。但是我怎样才能从训练数据中得到匹配的实际句子。例如 - 在这种情况下,我期望结果为“我喜欢构建聊天机器人”。

0 投票
0 回答
149 浏览

r - (通过更新解决)测量句子与目标文档句子的相似度(错误消息)

我正在使用 R quanteda 包(版本 1.4.3,windows 系统)在几个文档中找到几乎逐字的文本重用。最后,我想比较源文档的相对影响,另外我希望能够显示接近逐字匹配的实例。到目前为止,我一直在做的是:

  • 从文本文件构建语料库
  • 将其重新塑造成要比较的句子
  • 将其标记为单词
  • 从单词 ngram 构建文档特征矩阵

检查结果,到目前为止,它们似乎还不错。

但是,当我尝试从目标文本中计算“文档”(即句子)与“文档”的相似度时,出现错误:

  • 我怎样才能避免这个错误?
  • 我一开始就采取了好的方法吗?

PS。我是对的,它是 tokens() 中的“include_docvars”,而 corpus_reshape() 中的“use_docvars”?我似乎从在线参考文档中得到了这个。

0 投票
1 回答
1181 浏览

python - 是否可以重新训练谷歌的通用句子编码器,以便在编码句子时考虑关键字?

我对trainable = True加载 Universal Sentence Encoder 3 时设置的含义有点困惑。我有一个小型语料库(3000 个不同的句子),给定一个句子,我想找到 10 个最相似的句子。我目前的方法是:

1) 加载模块 embed = hub.Module("path", trainable =False)

2)编码所有句子: session.run(embed(sentences))

3)使用余弦相似度找到最接近的句子。

它表现不错,但我希望模型能够根据我自己的字典进行微调,因为有些关键字比其他关键字更重要。因此这不是分类问题。在查看现有的重新训练模块示例时(https://www.tensorflow.org/hub/tutorials/text_classification_with_tf_hub),它是用于分类的。

是否可以让 Universal Sentence Encoder 重新训练我的关键字并输出不同的嵌入(例如通过设置trainable = True)?

0 投票
0 回答
119 浏览

python - 如何使用 SequenceMatcher 进行字典分组?

我需要通过“标题”键对字典中的条目进行分组,我按照下面描述的方式进行操作。

输入:

输出:

但正如你所理解的“Boby - Jake”~“Boby S. - Jake O”。所以我需要在 sorted_words 函数中使用 difflib。

相似度应约为 70%

问题:如何用我当前的代码实现 difflib?