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

本文探讨了ElasticSearch中如何处理人类语言以提高全文搜索的精度与召回率,包括词干提取、停用词过滤、同义词使用及拼写纠错等技术。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值