我正在尝试提出一个神经网络,该网络对两对短文本进行排名(例如,stackexchange标题和正文)。遵循深度学习食谱的示例,网络基本上看起来像这样:
因此,我们有两个输入(标题和正文),将它们嵌入,然后计算嵌入之间的余弦相似度。该模型的输入为[title,body],输出为[sim]。
现在,我想要给定标题的最匹配的正文。我想知道是否有一种更有效的方式来执行此操作,而不涉及遍历每个可能的(title,body)对并计算相应的相似度?因为对于非常大的数据集,这是不可行的。
非常感谢您的帮助!
答案 0 :(得分:1)
遍历每个可能的数据对确实不是很有效。取而代之的是,您可以使用模型来提取标题和文本主体的所有嵌入,然后将它们保存在数据库中(或仅保存为.npy文件)。因此,您无需使用模型来输出相似性得分,而是可以使用模型来输出嵌入(来自嵌入层)。
推断时,您可以使用库来进行有效的相似性搜索,例如faiss。给定标题,您只需查找其嵌入,然后在所有主体嵌入的整个嵌入空间中搜索,以查看得分最高的嵌入。我自己使用了这种方法,并且能够在100毫秒内搜索1M向量。