ElasticSearch 2 (19) - 语言处理系列之故事开始
ElasticSearch 2 (19) - 语言处理系列之故事开始
摘要
全文搜索是精度(尽可能少的返回不相关文档)和召回(尽可能多的返回相关文档)的战场。尽管只精确匹配用户查询的词肯定会是精确的,但这并不够。我们可能会丢失许多被用户认为相关的文档,取而代之的是我们需要扩大撒网范围,去搜索那些与原始查询不完全相同但又相关的词。
版本
elasticsearch版本: elasticsearch-2.x
内容
全文搜索是精度(尽可能少的返回不相关文档)和召回(尽可能多的返回相关文档)的战场。尽管只精确匹配用户查询的词肯定会是精确的,但这并不够。我们可能会丢失许多被用户认为相关的文档,取而代之的是我们需要扩大撒网范围,去搜索那些与原始查询不完全相同但又相关的词。
难道我们不希望在搜索 “quick brown fox” 的时候,能匹配包含 “fast brown foxes” 的文档,搜索 “Johnny Walker” 可以匹配 “Johnnie Walker” ,搜索 “Arnolt Schwarzenneger” 可以匹配 “Arnold Schwarzenegger” ?
如果现存文档正好包含用户的查询,那么它们当然应该出现在结果集的顶部,而弱匹配的文档会随后出现。如果没有完全匹配的文档,我们至少可以为用户提供潜在匹配的可能,它们甚至可能是用户搜索的初衷。
以下有一些需要处理的事情:
- 移除如 ´、 ^ 和 ¨ 这样的变音符,那么搜索 rôle 会匹配 role ,反之亦然。参见 标记的规范化。 
- 移除单复数形式间的差异( fox 与 foxes )或时态间的差异( jumping 与 jumped 与 jumps ),可以通过词干提取法获得每个单词的词根形式。参见 词根提取。 
- 移除经常使用的普通词或停用词,如:the 、 and 和 or ,以提高搜索效率。参见 停用词:性能与精度。 
- 包括同义词使查询 quick 也能与 fast 匹配,UK 能与 United Kingdom 匹配。参见 同义词。 
- 检查拼写错误或可选拼写形式,或同音异形词的匹配,如:their 与 there,meat 与 meet 与 mete。参见 打字或拼写错误。 
在我们处理单个词语之前,需要将文本拆分成多个单词,也就是说我们需要了解词语的组成。这个问题会在 单词识别 章节中解决。
不过首先,我们还是来看看如何快速简便的开始对我们的语言进行处理。
参考
elastic.co: Dealing with Human Language
ElasticSearch 2 (19) - 语言处理系列之故事开始的更多相关文章
- ElasticSearch 2 (27) - 信息聚合系列之故事开始
		ElasticSearch 2 (27) - 信息聚合系列之故事开始 摘要 到目前为止,本书都在着重介绍搜索.对于搜索,我们有查询条件以及与查找到与条件匹配的集合.这个过程就和如大海捞针一样. 对于聚 ... 
- ElasticSearch 2 (26) - 语言处理系列之打字或拼写错误
		ElasticSearch 2 (26) - 语言处理系列之打字或拼写错误 摘要 我们喜欢在对结构化数据(如:日期和价格)做查询时,结果只返回那些能精确匹配的文档.但是,好的全文搜索不应该有这样的限制 ... 
- ElasticSearch 2 (25) - 语言处理系列之同义词
		ElasticSearch 2 (25) - 语言处理系列之同义词 摘要 词干提取有助于通过简化屈折词到它们词根的形式来扩展搜索的范围,而同义词是通过关联概念和想法来扩展搜索范围的.或许没有文档能与查 ... 
- ElasticSearch 2 (24) - 语言处理系列之停用词:性能与精度
		ElasticSearch 2 (24) - 语言处理系列之停用词:性能与精度 摘要 在信息检索早期,磁盘和内存相较我们今天的使用只是很小的一部分.将索引空间保持在一个较小的水平是至关重要的,节省每个 ... 
