中文分词

3、安装中文分词器

天涯浪子 提交于 2019-11-30 01:06:52
一、前言 为什么要在elasticsearch中要使用ik这样的中文分词呢,那是因为es提供的分词是英文分词,对于中文的分词就做的非常不好了,因此我们需要一个中文分词器来用于搜索和使用。 二、IK分词器的安装和使用 我们可以从 官方github上下载该插件 ,我们下载对应于我们使用的es的版本的ik,注意选择与你安装的ElasticSearch版本对应的分词器。否则可能导致无法使用分词器。 中文分词器下载地址: https://github.com/medcl/elasticsearch-analysis-ik/releases 安装步骤 1、进入es的安装目录下的插件目录 cd /usr/local/elasticsearch-6.5.1/plugins/ 2、创建ik目录 来源: https://blog.csdn.net/lixiang987654321/article/details/100985724

lucene4.7 分词器(三)

空扰寡人 提交于 2019-11-29 21:52:03
前面几章笔者把Lucene基本入门的任督二脉给打通了,从此篇开始,就开始进行Lucene的进阶开发了,那么首先摆在我们面前的第一个必须要解决的问题,就是关于中文分词的问题,因为Lucene毕竟是国外的大牛们开发的,显然会比较侧重英文文章,不过还好,在Lucene的下载包里同步了SmartCN的分词器针对中文发行的,每一次Lucene有新的版本发行,这个包同时更新。 笔者比较推荐的中文分词器是IK分词器,在进入正式的讲解之前,我们首先对Lucene里面内置的几个分析器做个了解. 分析器类型 基本介绍 WhitespaceAnalyzer 以空格作为切词标准,不对语汇单元进行其他规范化处理 SimpleAnalyzer 以非字母符来分割文本信息,并将语汇单元统一为小写形式,并去掉数字类型的字符 StopAnalyzer 该分析器会去除一些常有a,the,an等等,也可以自定义禁用词 StandardAnalyzer Lucene内置的标准分析器,会将语汇单元转成小写形式,并去除停用词及标点符号 CJKAnalyzer 能对中,日,韩语言进行分析的分词器,对中文支持效果一般。 SmartChineseAnalyzer 对中文支持稍好,但扩展性差 评价一个分词器的性能优劣,关键是看它的切词效率以及灵活性,及扩展性,通常情况下一个良好的中文分词器,应该具备扩展词库,禁用词库和同义词库

nlp分词词性标注及命名实体

一个人想着一个人 提交于 2019-11-29 18:55:10
title: nlp分词词性标注及命名实体 date: 2019-08-27 14:26:38 categories: 人工智能 tags: nlp cover: https://www.github.com/OneJane/blog/raw/master/小书匠/5f549e01ba4ba668ee78d415b042a010_hd.jpg nlp分词词性标注及命名实体 分词 中文分词 (Chinese Word Segmentation) 指的是将一个汉字序列切分成一个一个单独的词。分词就是将连续的字序列按照一定的规范重新组合成词序列的过程。 词性标注 词性标注 (Part-of-Speech tagging 或POS tagging) 又称词类标注或者简称标注,是指为分词结果中的每个单词标注一个正确的词性的程 序,也即确定每个词是名词、动词、形容词或其他词性的过程。在汉语中,词性标注比较简单,因为汉语词汇词性多变的情况比较少见,大多词语只有一个词性,或者出现频次最高的词性远远高于第二位的词性。据说,只需选取最高频词性,即可实现80%准确率的中文词性标注程序。 命名实体识别 命名实体识别 (Named Entity Recognition,简称NER) 又称作“专名识别”,是指识别文本中具有特定意义的实体,主要包括人名、地名、机构名、专有名词等。一般来说

Hanlp中使用纯JAVA实现CRF分词

