基于词嵌入的搜索结果排序
1. 向量空间模型与 TF-IDF
在搜索结果排序中,查询向量与文档之间的相似度通过两者向量的夹角来评估。夹角越小,两个向量越相似。例如,对于查询向量和三个文档向量,计算得到的相似度分数如下:
| 文档 | 相似度分数 |
| — | — |
| doc1 | 0.51 |
| doc2 | 0.38 |
| doc3 | 0.17 |
词袋模型存在一个问题,即向量的大小会随着文档中不同词汇的数量线性增长。而像 word2vec 生成的词向量具有固定大小,不会随搜索引擎中词汇数量的增加而增长,因此使用它们时资源消耗更低,并且能更好地捕捉词汇语义。
尽管存在这些局限性,向量空间模型(VSM)和 TF-IDF 在许多生产系统中仍经常被使用,并取得了不错的效果。
2. 在 Lucene 中对文档进行排序
在 Lucene 中,Similarity API 是排序函数的基础。Lucene 自带了一些信息检索模型,如结合 TF-IDF 的 VSM(直到版本 5 都是默认使用的)、Okapi BM25、随机发散模型、语言模型等。在索引和搜索时都需要设置相似度。在 Lucene 7 中,VSM + TF-IDF 相似度为 ClassicSimilarity。
索引时设置相似度的代码如下 :
IndexWriterConfig config = new IndexWriterConfig();
config.setSimilarity(new
超级会员免费看
订阅专栏 解锁全文
2917

被折叠的 条评论
为什么被折叠?



