分词

结巴分词 java 高性能实现,是 huaban jieba 速度的 2倍

ε祈祈猫儿з 提交于 2020-01-15 01:12:31
Segment Segment 是基于结巴分词词库实现的更加灵活,高性能的 java 分词实现。 变更日志 创作目的 分词是做 NLP 相关工作,非常基础的一项功能。 jieba-analysis 作为一款非常受欢迎的分词实现,个人实现的 opencc4j 之前一直使用其作为分词。 但是随着对分词的了解,发现结巴分词对于一些配置上不够灵活。 有很多功能无法指定关闭,比如 HMM 对于繁简体转换是无用的,因为繁体词是固定的,不需要预测。 最新版本的词性等功能好像也被移除了,但是这些都是个人非常需要的。 所以自己重新实现了一遍,希望实现一套更加灵活,更多特性的分词框架。 而且 jieba-analysis 的更新似乎停滞了,个人的实现方式差异较大,所以建立了全新的项目。 Features 特点 基于 DFA 实现的高性能分词 允许用户自定义词库 支持返回词性 默认关闭,惰性加载,不对性能和内存有影响。 快速入门 准备 jdk1.7+ maven 3.x+ maven 引入 <dependency> <groupId>com.github.houbb</groupId> <artifactId>segment</artifactId> <version>${最新版本}</version> </dependency> 使用示例 相关代码参见 SegmentBsTest.java 获取分词

自然语言处理之序列标注问题

≯℡__Kan透↙ 提交于 2020-01-13 20:38:42
  序列标注问题是自然语言中最常见的问题,在深度学习火起来之前,常见的序列标注问题的解决方案都是借助于HMM模型,最大熵模型,CRF模型。尤其是CRF,是解决序列标注问题的主流方法。随着深度学习的发展,RNN在序列标注问题中取得了巨大的成果。而且深度学习中的end-to-end,也让序列标注问题变得更简单了。   序列标注问题包括自然语言处理中的分词,词性标注,命名实体识别,关键词抽取,词义角色标注等等。我们只要在做序列标注时给定特定的标签集合,就可以进行序列标注。   序列标注问题是NLP中最常见的问题,因为绝大多数NLP问题都可以转化为序列标注问题,虽然很多NLP任务看上去大不相同,但是如果转化为序列标注问题后其实面临的都是同一个问题。所谓“序列标注”,就是说对于一个一维线性输入序列:        给线性序列中的每个元素打上标签集合中的某个标签:        所以,其本质上是对线性序列中每个元素根据上下文内容进行分类的问题。一般情况下,对于NLP任务来说,线性序列就是输入的文本,往往可以把一个汉字看做线性序列的一个元素,而不同任务其标签集合代表的含义可能不太相同,但是相同的问题都是:如何根据汉字的上下文给汉字打上一个合适的标签(无论是分词,还是词性标注,或者是命名实体识别,道理都是想通的)。 序列标注问题之中文分词   以中文分词任务来说明序列标注的过程。假设现在输入句子

Windows10 环境下安装 ElasticSearch

血红的双手。 提交于 2020-01-13 14:56:54
环境与版本 操作系统:windows 10 Elasticsearch 版本:6.1.1 Java 版本:9.0.1 ik 分词器版本:6.1.1 安装步骤 前置要求 操作系统中需要安装有 java 9.0.1 运行时环境 安装 Elasticsearch 新建文件夹 在 D 盘根目录下新建 ElasticSearchServer 文件夹 安装 java 系的软件,建议全路径不带 空格 例如:如果将这里的 ElasticSearchServer 改为 ElasticSearch Server ,ik 分词器就会报错 下载 Elasticsearch 压缩包 官方网站地址为: https://www.elastic.co/downloads/elasticsearch 因为是 windows 环境,所以选择 ZIP 文件 解压 Elasticsearch 压缩包 将第 2 步中下载的 elasticsearch-6.1.1.zip 文件解压至 ElasticSearchServer 文件夹下,即可完成 Elasticsearch 的安装 安装 ik 分词器 下载 ik 分词器压缩包 github 地址为: https://github.com/medcl/elasticsearch-analysis-ik/releases 选择 v6.1.1 下的 elasticsearch

solr8.3.1加入中文分词