自作多情 提交于 2019-11-29 18:54:57
与基于隐马尔可夫模型的最短路径分词、N-最短路径分词相比,基于条件随机场(CRF)的分词对未登录词有更好的支持。本文(HanLP)使用纯Java实现CRF模型的读取与维特比后向解码,内部特征函数采用 双数组Trie树(DoubleArrayTrie)储存,得到了一个高性能的中文分词器。 开源项目 本文代码已集成到HanLP中开源: http://hanlp.com/ CRF简介 CRF是序列标注场景中常用的模型,比HMM能利用更多的特征,比MEMM更能抵抗标记偏置的问题。 CRF训练 这类耗时的任务,还是交给了用C++实现的CRF++。关于CRF++输出的CRF模型,请参考《CRF++模型格式说明》。 CRF解码 解码采用维特比算法实现。并且稍有改进,用中文伪码与白话描述如下: 首先任何字的标签不仅取决于它自己的参数,还取决于前一个字的标签。但是第一个字前面并没有字,何来标签?所以第一个字的处理稍有不同,假设第0个字的标签为X,遍历X计算第一个字的标签,取分数最大的那一个。 如何计算一个字的某个标签的分数呢?某个字根据CRF模型提供的模板生成了一系列特征函数,这些函数的输出值乘以该函数的权值最后求和得出了一个分数。该分数只是“点函数”的得分,还需加上“边函数”的得分。边函数在本分词模型中简化为f(s',s),其中s'为前一个字的标签,s为当前字的标签。于是该边函数就可以用一个4

HanLP1.5.2 -python使用介绍

浪尽此生 提交于 2019-11-29 18:54:23
自然语言处理 中文分词 词性标注 命名实体识别 依存句法分析 新词发现 关键词短语提取 自动摘要 文本分类聚类 拼音简繁 http://hanlp.com/ https://github.com/hankcs/HanLP HanLP: Han Language Processing 之前需要做一个中文命名实体识别的api,看完了一些相关论文以后觉得短时间内自己实现不大现实,于是找了一些开源工具,其中哈工大的LTP效果是很好的,但是免费使用限流量,需要给钱才行; NLPIR的pynlpir似乎还不能支持命名实体识别等复杂工作,只能做一些分词之类;最后还剩下Hanlp,感谢Hanlp的作者hancks无私的将代码开源,还提供了那么详细的文档。 pyhanlp只有少数功能,其他复杂一点的功能需要使用python调用java代码来实现。 以下是api的模型部分,大多是照着文档写成的。 python调用java需要jpype库,具体安装请参考之前的博客:jpype安装的简便方法 In [1]: import jpype from jpype import * jvmPath = jpype.getDefaultJVMPath() print(jvmPath) jpype.startJVM(jvmPath) jpype.java.lang.System.out.println("hello

pyhanlp 分词与词性标注

对着背影说爱祢 提交于 2019-11-29 18:54:11
pyhanlp中的分词器简介 pyhanlp实现的分词器有很多,同时pyhanlp获取hanlp中分词器也有两种方式 第一种是直接从封装好的hanlp类中获取,这种获取方式一共可以获取五种分词器,而现在默认的就是第一种维特比分词器 维特比 (viterbi):效率和效果的最佳平衡。也是最短路分词,HanLP最短路求解采用Viterbi算法 双数组trie树 (dat):极速词典分词,千万字符每秒(可能无法获取词性,此处取决于你的词典) 条件随机场 (crf):分词、词性标注与命名实体识别精度都较高,适合要求较高的NLP任务 感知机 (perceptron):分词、词性标注与命名实体识别,支持在线学习 N最短路 (nshort):命名实体识别稍微好一些,牺牲了速度 第二种方式是使用JClass直接获取java类,然后使用。这种方式除了获取上面的五种分词器以外还可以获得一些其他分词器,如NLP分词器,索引分词,快速词典分词等等 两种使用方式的对比 第一种是使用作者给的HanLP直接获取分词器,直接segment() 会获取 默认的标准分词器也就是维特比分词器,也**可以使用newSegment函数,传入上面的分词器英文名称来获取新的分词器,如使用 HanLP.newSegment("crf") 来获取CRF分词器。**第二种方式是使用JClass从java中获取我们想要的类

Java中文分词组件 - word分词(skycto JEEditor)

匆匆过客 提交于 2019-11-29 17:11:45
转自:https://my.oschina.net/apdplat/blog/228619#OSC_h4_8 Java 分布式中文分词组件 - word分词 word 分词是一个Java实现的分布式的中文分词组件,提供了多种基于词典的分词算法,并利用ngram模型来消除歧义。能准确识别英文、数字,以及日期、时间等数量词,能识别人名、地名、组织机构名等未登录词。能通过自定义配置文件来改变组件行为,能自定义用户词库、自动检测词库变化、支持大规模分布式环境,能灵活指定多种分词算法,能使用refine功能灵活控制分词结果,还能使用词性标注、同义标注、反义标注、拼音标注等功能。同时还无缝和Lucene、Solr、ElasticSearch、Luke集成。注意:word1.3需要JDK1.8 Maven 依赖: 在 pom.xml 中指定 dependency ,可用版本有 1.0 、 1.1 、 1.2 : < dependencies > < dependency > < groupId >org.apdplat</ groupId > < artifactId >word</ artifactId > < version >1.2</ version > </ dependency > </ dependencies > 分词使用方法: 1 、快速体验 运行项目根目录下的脚本 demo

