2-3 个单词的短语与多个句子的文档之间的句子相似度

问题描述 投票:0回答:1

我想要实现的目标:我有数千份文档(事件描述),我想找到与短语匹配或与短语中的单词相似的文档。举个例子,对于输入短语“电动汽车”,我想查找所有与任何类型的电动汽车或运输工具发生的任何事情相关的讨论的文档,语料库中的文档可能没有单词“车辆” ”,但可能有提到的特定车辆类型,如“踏板车”、“自行车”、“悬浮滑板”等。损失描述可能有“电气”一词,甚至可能有“锂电池”之类的词。因此,诸如“电动汽车”或“电动汽车”或“由锂离子电池供电的车辆”之类的输入短语应该与所有提及该术语的损失描述相匹配。但是,我不想捕获带有“汽车”、“踏板车”的文档,而这些文档没有提及“电动”或“锂”。因此,从包含 1 到 4 个单词的短语中,我必须找到包含 2 到 100 个单词的匹配文档,用于每个文档中的 1 到 7 个句子。

输入短语列表(用于查找匹配的损失描述)会有所不同,因此我认为连体网络甚至训练分类模型之类的事情都无法完成。 并且文件的数量也会与日俱增,并且每个丢失描述都是相互独立的。

这是我到目前为止所做的: 我使用了sentence-transformers(尝试了预训练模型

multi-qa-mpnet-base-dot-v1
all-MiniLM-L12-v2
all-MiniLM-L16-v2
all-mpnet-base-v2
)来获得所有文档的标准化嵌入,然后是我的输入短语。然后计算我的输入短语的嵌入与所有文档之间的余弦相似度,然后获取具有最高值的前 20 个句子。

匹配的文件几乎不相关。例如,对于输入短语“电动汽车”,匹配仅包含单词“electrical”的文档,除了单词“vehicle”之外,没有任何内容与最高分相匹配,随后的文档仅包含更多单词,但仅提及“车辆”没有“电气”,反之亦然。我想是因为输入短语中的单词数较少。

我该如何应对这一问题并找到实际上提及我的输入短语中所有单词的文档,而不是仅使用一个单词来查找匹配文档?

nlp word-embedding sentence-similarity sentence-transformers
1个回答
0
投票

由于您的输入查询非常短,实际上它们不是句子,因此句子转换器可能无法达到您观察到的有希望的结果。

我只会针对您的情况使用简单的算法。您可以编写诸如“电动汽车自行车踏板车”之类的内容作为输入查询,并仅获取每个文档中的出现次数。如果您优先查找“electrical”,那么如果该词出现在文档中,您也可以对该词给予一定的权重。毕竟,您最终会得到包含查询中的单词的文档。这是一个简单的解决方案,但当然对于打字错误等来说并不稳健。

另一种解决方案可能是使用词嵌入,例如 word2vecfastText。只需获取查询中每个单词以及文档的嵌入,并计算余弦相似度。您可以计算词嵌入的平均值,以便只有一个嵌入代表查询和每个文档。或者只是通过调整相似度值的阈值来比较查询和文档之间的每个单词(由于多次比较而耗时)。

© www.soinside.com 2019 - 2024. All rights reserved.