ElasticSearch 2 (19) - 语言处理系列之故事开始

摘要

全文搜索是精度(尽可能少的返回不相关文档)和召回(尽可能多的返回相关文档)的战场。尽管只精确匹配用户查询的词肯定会是精确的,但这并不够。我们可能会丢失许多被用户认为相关的文档,取而代之的是我们需要扩大撒网范围,去搜索那些与原始查询不完全相同但又相关的词。

版本

elasticsearch版本: elasticsearch-2.x

内容

全文搜索是精度(尽可能少的返回不相关文档)和召回(尽可能多的返回相关文档)的战场。尽管只精确匹配用户查询的词肯定会是精确的,但这并不够。我们可能会丢失许多被用户认为相关的文档,取而代之的是我们需要扩大撒网范围,去搜索那些与原始查询不完全相同但又相关的词。

难道我们不希望在搜索 “quick brown fox” 的时候,能匹配包含 “fast brown foxes” 的文档,搜索 “Johnny Walker” 可以匹配 “Johnnie Walker” ,搜索 “Arnolt Schwarzenneger” 可以匹配 “Arnold Schwarzenegger” ?

如果现存文档正好包含用户的查询,那么它们当然应该出现在结果集的顶部,而弱匹配的文档会随后出现。如果没有完全匹配的文档,我们至少可以为用户提供潜在匹配的可能,它们甚至可能是用户搜索的初衷。

以下有一些需要处理的事情:

  • 移除如 ´^¨ 这样的变音符,那么搜索 rôle 会匹配 role ,反之亦然。参见 标记的规范化

  • 移除单复数形式间的差异( foxfoxes )或时态间的差异( jumpingjumpedjumps ),可以通过词干提取法获得每个单词的词根形式。参见 词根提取

  • 移除经常使用的普通词或停用词,如:theandor ,以提高搜索效率。参见 停用词:性能与精度

  • 包括同义词使查询 quick 也能与 fast 匹配,UK 能与 United Kingdom 匹配。参见 同义词

  • 检查拼写错误或可选拼写形式,或同音异形词的匹配,如:theirtheremeatmeetmete。参见 打字或拼写错误

在我们处理单个词语之前,需要将文本拆分成多个单词,也就是说我们需要了解词语的组成。这个问题会在 单词识别 章节中解决。

不过首先,我们还是来看看如何快速简便的开始对我们的语言进行处理。

参考

elastic.co: Dealing with Human Language

