Elasticsearch全文检索与余弦相似度


声明:本文转载自https://my.oschina.net/stanleysun/blog/1594300,转载目的在于传递更多信息,仅供学习交流之用。如有侵权行为,请联系我,我会及时删除。

一、单个词语的全文搜索

见 《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]。 可以用图表示:

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

1. Python语言基础

2. Python的高级应用

3. 各种编程语言的比较

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

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

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

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

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

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

 

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

 

相关文章

Elasticsearch全文搜索与TF/IDF

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

 

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

 

本文发表于2017年12月24日 22:37
(c)注:本文转载自https://my.oschina.net/stanleysun/blog/1594300,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如有侵权行为,请联系我们,我们会及时删除.

阅读 2471 讨论 0 喜欢 0

抢先体验

扫码体验
趣味小程序
文字表情生成器

闪念胶囊

你要过得好哇,这样我才能恨你啊,你要是过得不好,我都不知道该恨你还是拥抱你啊。

直抵黄龙府,与诸君痛饮尔。

那时陪伴我的人啊,你们如今在何方。

不出意外的话,我们再也不会见了,祝你前程似锦。

这世界真好,吃野东西也要留出这条命来看看

快捷链接
网站地图
提交友链
Copyright © 2016 - 2021 Cion.
All Rights Reserved.
京ICP备2021004668号-1