- ElasticSearch 2 (23) - 语言处理系列之词根提取
		ElasticSearch 2 (23) - 语言处理系列之词根提取 摘要 世界上大多数语言都是屈折变化的,意思是词语可以通过变形来表达不同的含义: 数(Number): fox, foxes 时态( ... 
- ElasticSearch 2 (22) - 语言处理系列之标记规范化
		ElasticSearch 2 (22) - 语言处理系列之标记规范化 摘要 将文本拆解成标记只是工作的一半.为了使这些标记更容易被搜索到,它们需要经过一个规范化的处理过程,以移除相同单词间不重要的差 ... 
- ElasticSearch 2 (21) - 语言处理系列之单词识别
		ElasticSearch 2 (21) - 语言处理系列之单词识别 摘要 一个英语单词相对容易识别:因为英语单词是被空格或(某些)标点符号隔开的.但在英语中也有反例:you're 这个词是一个单词还 ... 
- ElasticSearch 2 (20) - 语言处理系列之如何开始
		ElasticSearch 2 (20) - 语言处理系列之如何开始 摘要 Elasticsearch 配备了一组语言分析器,为世界上大多数常见的语言提供良好的现成基础支持. 阿拉伯语.亚美尼亚语,巴 ... 
- ElasticSearch 2 (18) - 深入搜索系列之控制相关度
		ElasticSearch 2 (18) - 深入搜索系列之控制相关度 摘要 处理结构化数据(比如:时间.数字.字符串.枚举)的数据库只需要检查一个文档(或行,在关系数据库)是否与查询匹配. 布尔是/ ... 
随机推荐
- leetcode 200. Number of Islands 、694	 Number of Distinct Islands 、695. Max Area of Island 、130. Surrounded Regions
			两种方式处理已经访问过的节点:一种是用visited存储已经访问过的1:另一种是通过改变原始数值的值,比如将1改成-1,这样小于等于0的都会停止. Number of Islands 用了第一种方式, ... 
- 解决Matlab当中for循环运行慢的问题
			做量化操作的时候经常需要使用到matlab编写策略或者计算多因子,for循环非常慢,自己找了一些matlab中for循环的优化方法,for的部分每处理一个大矩阵都要花费大量的时间,这是不可避免需要遇到 ... 
- 谷歌开源漏洞跟踪工具 Monorail 存在跨站点搜索漏洞
			一名安全研究员表示,在谷歌开源漏洞跟踪工具 Monorail 中找到一个漏洞,可被用于执行跨站点搜索 (XS-Search) 攻击. Monorail 用于检查和 Chromium 相关项目中的问题, ... 
- JS添加标签效果
			JS添加标签效果 在豆瓣网上添加自己的标签是一种常见的效果,今天也就做了一个简单的demo.由于时间的问题 我不多原理,大家可以试着操作几遍就能明白其中的原理了. JSFiddle的效果如下: 点击我 ... 
- P2157 [SDOI2009]学校食堂Dining
			题目描述 小F 的学校在城市的一个偏僻角落,所有学生都只好在学校吃饭.学校有一个食堂,虽然简陋,但食堂大厨总能做出让同学们满意的菜肴.当然,不同的人口味也不一定相同,但每个人的口味都可以用一个非负整数 ... 
- always on 集群
			准备工作 1. 四台已安装windows server 2008 r2 系统的虚拟机,配置如下: CPU : 1核 MEMORY : 2GB DISK : 40GB(未分区) NetAdapter ... 
- Scala_数据类型
			Scala与Java有着相同的数据类型,Scala数据类型都是对象,Scala中没有类似Java中那样的原始类型. Scala 的基本数据类型有: Byte,Short,Int,Long 和 Char ... 
- 如何优雅的使用mybatis
			原文:https://blog.csdn.net/gebitan505/article/details/54929287 这两天启动了一个新项目因为项目组成员一直都使用的是mybatis,虽然个人比较 ... 
- Python3入门(七)——模块
			在Python中,一个.py文件就称之为一个模块(Module).(例如main.py就称之为main模块) 为了避免模块名冲突,Python又引入了按目录来组织模块的方法,称为包(Package). ... 
- 【LG4248】[AHOI2013]差异
			[LG4248][AHOI2013]差异 题面 洛谷 题解 后缀数组版做法戳我 我们将原串\(reverse\),根据后缀自动机的性质,两个后缀的\(lcp\)一定是我们在反串后两个前缀的\(lca\ ... 