ElasticSearch 2 (19) - 语言处理系列之故事开始的更多相关文章

  1. ElasticSearch 2 (27) - 信息聚合系列之故事开始

    ElasticSearch 2 (27) - 信息聚合系列之故事开始 摘要 到目前为止,本书都在着重介绍搜索.对于搜索,我们有查询条件以及与查找到与条件匹配的集合.这个过程就和如大海捞针一样. 对于聚 ...

  2. ElasticSearch 2 (26) - 语言处理系列之打字或拼写错误

    ElasticSearch 2 (26) - 语言处理系列之打字或拼写错误 摘要 我们喜欢在对结构化数据(如:日期和价格)做查询时,结果只返回那些能精确匹配的文档.但是,好的全文搜索不应该有这样的限制 ...

  3. ElasticSearch 2 (25) - 语言处理系列之同义词

    ElasticSearch 2 (25) - 语言处理系列之同义词 摘要 词干提取有助于通过简化屈折词到它们词根的形式来扩展搜索的范围,而同义词是通过关联概念和想法来扩展搜索范围的.或许没有文档能与查 ...

  4. ElasticSearch 2 (24) - 语言处理系列之停用词:性能与精度

    ElasticSearch 2 (24) - 语言处理系列之停用词:性能与精度 摘要 在信息检索早期,磁盘和内存相较我们今天的使用只是很小的一部分.将索引空间保持在一个较小的水平是至关重要的,节省每个 ...

  5. ElasticSearch 2 (23) - 语言处理系列之词根提取

    ElasticSearch 2 (23) - 语言处理系列之词根提取 摘要 世界上大多数语言都是屈折变化的,意思是词语可以通过变形来表达不同的含义: 数(Number): fox, foxes 时态( ...

  6. ElasticSearch 2 (22) - 语言处理系列之标记规范化

    ElasticSearch 2 (22) - 语言处理系列之标记规范化 摘要 将文本拆解成标记只是工作的一半.为了使这些标记更容易被搜索到,它们需要经过一个规范化的处理过程,以移除相同单词间不重要的差 ...

  7. ElasticSearch 2 (21) - 语言处理系列之单词识别

    ElasticSearch 2 (21) - 语言处理系列之单词识别 摘要 一个英语单词相对容易识别:因为英语单词是被空格或(某些)标点符号隔开的.但在英语中也有反例:you're 这个词是一个单词还 ...

  8. ElasticSearch 2 (20) - 语言处理系列之如何开始

    ElasticSearch 2 (20) - 语言处理系列之如何开始 摘要 Elasticsearch 配备了一组语言分析器,为世界上大多数常见的语言提供良好的现成基础支持. 阿拉伯语.亚美尼亚语,巴 ...

  9. ElasticSearch 2 (18) - 深入搜索系列之控制相关度

    ElasticSearch 2 (18) - 深入搜索系列之控制相关度 摘要 处理结构化数据(比如:时间.数字.字符串.枚举)的数据库只需要检查一个文档(或行,在关系数据库)是否与查询匹配. 布尔是/ ...

随机推荐

  1. BZOJ3211:花神游历各国(线段树)

    Description Input Output 每次x=1时,每行一个整数,表示这次旅行的开心度 Sample Input 4 1 100 5 5 5 1 1 2 2 1 2 1 1 2 2 2 3 ...

  2. opengl渲染管线梳理

    opengl渲染管线梳理 http://www.cnblogs.com/zhanglitong/p/3238989.html 坐标系变换和矩阵 http://www.cppblog.com/guoji ...

  3. JS编写简单的弹窗插件(含有demo和源码)

    最近项目做完了 事情不是很多,今天正好也在调休,所以趁着这个时间研究了一下简易的JS弹窗功能,当然网上这块插件非常多,本人也没有仔细看网上的插件源码 只是凭着日常使用过的弹窗插件有这么多功能 来实现自 ...

  4. PAT B1015 德才论 (25 分)

    宋代史学家司马光在<资治通鉴>中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人.凡取人之术,苟不得圣人,君子而与之,与其得小人,不若得愚人 ...

  5. Mac下FTP的使用

    高版本的mac os默认关掉了FTP服务,打开“终端”之后,可用如下命令打开: sudo -s launchctl load -w /System/Library/LaunchDaemons/ftp. ...

  6. 20155232《网络对抗》Exp8 Web基础

    20155232<网络对抗>Exp 8 Web基础 一.实践内容 (1).Web前端HTML(0.5分) 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编 ...

  7. Data Consistency Primer

    云应用通常来说,使用的数据很多都是分散的,来自不同的数据仓库.在这种环境下,管理和保持数据一致性是很复杂的,无论是在并发跟可用性上都可能出问题.开发者有的时候就需要为了强一致性而牺牲可用性了.这也就意 ...

  8. 12、JAVA内存模型与线程

    一.JMM 有序性,可见性,原子性 synchorize :3个性都有: volatile:保证可见性+禁止指令重排: 二.线程的五种状态 面向过程与面向对象的差别 面向过程:站在计算机的角度分析和解 ...

  9. python 带参数的多重继承

    1. 不带参数的多重继承 # 作者:hhh5460 # 时间:2017.07.18 class A(object): def show_x(self): print('A') class B(obje ...

  10. Css_*^$

    #search_condition [class*=search_submit] 表示class name里面的值包含search_submit $("#search_condition [ ...