分词

Lucene简单介绍

百般思念 提交于 2020-02-13 23:54:46
【2016.6.11】以前写的笔记,拿出来放到博客里面~ 相关软件: Solr, IK Analyzer, Luke, Nutch;Tomcat; 1.是什么: Lucene是apache软件基金会jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包; 为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文 检索引擎; 2.主要应用: 对句子进行分词,从而实现自然语言分词后提取关键词并且进行拓展,再送入搜索引擎进行查询,提高精准度; 对数据库中的文档简历索引,实现快速的查找; 3.环境: 用java开发,很方便调用jar包; 4.具体类: org.apache.lucene.analysis;语言分析器,主要用于分词; 5.相关的开源类库: IK Analyzer 6.Lucene的开源企业搜索平台: Solr: Solr是用Java编写、运行在Servlet容器(如Apache Tomcat或Jetty)的一个独立的全文搜索服务器; Solr是高度可扩展的,并提供了分布式搜索和索引复制; 7.Nutch: 是一个开源的java实现的web 爬虫; 主要用于收集网页数据然后进行分析,建立索引等,底层使用Hadoop进行分布式计算与存储,索引使用Solr分布式索引框架; 依赖Hadoop的数据结构,适合批处理

lucene 学习之基础篇

纵饮孤独 提交于 2020-02-13 23:53:08
一、什么是全文索引 全文检索首先将要查询的目标文档中的词提取出来,组册索引(类似书的目录),通过查询索引达到搜索目标文档的目的,这种先建立索引,再对索引进行搜索的过程就叫全文索引。 从图可以看出做全文搜索的步骤: 1、对目标数据源中提取相应的词建立索引 2、通过检索索引(检索索引中的词),从而找到目标文件即源数据。 现在的全文检索不仅能对字符串进行匹配,而是已经发展到可以对大文本、语言、图像、活动影像等非结构化数据进行综合管理的发、大型软件。 二、lucene 百度百科 Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个 开放源代码 的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分 文本分析 引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。 Lucene 是一套用于 全文检索 和搜寻的开源程式库,由 Apache 软件基金会支持和提供。Lucene提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻。在Java开发环境里Lucene是一个成熟的免费 开源 工具。就其本身而言,Lucene是当前以及最近几年最受欢迎的免费Java信息检索程序库

中文分词技术笔记

