Elasticsearch全文检索与余弦相似度

一、单个词语的全文搜索

见 《Elasticsearch全文搜索与TF/IDF》https://my.oschina.net/stanleysun/blog/1594220

二、多个词语的全文搜索

向量空间模型

向量空间模型提供了一种对文档进行多词查询对方法,返回值就是一个数字,它表示相关度。这个模型,将文档和查询当作向量。

一个向量就是一个一维数组,比如[2, 3.5, 5, 2.1]。在向量里面,每个数字都是一个词语对TF-IDF权重. TF-IDF的解释参见我的另一篇文章《Elasticsearch全文搜索与TF/IDF》https://my.oschina.net/stanleysun/blog/1594220

举例

假如现在我要在文档中搜索“Python语言”,系统会如何处理呢?

Python是一个非常用词,权重高一点,比如5;语言是一个常用词,权重低一点,比如2;那么,我们就可以将这个词组转变为一个二维向量 [5,2]。 可以用图表示:

Elasticsearch全文检索与余弦相似度

假设我们有3个文档,分别是

1. Python语言基础

2. Python的高级应用

3. 各种编程语言的比较

我们可以对每一个文档创建相似的向量,向量中包含“Python”和“语言”两个维度。

文档1: Python, 语言 ------ [5, 2]

文档2: Python, _____ ------ [5, 0]

文档3: ____, 语言 ------ [0, 2]

我们比较查询向量和3个文档向量后,可以发现,查询向量的夹角最小,也就是说文档1最接近我们的查询。

另外,根据中学知识我们知道,夹角越小,余弦值越大。因此,我们可以用余弦值来表示相似度。

Elasticsearch全文检索与余弦相似度

上面是2维向量的相似度,用同样的方式,可以算出多维向量的相似度,也就是可以计算多个词与文档的相关性。

相关文章

Elasticsearch全文搜索与TF/IDF

推荐引擎算法 - 猜你喜欢的东西

IT课店,发现好课程:https://www.itkedian.com 一个致力于快速发现大数据、人工智能、区块链等新技术课程的站点。

参考文献:K码农-http://kmanong.top/kmn/qxw/form/home?top_cate=28


分享到:


相關文章: