Elasticsearch之停用词】的更多相关文章

前提 什么是倒排索引? Elasticsearch之分词器的作用 Elasticsearch之分词器的工作流程 Elasticsearch的停用词 1.有些词在文本中出现的频率非常高,但是对文本所携带的信息基本不产生影响. 2.英文 a.an.the.of 3.中文 的.了.着.是 .标点符号等 4.文本经过分词之后,停用词通常被过滤掉,不会被进行索引. 5.在检索的时候,用户的查询中如果含有停用词,检索系统也会将其过滤掉(因为用户输入的查询字符串也要进行分词处理). 6.排除停用词可以加快建立…
1.问题 在使用搜索引擎(Elasticsearch或Solr)作为应用的后台搜索平台的时候,会遇到停用词(stopwords)的问题. 在信息检索中,停用词是为节省存储空间和提高搜索效率,处理文本时自动过滤掉某些字或词,这些字或词即被称为Stop Words(停用词).停用词大致分为两类.一类是语言中的功能词,这些词极其普遍而无实际含义,比如“the”.“is“.“which“.“on”等.另一类是词汇词,比如'want'等,这些词应用广泛,但搜索引擎无法保证能够给出真正相关的搜索结果,难以缩…
ElasticSearch 2 (24) - 语言处理系列之停用词:性能与精度 摘要 在信息检索早期,磁盘和内存相较我们今天的使用只是很小的一部分.将索引空间保持在一个较小的水平是至关重要的,节省每个字节都意味着巨大的性能提升.词干提取(参见 缩减单词至词根形式(Reducing Words to Their Root Form))的重要性不仅是因为它让搜索的内容更广泛.让检索的能力更深入,还因为它是压缩索引空间的工具. 要减少索引空间的另一个简单的方法就是索引更少的词.在搜索中,有些词要比其他…
正向索引的结构如下: “文档1”的ID > 单词1:出现次数,出现位置列表:单词2:出现次数,出现位置列表:…………. “文档2”的ID > 此文档出现的关键词列表. 一般是通过key,去找value.  当用户在主页上搜索关键词“华为手机”时,假设只存在正向索引(forward index),那么就需要扫描索引库中的所有文档,找出所有包含关键词“华为手机”的文档,再根据打分模型进行打分,排出名次后呈现给用户.因为互联网上收录在搜索引擎中的文档的数目是个天文数字,这样的索引结构根本无法满足实时…
介绍 在使用elasticsearch进行搜索业务的时候,发现一篇和搜索关键字完全不匹配的文章排在最前面.打开它发现原来是这篇文章含有非常多的"的"这个无意义的词.而我的搜索关键字假设为"历史上的 今天",它可能就被ik_max_word分词后,刚好就有"的"这个词.所以会造成一篇含有很多"的"的文章,即使跟搜索关键字无关,也可能得分很高,排在前面. 那么我们需要做的就是如何对这些无意义的词——停用词进行屏蔽. 操作 其实这个…
停用词主要是为了提升性能与精度.从早期的信息检索到如今,我们已习惯于磁盘空间和内存被限制为很小一部分,所以 必须使你的索引尽可能小. 每个字节都意味着巨大的性能提升. 词干提取的重要性不仅是因为它让搜索的内容更广泛.让检索的能力更深入,还因为它是压缩索引空间的工具.一种最简单的减少索引大小的方法就是 _索引更少的词_. 有些词要比其他词更重要,只索引那些更重要的词来可以大大减少索引的空间.那么哪些词条可以被过滤呢?我们可以简单分为两组:低频词(Low-frequency terms)在文档集合中…
IK分词器虽然自带词库 但是在实际开发应用中对于词库的灵活度的要求是远远不够的,IK分词器虽然配置文件中能添加扩展词库,但是需要重启ES 这章就当写一篇扩展了 其实IK本身是支持热更新词库的,但是需要我感觉不是很好 词库热更新方案: 1:IK 原生的热更新方案,部署一个WEB服务器,提供一个Http接口,通过Modified和tag两个Http响应头,来完成词库的热更新 2:通过修改IK源码支持Mysql定时更新数据 注意:推荐使用第二种方案,也是比较常用的方式,虽然第一种是官方提供的,但是官方…
最近学习主题模型pLSA.LDA,就想拿来试试中文.首先就是找文本进行切词.去停用词等预处理,这里我找了开源工具IKAnalyzer2012,下载地址:(:(注意:这里尽量下载最新版本,我这里用的IKAnalyzer2012.zip 这本版本后来测试时发现bug,这里建议IKAnalyzer2012_u6.zip)) https://code.google.com/p/ik-analyzer/ 由于太多,而且名称我也搞不清楚,不知道下载哪个.后来我下载了IKAnalyzer2012.zip 压缩…
首先是用于显示分词信息的HelloCustomAnalyzer.java package com.jadyer.lucene; import java.io.IOException; import java.io.StringReader; import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.analysis.toke…
@Test // 測试分词的效果,以及停用词典是否起作用 public void test() throws IOException { String text = "老爹我们都爱您."; Configuration configuration = DefaultConfig.getInstance(); configuration.setUseSmart(true); IKSegmenter ik = new IKSegmenter(new StringReader(text), c…
package com.yl.wordcount import java.io.File import org.apache.spark.{SparkConf, SparkContext} import scala.collection.Iteratorimport scala.io.Source /** * wordcount进行排序并排除停用词 */object WordCountStopWords { def main(args: Array[String]) { val conf = n…
附注:不要问我为什么写这么快,是16年写的. R的优点:免费.界面友好(个人认为没有matlab友好,matlab在我心中就是统计软件中极简主义的代表).小(压缩包就几十M,MATLAB.R2009b的压缩包是1.46G).包多(是真的多,各路好友会经常上传新的包). R的麻烦之处:经常升级,是经常,非常经常,这就导致你在加载一个包之前需要考虑这个包要在R的哪个版本上才能使用,而往往做一件事情都要加载10个包左右,一般比较方便的做法就是先升级到最新版,因为只有小部分的包在新版本上不能用. 言归正…
适合阅读人群:有一定的数学基础. 这几篇文章是16年写的,之前发布在个人公众号上,公众号现已弃用.回过头来再看这几篇文章,发现写的过于稚嫩,思考也不全面,这说明我又进步了,但还是作为学习笔记记在这里了,方便以后自己经常查阅. 支持向量机(SVM)理论总结系列.线性可分(附带R程序案例:用体重和心脏重量来预测一只猫的性别) R系列:关联分析:某电商平台的数据:做捆绑销售和商品关联推荐 R系列:分词.去停用词.画词云(词云形状可自定义) end!…
Lucene自带的中文分词器SmartChineseAnalyzer不太好扩展,于是我用了IKAnalyzer来进行敏感词和停用词的过滤. 首先,下载IKAnalyzer,我下载了 然后,由于IKAnalyzer已经很久不更新了,不兼容现在的Lucene6版本,所以我参考网上的资料,重写了IKTokenizer和IKAnalyzer两个类. package kidsearch; import java.io.IOException; import java.io.Reader; import o…
hanlp的词典模式 之前我们看了hanlp的词性标注,现在我们就要使用自定义词典与停用词功能了,首先关于HanLP的词性标注方式具体请看HanLP词性标注集. 其核心词典形式如下: 自定义词典 自定义词典有多种添加模式,首先是展示的一个小例子,展示了词汇的动态增加与强行插入,删除等.更复杂的内容请参考后边的第二段代码. 简单的例子 from pyhanlp import * text = "攻城狮逆袭单身狗,迎娶白富美,走上人生巅峰"  # 怎么可能噗哈哈! print(HanLP.…
一.Lucene提供的分词器StandardAnalyzer和SmartChineseAnalyzer 1.新建一个测试Lucene提供的分词器的maven项目LuceneAnalyzer 2. 在pom.xml里面引入如下依赖 <!-- lucene 核心模块 --> <dependency> <groupId>org.apache.lucene</groupId> <artifactId>lucene-core</artifactId&…
[词项邻近] 邻近操作符(proximity)用于指定查询中的两个词项应该在文档中互相靠近,靠近程度通常采用两者之间的词的个数或者是否同在某个结构单元(如句 子或段落)中出现来衡量. [停用词] 一些常见词在文档和用户需求进行匹配时价值并不大, 需要彻底从词汇表中去除.这些词称为停用词(stop word).一个常用的生成停用词表的方法就是将词项按照文档集频率(collection frequency,每个词项在文档集中出现的频率)从高到低排列,然后手工选择那些语义内容与文档主题关系不大的高频词…
import jieba from collections import Counter from wordcloud import WordCloud import matplotlib.pyplot as plt from PIL import Image import numpy as np import jieba.analyse from pyquery import PyQuery santi_text = open('./santi.txt', 'r', encoding='utf…
酒店评论情感分析系统——用ictclas4j进行中文分词,并去除停用词 ictclas4j是中科院计算所开发的中文分词工具ICTCLAS的Java版本,因其分词准确率较高,而备受青睐. 注:ictclas4j缺点: a.在eclipse里的java文件一定要保存为gbk编码才可以正常运行,utf-8是不能运行的 b.ictclas4j目前不支持用户自定义字典 1. 下载ictclas4j 后面的附件中,我有放上ictclas4j的源码包ictclas4j.zip 2. 在Eclipse中新建项目…
LUCENE的创建索引有好多种分词方式,这里我们用的StandardAnalyzer分词 package cn.lucene; import java.io.IOException; import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.analysis.standard.StandardAnalyzer; import…
把语料从数据库提取出来以后就要进行分词啦,我是在linux环境下做的,先把jieba安装好,然后找到内容是build jieba PKG-INFO setup.py test的那个文件夹(我这边是jieba-0.38),把自己的自定义词典(选用,目的是为了分出原始词库中没有的词以及优先分出一些词),停用词词典(选用),需要分词的语料文件,调用jieba的python程序都放到这个文件夹里,就可以用啦.至于词典要什么样的格式,在网上一查就可以了. 之前有看到别的例子用自定义词典替换掉jieba本身…
爬取豆瓣电影<大侦探皮卡丘>的影评,并做词云图和关键词绘图第一步:找到评论的网页url.https://movie.douban.com/subject/26835471/comments?start=0&limit=20&sort=new_score&status=P第二步:鼠标放在评论上右键检查,分析源代码,确定抓取的内容. <span class="short">萌就行了!这个世界观感觉梦想成真了!</span>1如上,…
python 去除停用词  结巴分词 import jieba #stopwords = {}.fromkeys([ line.rstrip() for line in open('stopword.txt') ]) stopwords = {}.fromkeys(['的', '附近']) segs = jieba.cut('北京附近的租房', cut_all=False)final = ''for seg in segs:    seg = seg.encode('gbk')    if se…
中文分词一般使用jieba分词 1.安装 pip install jieba 2.大致了解jieba分词 包括jieba分词的3种模式 全模式 import jieba seg_list = jieba.cut("我来到北京清华大学", cut_all=True, HMM=False) print("Full Mode: " + "/ ".join(seg_list)) # 全模式 精准模式 import jieba seg_list = jie…
分词工具的选择: 现在对于中文分词,分词工具有很多种,比如说:jieba分词.thulac.SnowNLP等.在这篇文档中,笔者使用的jieba分词,并且基于python3环境,选择jieba分词的理由是其比较简单易学,容易上手,并且分词效果还很不错. 分词前的准备: 待分词的中文文档 存放分词之后的结果文档 中文停用词文档(用于去停用词,在网上可以找到很多) 分词之后的结果呈现: 去停用词和分词前的中文文档 去停用词和分词之后的结果文档 分词和去停用词代码实现: import jieba #…
1.  整体思路 第一步:先将中文文本进行分词,这里使用的HanLP-汉语言处理包进行中文文本分词. 第二步:使用停用词表,去除分好的词中的停用词. 2.  中文文本分词环境配置 使用的HanLP-汉语言处理包进行中文文本分词. ·HanLP-汉语言处理包下载,可以去github上下载 ·HanLP 的环境配置有两种方式:方式一.Maven:方式二.下载jar.data.hanlp.properties. ·官方环境配置步骤也可以在github上查询到. ·环境配置好后,java使用HanLP进…
1. 词袋模型 (Bag of Words, BOW) 文本分析是机器学习算法的一个主要应用领域.然而,原始数据的这些符号序列不能直接提供给算法进行训练,因为大多数算法期望的是固定大小的数字特征向量,而不是可变长度的原始文本. 为了解决这个问题,scikit-learn提供了从文本内容中提取数字特征的常见方法,即: tokenizing: 标记字符串并为每个可能的token提供整数id,例如使用空白和标点作为token分隔符:(分词标记) counting: 统计每个文档中出现的token次数:…
源码如下: import jieba import io import re #jieba.load_userdict("E:/xinxi2.txt") patton=re.compile(r'..') #添加字典 def add_dict(): f=open("E:/xinxi2.txt","r+",encoding="utf-8") #百度爬取的字典 for line in f: jieba.suggest_freq(li…
概述 了解如何在Python中删除停用词与文本标准化,这些是自然语言处理的基本技术 探索不同的方法来删除停用词,以及讨论文本标准化技术,如词干化(stemming)和词形还原(lemmatization) 在Python中使用NLTK,spaCy和Gensim库进行去除停用词和文本标准化 介绍 多样化的自然语言处理(NLP)是真的很棒,我们以前从未想象过的事情现在只是几行代码就可做到.这真的令人开心. 但使用文本数据会带来一系列挑战.机器在处理原始文本方面有着较大的困难.在使用NLP技术处理文本…
本篇介绍的是基于Elasticsearch实现搜索推荐词,其中需要用到Elasticsearch的pinyin插件以及ik分词插件,代码的实现这里提供了java跟C#的版本方便大家参考. 1.实现的结果 ①当搜索[qiy]的时候,能匹配企业.祈愿等 ②当搜索[qi业]的时候,只能匹配的到企业,如果没有企业,将使用模糊查询,匹配祈愿. ③当搜索[q业]的时候结果同②. ④当搜索[企y]或[企ye]的时候结果同②. ④当搜索[qy]的时候,能匹配企业.祈愿等. 2.实现的逻辑 中文匹配前缀==>全拼…