允我心安 提交于 2020-02-13 23:02:45
参考《python自然语言处理实战核心技术与算法》 分词是自然语言处理的一项核心技术。中文分词算法大致分为三类,基于规则的分词算法、基于统计的分词算法、两者结合的分词算法。 一、基于规则的分词算法 基于规则的分词算法核心思想是维护一个词表,收录所有可能词,分词时拿待切分的字符串和此表中的词逐一查询匹配。找到则切分出来,没找到则不切分。 这种方法简单高效,便于理解,但是维护词表是一个很庞大的工程,而且现在的网络新词更新很快,基于规则很难将它们纳入其中。 关键算法是最大匹配算法,即以词表中最长的词的长度为单位步长,在待切分字符串中取步长长度的字串,再在词表中匹配,匹配到则将其切分出来并继续处理下一个步长,没有匹配到则将长度减少1继续进行匹配,直到匹配到或者长度为零,再进行下一轮匹配,直到切分完成。 最大匹配算法分为三种,正向最大匹配算法(MM),逆向最大匹配算法(RMM),双向最大匹配算法(BMM)。 (1)正向最大匹配算法(MM) 正向最大匹配算法的思路是从待切分字符串的头部开始做最大匹配。比如词表中最长词的长度为l,则从字符串中取前l个字符,从词表中匹配,如果匹配到则切分出来,没有匹配到则取前(l-1)个字符继续匹配,直到字串的长度为1,将其单独切分出来。反复进行直到字符串全部被处理。 算法实现: class MM(object): def __init__(self,

Elasticsearch常用命令

和自甴很熟 提交于 2020-02-08 22:17:48
Elasticsearch查询语法 关于倒排索引的一点思考: ES在保存文档时,会将原始文档通过_source字段保存,同时构建倒排索引,保存词项跟文档ID的关系。那么接下来有一个问题: 一个Type有一个倒排索引,还是一个Field对应一个倒排索引 ? 假设一个Type一个倒排索引,那么文档中所有分词的字段,都会进入这个唯一的倒排索引表里。举个例子,Type包含title字段和content字段,文档A的title和content都包含java这个词项,文档B只有content中包含java这个词项,那么在这个唯一的倒排索引表中,java词项对应A、B两个文档,你如果查询title中包含java词项时,ES就不知道要给你返回文档A还是B了!!! 所以,倒排索引是在Field维度,那么在组合查询时,即有多个查询条件,ES是如何处理的呢?比如查询title中包含java词项,content中包含作者Bruce Eckel的文档。那么,假设title的倒排索引表里,包含java的文档有A、B、C,在content的倒排索引里包含Bruce Eckel的文档有A、D、E,那么计算这2个倒排索引表结果的交集,即A就是满足条件的文档。 故在组合查询时,最终的结果为每个查询子项结果集的交集 cat API 查询当前ES集群相关的消息,包括集群中index数量、运行状态、当前几圈所在的ip

《自然语言处理实战入门》 ---- 第4课 :中文分词原理及相关组件简介 之 分词算法原理

允我心安 提交于 2020-02-07 10:18:14
文章大纲 分词算法介绍 语言模型 HMM CRF 结构化感知器 开源实现 bi LSTM 开源实现 汉语分词技术----以jieba 分词为例 Jieba分词的特点 分词算法 未登录词识别与词性标注 未登录词识别 词性标注 分词算法介绍 上一节课我们介绍了分词算法主要分为三个类别,除了基于统计算法的分词算法,基于规则的分词,一般都较为简单高效,但是词典的维护对于网络发达、新词层出不穷的今天,很难通过词典覆盖到所有的词。 随着大规模语料库的建立,统计机器学习方法的研究和发展, 来源: CSDN 作者: shiter 链接: https://blog.csdn.net/wangyaninglm/article/details/104206064

Kibana操作ES

核能气质少年 提交于 2020-02-07 04:04:31
Kibana操作ES 1,简介 1)为ES提供日志分析的web入口,可以对日志进行高效的搜索,可视化,分析等操作。 2)需要先创建索引模板,对应elasticsearch中的索引。 image.png 2,查询语法 1)直接输入关键字。 halo hzq 会分词,匹配每个单词,中文按字分词。 image.png image.png 2)短语。 不采用分词 ,使用双引号。 image.png 3)冒号指定字段包含关键字。 message 字段包含关键字 xxx image.png image.png image.png 4)冒号指定某字段包含某关键字。 不使用分词 image.png 5)通配符模糊匹配。 ?匹配单个字符。 message:jz46? *匹配0-多个字符。 message:jz46* 6)运算符AND,OR,NOT必须大写。 message:jz46* AND message:虫 message:jz46* NOT message:虫 message:jz46* OR message:"小心" (message:jz46* OR message:"小心") AND message:虫 //组合使用括号 7)范围查找(数字) image.png image.png image.png 8)特殊字符需要使用''\"转义。 + – && || ! ( ) { } [ ] ^

NLP入门(1)

