我想比较两种方法:局部敏感性散列 和文档嵌入,以获得两个文档之间的相似性。这两种方法都将文档的信息编码在一个向量中,我想用它在一个非常大的语料库(可能超过 100 000 个文档)中找到相似的文档。有没有人比较过这两种方法,它们各自的优点是什么。
提前喝彩
我想比较两种方法:局部敏感性散列 和文档嵌入,以获得两个文档之间的相似性。这两种方法都将文档的信息编码在一个向量中,我想用它在一个非常大的语料库(可能超过 100 000 个文档)中找到相似的文档。有没有人比较过这两种方法,它们各自的优点是什么。
提前喝彩
局部敏感散列 (LSH) 是一种搜索技术。有了它,相似的文档比不相似的文档获得相同哈希的概率更高。LSH 旨在允许您构建查找表以有效地在大型数据集中搜索与给定项目相似的项目。它也是一种概率方法,因为它可以产生假阳性和假阴性。虽然有很多方法可以训练 LSH,但大多数 LSH 都是未经训练的。这是因为在搜索环境中对 LSH 的研究比在机器学习环境中的研究更多。
嵌入是一种机器学习技术,用于捕获语义信息以用于某些下游任务,例如聚类或分类。通常语义相似的项目得到相似(但不相同)的嵌入。嵌入是从数据中训练出来的。有许多无监督算法(word2vec、glove),也有监督方法(自动编码器、深度模型的隐藏层输出)。
嵌入可用于将项目映射到邻近搜索可以找到语义相似项目的空间。但是,在大型数据集上,您仍然需要索引数据以进行有效搜索,这增加了对嵌入进行 LSH的可能性。这样,您就可以从一个训练有素的模型中受益,该模型可以学习您的数据集的分布以及快速查找表的优势。