分词

Elasticsearch安装IK中文分词插件

时间秒杀一切 提交于 2019-12-10 10:17:46
一,从github上下载最新的Ik分词源码到本地 git clone https://github.com/medcl/elasticsearch-analysis-ik clone到本地后,将elasticsearch-analysis-ik目录中的 config/ik/ 整个目录拷贝到Elasticsearch安装目录的config目录下。 二,将elasticsearch-analysis-ik目录下的config中的elasticsearch.yml文件覆盖Elasticsearch安装目录下的config目录中的elasticsearch.yml文件。 三,进入到刚clone的 elasticsearch-analysis-ik目录中,执行maven命令打包: mvn clean package 如果没有安装maven工具的话,需要先安装一下maven工具,具体的安装参考 官网的具体安装步骤。 执行上述命令之后,IK的分词包已经准备好了,下面就开始安装了。 四, 运行Elasticsearch安装路径下的bin目录中的plugin命令安装刚刚编译好的分词包: plugin —install analysis-ik —url file:///#{project_path}/elasticsearch-analysis-ik/target/releases

搜索引擎关键技术:中文分词技术介绍

≯℡__Kan透↙ 提交于 2019-12-10 07:03:28
信息的飞速增长,使搜索引擎成为人们查找信息的首选工具,Google、百度等大型搜索引擎一直是人们讨论的话题。随着搜索市场价值的不断增加,越来越多的公司开发出自己的搜索引擎,阿里巴巴的商机搜索、8848的购物搜索等也陆续面世,自然,搜索引擎技术也成为技术人员关注的热点。 虽然在国外搜索引擎技术早就开始研究,但在国内还是陆续涌现出优秀的搜索引擎,像百度等。目前在中文搜索引擎领域,国内的搜索引擎已经和国外的搜索引擎效果上相差不远。之所以能形成这样的局面,有一个重要的原因就在于中文和英文两种语言自身的书写方式不同,这其中对于计算机涉及的技术就是中文分词。 什么是中文分词 众所周知,英文是以词为单位的,词和词之间是靠空格隔开,而中文是以字为单位,句子中所有的字连起来才能描述一个意思。例如,英文句子I am a student,用中文则为:“我是一个学生”。计算机可以很简单通过空格知道student是一个单词,但是不能很容易明白“学”、“生”两个字合起来才表示一个词。把中文的汉字序列切分成有意义的词,就是中文分词,有些人也称为切词。我是一个学生,分词的结果是:我 是 一个 学生。 中文分词和搜索引擎 中文分词到底对搜索引擎有多大影响?对于搜索引擎来说,最重要的并不是找到所有结果,因为在上百亿的网页中找到所有结果没有太多的意义,没有人能看得完,最重要的是把最相关的结果排在最前面

为coreseek添加mmseg分词

ぃ、小莉子 提交于 2019-12-07 21:11:54
由于在工作中遇到了林书豪这个词,原来的分词库里面没有就找了下文档,自己整理了一份,以交流备忘。 1.准备好需要添加的词表,一般都是每行一词,注意要保存为utf-8; 例如: -- 林书豪 -- 2.利用UltraEdit的查找替换功能,使词表格式符合mmseg的要求; 例如: 打开UltraEdit的正则替换功能,将“^p”替换为“^t1^px:1^p” 结果是: -- 林书豪 [tab]1 x:1 -- 其他的也行 3.将生成的符合格式要求的词表粘贴到原词表unigram.txt末尾,保存为unigram_new.txt,并拷贝到mmseg所在的目录下; 4.生成新的 uni /usr/local/mmseg3/bin/mmseg -u /usr/local/mmseg3/etc/unigram_new.txt 就会生成新的词典文件unigram_new.txt.uni 5.将新的 unigram_new.txt.uni 替换原有的uni.lib mv /usr/local/mmseg3/etc/unigram_new.txt.uni /usr/local/mmseg3/etc/uni.lib 6.重新建立索引库、重启searchd /usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/c.conf --all -

mmseg4j分词的使用

