给定相似度输出神经网络,获取最佳匹配对的有效方法是什么?

时间:2019-02-20 16:00:09

标签: keras

我正在尝试提出一个神经网络,该网络对两对短文本进行排名(例如,stackexchange标题和正文)。遵循深度学习食谱的示例,网络基本上看起来像这样:

enter image description here

因此,我们有两个输入(标题和正文),将它们嵌入,然后计算嵌入之间的余弦相似度。该模型的输入为[title,body],输出为[sim]。

现在,我想要给定标题的最匹配的正文。我想知道是否有一种更有效的方式来执行此操作,而不涉及遍历每个可能的(title,body)对并计算相应的相似度?因为对于非常大的数据集,这是不可行的。

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

遍历每个可能的数据对确实不是很有效。取而代之的是,您可以使用模型来提取标题和文本主体的所有嵌入,然后将它们保存在数据库中(或仅保存为.npy文件)。因此,您无需使用模型来输出相似性得分,而是可以使用模型来输出嵌入(来自嵌入层)。

推断时,您可以使用库来进行有效的相似性搜索,例如faiss。给定标题,您只需查找其嵌入,然后在所有主体嵌入的整个嵌入空间中搜索,以查看得分最高的嵌入。我自己使用了这种方法,并且能够在100毫秒内搜索1M向量。