偶尔善良 提交于 2020-01-13 10:01:45
solr8.3.1加入中文分词(solr在docker容器中运行) 创建的核心默认情况下没有中文分词,当我们输入一串中文,进行词语拆分时,solr会把每一个汉字都拆开,比如输入“我是中国人”,进行词语拆分的时候会拆成:“我”,“是”,“中”,“国”,“人”五个词。如下图。 这明显不是我们想要的结果。我们需要将中文分词加入到solr中,才能得到我们想要的结果。 如何加入中文分词器? 1、下载中文分词器jar包 ik-analyer-8.3.0.jar。 百度网盘下载 2、上传jar包并拷贝到 /usr/local/solr/solr/server/solr-webapp/webapp/WEB-INF/lib目录下 cp /data/soft/ik-analyer-8.3.0.jar /usr/local/solr/solr/server/solr-webapp/webapp/WEB-INF/lib chmod a+r ik-analyzer-8.3.0.jar 说明:/data/solft是docker容器中的目录,已经挂在到宿主机目录/data/coowalt/solr目录。请参考《Docker 安装solr8.3.1》一文。 3、修改/data/solr/data/meta_db/conf/目录下的managed-schema文件。加入ik-analayer配置信息 cd

docker下elasticsearch安装ik中文分词器

限于喜欢 提交于 2020-01-12 08:52:01
docker下elasticsearch安装ik中文分词器 下载ik分词器 https://github.com/medcl/elasticsearch-analysis-ik/releases 尽量保持下载的版本号跟es版本一致,免得出问题 解压ik #unzip elasticsearch-analysis-ik-7.5.1.zip -d /home/soft/ik-7.5.1 将解压后的文件夹复制到es plugins目录下 查看es容器id #docker ps 进入es容器内部 #docker exec -it 容器id /bin/bash 将解压后的文件夹复制到步骤3的plugins目录下, 以下命令要在容器外部执行,并不是容器内部执行 格式:#docker cp ik分词器目录 容器id:es plugins目录 #docker cp ik-7.5.1/ c0c627da68d1:/usr/share/elasticsearch/plugins 重启es容器 #docker restart c0c627da68d1 测试 #curl -H ‘Content-Type: application/json’ -XGET ‘localhost:9200/_analyze?pretty’ -d ‘{“analyzer”:“ik_smart”, “text”:“测试ik中文分词

浅谈solr

≡放荡痞女 提交于 2020-01-12 06:19:15
Solr是一个独立的 企业级搜索 应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。 Solr是一个高性能,采用Java5开发, Solr 基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的 全文搜索引擎 。 下面我们来看看如何使用solr: 解压下载的压缩包,solr 不需要使用Tomcat启动,自带jetty,(我会在文末注上solr下载地址:无需去官网翻墙---慢的一比- -) window运行cmd 找到solr解压后的目录: bin/solr.cmd start,solr默认端口为8983 出现如右图所示,即可,表明solr已经启动完毕。 访问:http://localhost:8983/solr/ 出现如下页面: solr 配置 创建core,cmd命令为:solr.cmd create -c articles。其中articles是core的名称,可以自定义。 2. 重启solr:solr restart -p 8983 3. 查看core:打开solr控制台,点击

es同时支持中文拼音分词(9)

ⅰ亾dé卋堺 提交于 2020-01-12 00:07:03
ES 如何支持拼音和中文分词 1. 自定义分词器 支持拼音和中文分词 DELETE /goods PUT /goods { "settings": { "analysis": { "analyzer": { "ik_smart_pinyin": { "type": "custom", "tokenizer": "ik_smart", "filter": ["my_pinyin", "word_delimiter"] }, "ik_max_word_pinyin": { "type": "custom", "tokenizer": "ik_max_word", "filter": ["my_pinyin", "word_delimiter"] } }, "filter": { "my_pinyin": { "type" : "pinyin", "keep_separate_first_letter" : true, "keep_full_pinyin" : true, "keep_original" : true, "limit_first_letter_length" : 16, "lowercase" : true, "remove_duplicated_term" : true } } } } } 重新指定文档类型映射拼音分词类型 POST /goods/_mapping

(四)DIH导入结构化数据