Lucene使用IKAnalyzer中文分词笔记

蓝咒 提交于 2019-11-29 13:47:22
本文主要讲解 IKAnalyzer (以下简称‘ IK ’)在 Lucene 中的具体使用,关于 Lucene 和 IK 分词器的背景及其作用在这里就不再熬述。不得不感叹下 Lucene 版本变更的快速,如今最新已经到了 4.9.0 ,相信任何技术的发展壮大都不可避免有这一过程。本文使用的是 Lucene4.0 , IKAnalyzer 使用的是 2012FF 版。 Lucene 下载请移步官网 , IK 下载地址如下 : http://code.google.com/p/ik-analyzer/downloads/list IK 下载完成够拷贝至项目中,目录结构如下图所示 : 可以看到 src 目录下有三个配置文件,分别为扩展字典文件 ext.dic ,停止词字典文件 stopwprd.dic 和配置文件 IKAnalyzer.cfg.xml 。配置文件 IKAnalyzer.cfg.xml 为配置扩展字典文件和停止词字典文件路径。 IKAnalyzer.cfg.xml 文件默认放置在 classpath 的根目录下,可以修改源码来改变该文件位置。 在程序中使用 IK 很简单,只需要创建 IKAnalyzer 对象即可,因为 IKAnalyzer 继承于 Lucene 的 Analyzer 。 IK 无参构造函数默认采用细粒度切分算法, Analyzer analyzer =

Python 结巴分词 + Word2Vec利用维基百科训练词向量

流过昼夜 提交于 2019-11-28 18:21:43
结巴分词 是一个跨语言的中文分词器,整体效果还算不错,功能也够用,这里直接用Python了,其他主流语言版本均有提供。 Word2Vec,起源于谷歌的一个项目,在我刚开始接触的时候就关注到了他的神奇,大致是通过深度神经网络把词映射到N维空间,处理成向量之后我们终于可以在自然语言处理上方便的使用它进行一些后续处理。 Python的 gensim 库中有 word2vec 包,我们使用这个就可以了,接下来我们就对维基百科进行处理,作为训练集去训练。(包地址: http://radimrehurek.com/gensim/models/word2vec.html ) 本文参考: http://www.52nlp.cn/中英文维基百科语料上的word2vec实验 处理 使用维基百科的数据很方便,一是Wiki给我们提供了现成的语料库(听说是实时更新的),虽然中文体积不大,但比起自己爬来方便了不少。 如果使用英文那就更棒了,非常适合作为语料库。 当然只是说在通用的情况下,在专业词汇上,经过测试效果比较一般(考虑到专业词库有专业wiki,以及中文词条本身也不太多)。 首先,我们把Wiki处理成Text格式待处理的文本,这一步在本文参考中有现成的代码。 process_wiki_data.py #!/usr/bin/env python # -*- coding: utf-8 -*- #

ElasticSearch安装中文分词器

拈花ヽ惹草 提交于 2019-11-28 16:10:42
下载并安装ik分词插件。 ik分词官网: https://github.com/medcl/elasticsearch-analysis-ik 方式一: ./elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.2.0/elasticsearch-analysis-ik-7.2.0.zip 方式二: a. 在plugins目录下创建目录ik, 并把上述的zip压缩包里的内容解压到ik目录中。 b. 更改ik目录的所有者为ElasticSearch的启动账号 chown -R es ./ik/ c. 修改ik分词器下面的plugin-descriptor.properties文件 vim ./plugin-descriptor.properties 将其中的 elasticsearch.version=7.2.0 改成ElasticSearch的版本, 如 elasticsearch.version=7.2.1 1 2 3 4 5 6 7 8 9 10 11 12 13 重启ElasticSearch IK分词器提供了两种analyzer,分别是ik_max_word和ik_smart ik_max_word: 会将文本做最细粒度的拆分