词项邻近

  邻近操作符(proximity)用于指定查询中的两个词项应该在文档中互相靠近,靠近程度通常采用两者之间的词的个数或者是否同在某个结构单元(如句 子或段落)中出现来衡量。

停用词

  一些常见词在文档和用户需求进行匹配时价值并不大, 需要彻底从词汇表中去除。这些词称为停用词(stop word)。一个常用的生成停用词表的方法就是将词项按照文档集频率(collection frequency,每个词项在文档集中出现的频率)从高到低排列,然后手工选择那些语义内容与文档主题关系不大的高频词作为停用词。停用词表中的每个词将在索引过程中被忽略。图 2-5 给出了一个停用词表的片段。使用停用词表可以大大减小系统所需要存储的倒排记录表的数目,具体的统计数字可以参见表 5-1。不对停用词建立索引一般情况下不会对系统造成太大的影响,比如搜索时采用 the 或 by 进行查询似乎没有什么意义。但是,对于短语查询来说情况并非如此,比如短语查询 President of the United States 中包含两个停用词,但是它比查询President AND “United States”更精确。如果忽略掉 to,那么 flights to London 的意义将会丢失。搜索 Vannevar Bush 的那篇经典文章 As we may think 时,如果将前 3 个单词都看作停用词,那么搜索将会很困难,因为系统只返回包含 think 的文章。更为严重的是,一些特定的查询类型会受到更大的影响。比如一些歌名或者著名的诗歌片段可能全部由常用的停用词组成(如 To be or not to be,Let It Be,I don’t want to be 等)

  

  在信息检索系统不断发展的历程中,有从大停用词表(200~300 个词)到小停用词表(7~12个词)最后到不用停用词的趋势Web 搜索引擎通常都不用停用词表。一些现代 IR 系统更关注如何利用语言的统计特性来更好地处理常见词问题。对于现代 IR 系统来说,不论是对于索引大小还是查询处理的时间而言,不去除停用词所增加的开销并没有那么大。  

词干还原

  出于语法上的要求,文档中常常会使用词的不同形态,比如 organize、organizes 和 organizing。另外,语言中也存在大量意义相近的同源词,比如 democracy、democratic 和 democratization。在很多情况下,如果输入其中一个词能返回包含其同源词的文档,那么这样的搜索似乎非常有用。

  词干还原和词形归并的目的都是为了减少屈折变化的形式,并且有时会将派生词转化为基本形式。比如:am, are, is ⇒ be ,  car, cars, car’s, cars’ ⇒ car 利用上述方式对文本进行映射处理,可以得到类似如下的结果:

  The boy’s cars are different colors ⇒ the boy car be differ color

  然而,词干还原(stemming)词形归并(lemmatization)这两个术语所代表的意义是不同的。前者通常指的是一个很粗略的去除单词两端词缀的启发式过程, 这个过程也常常包括去除派生词缀。而词形归并通常指利用词汇表和词形分析来去除屈折词缀,从而返回词的原形或词典中的词的过程,返回的结果称为词元(lemma) 假如给定词条 saw。词干还原过程可能仅返回 s, 而词形归并过程将返回 see 或者 saw,当然具体返回哪个词取决于在当前上下文中 saw 到底是动词还是名词。