扶醉桌前 提交于 2020-02-03 15:16:04
自然语言处理,简称:NLP,是指对人们平时日常使用的交流语言进行处理的一项技术。NLP 经过多年的发展,现今可以划分为两部分内容,即:自然语言的理解和自然语言的生成。 本文将以文本分类为目标,介绍自然语言处理相关的基础操作和应用。 (来自 https://www.shiyanlou.com/courses/1208 ) 做一个中文文本分类任务,首先要做的是文本的预处理,对文本进行分词和去停用词操作,来把字符串分割成词与词组合而成的字符串集合并去掉其中的一些非关键词汇(像是:的、地、得等)。再就是对预处理过后的文本进行特征提取。最后将提取到的特征送进分类器进行训练。 术语解释: 分词:词是 NLP 中能够独立活动的有意义的语言成分。即使某个中文单字也有活动的意义,但其实这些单字也是词,属于单字成词。 词性标注:给每个词语的词性进行标注,比如 跑/动词、美丽的/形容词等等。 命名实体识别:从文本中识别出具有特定类别的实体。像是识别文本中的日期,地名等等。 词义消歧:多义词判断最合理的词义。 句法分析:解析句子中各个成分的依赖关系。 指代消解:消除和解释代词「这个,他,你」等的指代问题。 1.Python字符串操作 变量名.count("A"):返回子串A在字符串中出现的次数 .strip() 方法可以去除字符串首尾的指定符号。无指定时,默认去除空格符 ' ' 和换行符 '\n'

Python jieba库的使用方法

耗尽温柔 提交于 2020-02-03 12:12:53
jieba库是一个python的第三方词库,是用来中文分词的这个库是需要下载的,我们需要在命令行输入pip install jieba来下载 pip install jieba 需要找到python安装路径的Scripts目录切换到该目录使用pip才有用,当然配了环境变量的是不需要的,如果使用的是pycharm也可以在pycharm的控制台直接使用该目录 我这是安装了,使用它显示了我的安装位置 安装完成之后就是使用jieba库了 jieba库主要有四个方法 jieba.lcut(s) # 精确模式,返回一个列表类型的分词结果 例:jieba.lcut("中国是一个伟大的国家) [‘中国’, ‘是’, ‘个’, ‘伟大’, ‘的’, ‘国家’] jieba.lcut(s,cut_all=Ture) # 全模式,返回一个列表类型的分词结果,存在冗余 例:[‘中国’, ‘国是’, ‘个’, ‘伟大’, ‘的’, ‘国家’] jieba.lcut_for_search(“中华人民共和国是伟大的”) # 搜索引擎模式,返回一个类型的分词结果,存在冗余 例:[‘中华’, ‘华人’, ‘人民’, ‘共和’, ‘共和国’, ‘中华人民共和国’, ‘是’, ‘伟大’, ‘的’] 向分词词典添加新词w jieba.add_word(w) # 例:jieba.add_word(“蟒蛇语言”)

搜索引擎Solr从入门到实战

旧时模样 提交于 2020-02-03 05:07:57
1.Solr安装与配置 1.1Solr简介 大多数搜索引擎应用都必须具有某种搜索功能,问题是搜索功能往往是巨大的资源消耗并且它们由于沉重的数据库加载而拖垮你的应用的性能。 这就是为什么转移负载到一个外部的搜索服务器是一个不错的主意,Apache Solr是一个流行的开源搜索服务器,它通过使用类似REST的HTTP API,这就确保你能从几乎任何编程语言来使用solr。 Solr是一个开源搜索平台,用于构建搜索应用程序。 它建立在Lucene(全文搜索引擎)之上。 Solr是企业级的,快速的和高度可扩展的。 使用Solr构建的应用程序非常复杂,可提供高性能。 为了在CNET网络的公司网站上添加搜索功能,Yonik Seely于2004年创建了Solr。并在2006年1月,它成为Apache软件基金会下的一个开源项目。并于2016年发布最新版本Solr 6.0,支持并行SQL查询的执行。 Solr可以和Hadoop一起使用。由于Hadoop处理大量数据,Solr帮助我们从这么大的源中找到所需的信息。不仅限于搜索,Solr也可以用于存储目的。像其他NoSQL数据库一样,它是一种非关系数据存储和处理技术。 总之,Solr是一个可扩展的,可部署,搜索/存储引擎,优化搜索大量以文本为中心的数据。 1.2 Solr安装 1:下载 Tomcat,解压Tomcat压缩包即可。 2:解压 solr。

lucene&solr全文检索_4改进

╄→гoц情女王★ 提交于 2020-02-01 22:27:32
在之前的程序中我们发现分词不太准确,因此我们可以使用支持中文分词。   分析器的执行过程:      从一个reader字符流开始,创建一个基于reader的tokenizer分词器,经过三个tokenfilter(第一个大写变小写,第二个用回车替换空格,去掉不需要的a,the,and,逗号等)生成tokens。要看分析器的分析效果只需要看tokenstream中的内容就可以了,每个分析器都有一个方法tokenstream,返回一个tokenstream对象。   lucene自带中文分析器: standardAnalyzer:单字分词即一个一个分 CJKAnalyzer:二分法,即两个一分,、 SmartChineseAnalyzer:对中文支持好,但扩展性差,对词库的操作不是很好处理。 由此可见上面三个分析器效果并不是很理想,因此要使用第三方分析器: paoding: 庖丁解牛最新版在 https://code.google.com/p/paoding/ 中最多支持 Lucene 3.0,且最新提交的代码在 2008-06-03,在svn中最新也是2010年提交,已经过时。 mmseg4j:最新版已从 https://code.google.com/p/mmseg4j/ 移至 https://github.com/chenlb/mmseg4j-solr ,支持 Lucene 4