左心房为你撑大大i 提交于 2019-12-07 12:03:57
在应用程序中使用 maven坐标: <dependency> <groupId>com.chenlb.mmseg4j</groupId> <artifactId>mmseg4j-core</artifactId> <version>1.10.0</version> </dependency> 默认加载词典的路径代码如下(源码单词拼写有错误,将就着看吧,readonly): 另外,可以建立自己的词库,文件名为words*.dic,并且文件要以UTF-8无BOM格式编码。 * 每个分词文件必须以words开头,.dic结尾,如:words-canmou.dic * 每个分词文件大小必须控制在50M以内,否则很可能会OOM /** * 当 words.dic 是从 jar 里加载时, 可能 defalut 不存在 */ public static File getDefalutPath() { if(defalutPath == null) { String defPath = System.getProperty("mmseg.dic.path"); log.info("look up in mmseg.dic.path="+defPath); if(defPath == null) { URL url = Dictionary.class.getClassLoader()

打造自己的coreseek分词词库

廉价感情. 提交于 2019-12-07 12:03:44
下面给大家介绍一下如何打造自己的coreseek分词词库。 coreseek自身带的词库不是很大,直接使用它分词可能会返回大量没用结果。要想搜索结果准确打造一个专门的分词 词库必不可少。   i. 首先到搜狗http://pinyin#sogou#com/dict/下载你要的词库   ii. 因为下载回来的词库不是文本文件我们不能直接使用,所以要先转换成文本文件。网上找一个搜狗转 google的小工具,用它把你下载的全部词库转成文本文件。合并为一个文件命名为words.txt。文件要用utf8编码 保存,如果想直接使用我下面的工具进行转换的话文件名一定要是words.txt。如果你想自己转换请参考官网上的方 法http://www#coreseek#cn/opensource/mmseg/   iii. 现在我们有了一个初步的词库,但这个词库还不能直接使用,要再整理并转换coreseek使用的格式才行。 这里我提供一个自己编写的小程序方便转换。 源程序如下: /** Last edit 2012-8-11 Copyrigh@ www.4ji.cn **/ ini_set('max_execution_time','6000'); $buffer=ini_get('output_buffering'); if($buffer)ob_end_flush(); echo '处理新词库..

ElasticSearch的API使用

◇◆丶佛笑我妖孽 提交于 2019-12-07 11:34:25
前言:之前写过如何安装ElasticSearch(以下简称ES)以及简单的crud的使用实例的博客,不过ElasticSearch的版本变化太快,像之前的5.6版本使用的TransPortClient目前已经无法使用了,官方的API变化较快.最近工作中需要用到ES作为查询的中间件,项目组长决定使用7.4.2最新版本,在项目中如何使用ElasticSearch整个任务交给了我,经过几天的研究(瞎折腾),终于把基本的使用方法搞明白了,因为网上关于7.4.2版本的API使用说明实在太少,所以我决定整理成一篇博客发出来~ 目录 一:ES的基本数据类型 二:查询的基本语言 三:使用实例 四:总结 正文 一:ES的基本数据类型 ES的数据类型大概可以分为以下几种,值得注意的是ES是没有java中的list或者set这个概念的,每种类型都天然的支持list多层数据,但是如果设置为list的类信息,就必须将数据类型指定为nested,详情看以下介绍: 二:基本的查询语言 es的查询语言叫做QSL,也就是它的查询语言,和mysql的sql概念类似,所有的查询都需要去匹配相关的QSL才能得到信息,同时QSL又有自己的语法,必须遵守语法才能得到我们想要的信息,接下来我们就来解析一下QSL. 1.1:Index Index是ES的数据库的概念,所以一开始就必须建立索引,在7.4

Solr企业搜索引擎搭建

痴心易碎 提交于 2019-12-06 23:10:22
一、 SOLR搭建企业搜索平台 运行环境: 运行容器:Tomcat6.0.20 Solr版本:apache-solr-1.4.0 分词器:mmseg4j-1.6.2 词库:sogou-dic 准备工作: 下载tomcat 6.0.20:http://tomcat.apache.org/download-60.cgi 下载solr:http://apache.etoak.com/lucene/solr/1.4.0/ 详情请见:http://wiki.apache.org/solr/Solr1.4 下载分词器:http://code.google.com/p/mmseg4j/ 下载sougou词库: http://code.google.com/p/mmseg4j/downloads/detail?name=sogou-dic-utf8.zip&can=2&q= 开始配置: 1、安装tomcat 2、将下载的solr包下面的dist文件夹中的apache-solr-1.4.0.war 拷贝到 tomcat的webapps 并且改名为 solr.war 一般情况下会自动生成相应的文件夹。 3、新建一个 solr-tomcat文件夹,我是把这个文件夹建立在C盘根目录,你可以采用同样方式,也可以不这样,放哪由你决定。 建立好该文件夹以后,在把它下面在建立一个solr文件夹

结巴分词安装

依然范特西╮ 提交于 2019-12-06 21:36:15
结巴分词是 Python 语言中效果最好的分词工具,其功能包括:分词、词性标注、关键词抽取、支持用户词表等。 官网地址: https://github.com/fxsjy/jieba 1、安装。 按照官网上的说法,有三种安装方式, 第一种是全自动安装: easy_install jieba 或者 pip install jieba ,推荐用第一种。 第二种方法是半自动安装:先下载 http://pypi.python.org/pypi/jieba/ ,解压后在cmd命令行中运行 python setup.py install。 第三种方法是手动安装:将jieba目录放置于当前目录或者site-packages目录。把下载到的jieba-0.30.zip解压后,里面有个jibba的文件夹,把它复制到与你的Python程序相同的位置,这样在程序中就可以执行“import jieba”了。 2、关于分词的实现 官网提供了分词的基本用法示例 : #encoding=utf-8 import jieba seg_list = jieba.cut("我来到北京清华大学", cut_all=True) print "Full Mode:", "/ ".join(seg_list) # 全模式 seg_list = jieba.cut("我来到北京清华大学", cut_all=False)

NLP系列1:NER

淺唱寂寞╮ 提交于 2019-12-06 16:28:01
写在前面:在初学nlp时的第一个任务——NER,尝试了几种方法,cnn+crf、lstm+crf、bert+lstm+crf,毫无疑问,最后结果时Bert下效果最好。 1、关于NER:   NER即命名实体识别是信息提取的一个子任务,但究其本质就是序列标注任务。   eg:   sentence:壹   叁  去 参加一个 NER 交 流 会   tag:   B_PER I_PER O O O O O B_ORG I_ORG I_ORG I_ORG   (咱们暂且认为这个实体标记是正确的)   按照CoNLL2003任务中,LOC-地名 、PER-人名、ORG-机构名、MISC-其他实体,其他此被标记为O,B代表实体名的开始位置,I代表实体名的中间位置。 (在具体任务中标记不一,按照自己的任务中进行标记即可)   NER是一个基础问题,不会不行,但是也是一个非常重要的问题,下面将按照实现过程中碰到的问题依次进行阐述(小白,如有错误,请疯狂留言喷我,一定改正)。 首先的明白NER是一个分类任务,也叫序列标注,其实就是对文本的不同实体标记上对应的标签。 方法主要如下: 基于规则:按照语义学的先验定义规则,由于语言的复杂性,这个方法很难制定出良好的规则; 基于统计学:统计学就是根据大量文本,在其中找到规律,代表作有HMM、CRF; 神经网络:神经网络的大放异彩在各个领域都点亮了一片天空

ES创建索引映射指定分词策略

守給你的承諾、 提交于 2019-12-06 14:48:21
本文参考自: https://blog.csdn.net/diyiday/article/details/82153780 在es中使用我们自定义的IK分词插件的时候,创建索引时指定分词,如 { "settings": { "index.analysis.analyzer.default.type": "ik_max_word" //对应 IK 的 ik_max_word 和 ik_smart 两种分词策略 }, "mappings": { "doc": { //文档类型,对应doc_type "properties": { "dep_airport": { //要分词的字段名称 "type": "text", "analyzer": "ik_max_word" //对应 IK 的 ik_max_word 和 ik_smart 两种分词策略 } } } } } 我这里使用Postman工具来创建索引,如下图所示: 创建好了把请求方式切换到GET,然后点击send会出现如下图类似内容则表示索引创建成功 然后就可以往这个索引:ly_data6中插入数据啦: 插入数据可以查询试试,例如我这里的测试: 来源: CSDN 作者: 小牛牛先生 链接: https://blog.csdn.net/qq_32502511/article/details/86305431