词项邻近 & 停用词 & 词干还原的更多相关文章

  1. elasticsearch对无意义的词进行屏蔽——停用词

    介绍 在使用elasticsearch进行搜索业务的时候,发现一篇和搜索关键字完全不匹配的文章排在最前面.打开它发现原来是这篇文章含有非常多的"的"这个无意义的词.而我的搜索关键字 ...

  2. R系列:分词、去停用词、画词云(词云形状可自定义)

    附注:不要问我为什么写这么快,是16年写的. R的优点:免费.界面友好(个人认为没有matlab友好,matlab在我心中就是统计软件中极简主义的代表).小(压缩包就几十M,MATLAB.R2009b ...

  3. Elasticsearch的停用词(stopwords)

    1.问题 在使用搜索引擎(Elasticsearch或Solr)作为应用的后台搜索平台的时候,会遇到停用词(stopwords)的问题. 在信息检索中,停用词是为节省存储空间和提高搜索效率,处理文本时 ...

  4. python调用jieba(结巴)分词 加入自定义词典和去停用词功能

    把语料从数据库提取出来以后就要进行分词啦,我是在linux环境下做的,先把jieba安装好,然后找到内容是build jieba PKG-INFO setup.py test的那个文件夹(我这边是ji ...

  5. 如何在java中去除中文文本的停用词

    1.  整体思路 第一步:先将中文文本进行分词,这里使用的HanLP-汉语言处理包进行中文文本分词. 第二步:使用停用词表,去除分好的词中的停用词. 2.  中文文本分词环境配置 使用的HanLP-汉 ...

  6. es中的停用词

    停用词主要是为了提升性能与精度.从早期的信息检索到如今,我们已习惯于磁盘空间和内存被限制为很小一部分,所以 必须使你的索引尽可能小. 每个字节都意味着巨大的性能提升. 词干提取的重要性不仅是因为它让搜 ...

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

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

  8. 使用Python中的NLTK和spaCy删除停用词与文本标准化

    概述 了解如何在Python中删除停用词与文本标准化,这些是自然语言处理的基本技术 探索不同的方法来删除停用词,以及讨论文本标准化技术,如词干化(stemming)和词形还原(lemmatizatio ...

  9. 【Lucene3.6.2入门系列】第05节_自定义停用词分词器和同义词分词器

    首先是用于显示分词信息的HelloCustomAnalyzer.java package com.jadyer.lucene; import java.io.IOException; import j ...

随机推荐

  1. linux中安装tomcat

    01.去官网下载指定的安装包http://tomcat.apache.org/download-70.cgi 链接地址 02.在software目录下 使用命令wget 刚才复制的地址即可 03.使用 ...

  2. Python3 循环语句(十)

    Python中的循环语句有 for 和 while. Python循环语句的控制结构图如下所示: while 循环 Python中while语句的一般形式: while 判断条件: 语句 同样需要注意 ...

  3. 微信授权登录,关于调不起授权页面,无法响应回调方法,获取不到code 详解

    前期准备工作:申请AppId,下载资源包jar.文档等. 微信授权登录步骤: 1. 第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用或重定向到第三方网站,并且带上授权临时票据c ...

  4. ubuntu16 install nginx

    1,更新系统 sudo apt-get update 2,安装nginx sudo apt-get install nginx 3,验证是否安装成功 curl 127.0.0.1 常用配置文件和命令 ...

  5. Locust 介绍篇

    Locust介绍: Locust作为基于Python语言的性能测试框架. 其优点在于他的并发量可以实现单机10倍于LoadRunner和Jmeter工具.他的工作原理为协程并发,也就是gevent库. ...

  6. python 安装psutil包报错:

    报错: Failed building wheel for psutil Google得知,需要安装python-devel 和 wheel sudo dnf install python-devel ...

  7. odoo 数据库选择的随笔

    odoo 数据库选择的随笔 看到有人讨论 odoo 是否可以使用 SQL Server(MS SQL). 原来 odoo 使用的是 PostgreSQL,PostgreSQL 是很先进的关系性数据库, ...

  8. codis须知

    codis是豌豆荚team出的一个redis集群,和官方的集群区别的地方在于 基于proxy,官方是基于gossip codis所有的读写都通过proxy,对于前端业务是透明的 官方的是读写发现在某个 ...

  9. sqlite性能优化

    1.数据库性能上 1.1 批量事务插入,提升数据插入的性能 由于sqlite默认每次插入都是事务,需要对文件进行读写,那么减少事务次数就能简书磁盘读写次数从而获得性能提升. 1.2 单条sql优于多条 ...

  10. java之mail发送

    一.邮箱的应用在实际的Java开发过程中,也是非常常见的.我这里就是写了一个简单的邮箱发送功能. 二.邮箱的基本配置,使用的是JavaMailSender的提供的方式来实现邮件的发送 1)qq邮箱的配 ...