…衆ロ難τιáo~ 提交于 2020-01-11 07:38:39
(四)DIH导入结构化数据   目前大多数的应用程序将数据存储在关系数据库(如oracle、sql server 、mysql等)、xml文件中。对这样的数据进行搜索是很常见的应用。所谓的DataImportHandler提供一种可配置的方式向solr导入数据,即可以一次全部导入,也可以增量导入。还可以声明式提供可配置的任务调度,让数据定时的从关系型数据库更新数据到solr服务器。 一、环境   1、windows 7   2、jdk1.8   3、tomcat8   4、solr7.1.0   5、mysql5.5  6、IK分词器(支持solr7的最优版本,ik低版本不支持solr7) 二、配置ik分词器   solr7.1中进行IK中文分词器的配置和solr低版本中最大不同点在于IK 分词器中jar包的引用。   一般的IK分词jar包都是不能用的(如:IKAnalyzer2012FF_u1.jar这种就不能用),因为IK分词中传统的jar不支持solr7.1这个高版本的,所以就会发送运行错误的界面。   下面的这个错误是血淋漓的教训。 solr7.1下IK中文分词器的安装配置。   1、下载支持solr7.1的IK版本   下载solr7.1专用的IK 分词器的jar包和相应的配置文件。   2、拷贝jar文件到 solr项目下的WEB-INF\lib目录  

ES分词及文档映射简介

故事扮演 提交于 2020-01-10 11:34:32
文档(Document) :一般搜索引擎的处理对象是互联网网页,而文档这个概念要更宽泛些,代表以文本形式存在的存储对象,相比网页来说,涵盖更多种形式,比如Word,PDF,html,XML等不同格式的文件都可以称之为文档。再比如一封邮件,一条短信,一条微博也可以称之为文档。 文档集合 (Document Collection):由若干文档构成的集合称之为文档集合。比如海量的互联网网页或者说大量的电子邮件都是文档集合的具体例子。 文档编号 (Document ID):在搜索引擎内部,会将文档集合内每个文档赋予一个唯一的内部编号,以此编号来作为这个文档的唯一标识,这样方便内部处理,每个文档的内部编号即称之为“文档编号”,后文有时会用DocID来便捷地代表文档编号。 单词编号 (Word ID):与文档编号类似,搜索引擎内部以唯一的编号来表征某个单词,单词编号可以作为某个单词的唯一表征。 倒排索引 (Inverted Index):倒排索引是实现“单词-文档矩阵”的一种具体存储形式,通过倒排索引,可以根据单词快速获取包含这个单词的文档列表。倒排索引主要由两个部分组成:“单词词典”和“倒排文件”。 倒排表以字或词为关键字进行索引,表中关键字所对应的记录表项记录了出现这个字或词的所有文档,一个表项就是一个字表段,它记录该文档的ID和字符在该文档中出现的位置情况。

solr+facet学习笔记

泄露秘密 提交于 2020-01-01 06:32:14
一. Facet简介 Facet是solr的高级搜索功能之一,可以给用户提供更友好的搜索体验.在搜索关键字的同时,能够按照Facet的字段进行分组并统计. 二. Facet字段 1. 适宜被Facet的字段 一般代表了实体的某种公共属性,如商品的分类,商品的制造厂家,书籍的出版商等等. 2. Facet字段的要求 Facet的字段必须被索引.一般来说该字段无需分词,无需存储. 无需分词是因为该字段的值代表了一个整体概念,如电脑的品牌”联想”代表了一个整体概念,如果拆成”联”,”想”两个字都不具有实际意义.另外该字段的值无需进行大小写转换等处理,保持其原貌即可. 无需存储是因为一般而言用户所关心的并不是该字段的具体值,而是作为对查询结果进行分组的一种手段,用户一般会沿着这个分组进一步深入搜索. 3. 特殊情况 对于一般查询而言,分词和存储都是必要的.比如CPU类型”Intel 酷睿2双核 P7570”,拆分成”Intel”,”酷睿”,”P7570”这样一些关键字并分别索引,可能提供更好的搜索体验.但是如果将CPU作为Facet字段,最好不进行分词.这样就造成了矛盾,解决方法为,将CPU字段设置为不分词不存储,然后建立另外一个字段为它的COPY,对这个COPY的字段进行分词和存储. schema.xml 三. Facet组件 Solr的默认requestHandler(org