HanLP

Spring MVCD框架中调用HanLP分词的方法

时间秒杀一切 提交于 2019-12-02 16:35:17
项目简要:关于java web的一个项目,用的Spring MVCd 框架。鉴于参与此次项目的人中并不是所人都做的Spring,为了能够提高效率,建议大家是先抛开SPring来写自己负责的模块,最后再把各个模块在Spring里面集成。 项目里有一个文本分析的模块是一个同学用hanlp写的,由于在最后集成的时候直接使用maven添加的依赖,但最终测试时无法通过。后经分析发现她坐了实体识别,是自己改了hanlp的词典,手动加了很多词,而且在后期版本的迭代中还有可能继续改了hanlp的词典,这就意味着不能用maven直接导入仓库里的包了,只有将修改后的data文件放到本地,然后指定路径给hanlp。 网上有一些解决的方法,但都是在项目部署的时候,把hanlp的词典数据放到服务器上一个固定位置上,然后再配置hanlp的配置文件,指定一个固定位置。这种方法虽然比较直接,但是并不能够把hanlp的词典数据与整个项目打包到一起,后期的管理也比较麻烦。倘若把数据直接作为项目的资源文件,部署到Tomcat上后无论怎么在配置里写路径都会提示找不到词典文件。 在分析了HanLP的issue之后,发现这个项目支持自定义读写文件的IO类。在一个将词典数据放到HDFS上的一个blog启发下,尝试通过重写一个IOAdapter类,使用读写静态资源文件的方法读取词典数据了,这样不就可以把data跟项目打包到一起了

ubuntu下pycharm调用Hanlp实践分享

自闭症网瘾萝莉.ら 提交于 2019-12-02 16:35:03
前几天看了大快的举办的大数据论坛峰会的现场直播,惊喜的是hanlp2.0版本发布。Hanlp2.0版本将会支持任意多的语种,感觉还是挺好的!不过更多关于hanlp2.0的信息,可能还需要过一段时间才能看到,只能等一下了!下面分享一篇大神的文章,是关于在ubuntu下使用pycharm调用hanlp的实验。 以下为全文: 首先点击File,选择Settings,在Project 下点击Project Interpreter,并通过点击右边的加号: 搜索JPype,根据python版本选择你需要的JPype版本安装。 之后,在https://github.com/hankcs/HanLP/releases 网站下载hanlp.jar包、模型data包、配置文件hanlp.properties,新建一个文件夹Hanlp, 把hanlp.jar和hanlp.properties放进去;之后需要再新建一个文件夹hanlp,并将data放进去; 修改Hanlp下的路径为当前data的路径,由于我将data放在/home/javawork/hanlp下,因此:root=/home/javawork/hanlp/ 接下来新建一个文件demo_hanlp.py,代码如下: #! /usr/bin/env python2.7 #coding=utf-8 from jpype import * #

自然语言处理工具HanLP被收录中国大数据产业发展的创新技术新书《数据之翼》

让人想犯罪 __ 提交于 2019-12-02 08:19:18
在12月20日由中国电子信息产业发展研究院主办的2018中国软件大会上,大快搜索获评“2018中国大数据基础软件领域领军企业”,并成功入选中国数字化转型TOP100服务商。 图:大快搜索获评“2018中国大数据基础软件领域领军企业” 在本届2018中国软件大会上,不仅宣传并成立了数字转型促进会,还发布了由中国大数据产业生态联盟副秘书长、《软件和集成电路》杂志社总编辑郭嘉凯编辑的新书——《数据之翼-引领中国大数据产业发展的创新技术》。在本书的第一章节收录介绍了大快搜索自主研发的Hanlp技术。 图:数据之翼-引领中国大数据产业发展的创新技术 Hanlp是由大快搜索高级研究员何晗主导开发的完全开源的项目,具有精度高、速度快、内存省的特点。 2014年,还在攻读日语本科的何晗(大快搜索高级研究员)一定没想到,机缘巧合研发的一款中文分词器,在随后几年中几经迭代,并在商用市场大放异彩。 而看似是“无心插柳柳成荫”的事情,却凝聚着何晗对Hanlp工匠式的锤炼。 Hanlp是由一系列模型与算法组成的工具包,目标是普及自然语言处理(NLP)在生产环境中的应用。Hanlp具备功能完善、性能高效、架构清晰、语料时新、可自定义的特点:能够提供词法分析(中文分词、词性标注、命名实体识别)、句法分析、文本分类和情感分析等功能。 来源: oschina 链接: https://my.oschina.net/u

Hanlp等七种优秀的开源中文分词库推荐

心已入冬 提交于 2019-12-01 08:28:47
中文分词是中文文本处理的基础步骤,也是中文人机自然语言交互的基础模块。由于中文句子中没有词的界限,因此在进行中文自然语言处理时,通常需要先进行分词。 纵观整个开源领域,陆陆续续做中文分词的也有不少,不过目前仍在维护的且质量较高的并不多。下面整理了一些个人认为比较优秀的中文分词库,以供大家参考使用。 1、 HanLP —— 汉语言处理包 HanLP是一系列模型与算法组成的NLP工具包,由大快搜索主导并完全开源,目标是普及自然语言处理在生产环境中的应用。HanLP具备功能完善、性能高效、架构清晰、语料时新、可自定义的特点。 HanLP提供下列功能: 中文分词 HMM-Bigram(速度与精度最佳平衡;一百兆内存) 最短路分词、N-最短路分词 由字构词(侧重精度,可识别新词;适合NLP任务) 感知机分词、CRF分词 词典分词(侧重速度,每秒数千万字符;省内存) 极速词典分词 所有分词器都支持: 索引全切分模式 用户自定义词典 兼容繁体中文 训练用户自己的领域模型 词性标注 HMM词性标注(速度快) 感知机词性标注、CRF词性标注(精度高) 命名实体识别 基于HMM角色标注的命名实体识别 (速度快) 中国人名识别、音译人名识别、日本人名识别、地名识别、实体机构名识别 基于线性模型的命名实体识别(精度高) 感知机命名实体识别、CRF命名实体识别 关键词提取 TextRank关键词提取

Hanlp自然语言处理中的词典格式说明

拟墨画扇 提交于 2019-12-01 08:20:04
使用过hanlp的都知道hanlp中有许多词典,它们的格式都是非常相似的,形式都是文本文档,随时可以修改。本篇文章详细介绍了hanlp中的词典格式,以满足用户自定义的需要。 基本格式 词典分为词频词性词典和词频词典。 1、词频词性词典(如CoreNatureDictionary.txt) (1)每一行代表一个单词,格式遵从[单词] [词性A] [A的频次] [词性B] [B的频次] ...。 (2)支持省略词性和频次,直接一行一个单词。 (3).txt词典文件的分隔符为空格或制表符,所以不支持含有空格的词语。如果需要支持空格,请使用英文逗号,分割的纯文本.csv文件。在使用Excel等富文本编辑器时,则请注意保存为纯文本形式。 2、词频词典(如CoreNatureDictionary.ngram.txt) (1)每一行代表一个单词或条目,格式遵从[单词] [单词的频次]。 (2)每一行的分隔符为空格或制表符。 少数词典有自己的专用格式,比如同义词词典兼容《同义词词林扩展版》的文本格式,而转移矩阵词典则是一个csv表格。 下文主要介绍通用词典,如不注明,词典特指通用词典。 数据结构 Trie树(字典树)是HanLP中使用最多的数据结构,为此,我实现了通用的Trie树,支持泛型、遍历、储存、载入。

如何在hanlp词典中手动添加未登录词

别说谁变了你拦得住时间么 提交于 2019-12-01 08:19:53
我们在使用hanlp词典进行分词的时候,难免会出现分词不准确的情况,原因是由于内置词典中并没有收录当前的这个词,也就是我们所说的未登录词,只要把这个词加入到内置词典中就可以解决类似问题,如何操作,下面我们就看一下具体的步骤 1 、 找到hanlp内置词典目录 位于D:\hnlp\hanlp_code\hanlp\data\dictionary\custom也就是Hanlp安装包中的data\dictionary\custom下目录 2 、 将未登录词以词名,词性,词频的格式添加到文件中(句首或者句尾都可以) 3 、 将字典的同名bin文件删除掉 执行文件时读取的是bin文件,必须删掉后等下次执行时重新生成,新字典才发挥作用 4 、 使用新字典重新执行文件 执行时会遇到没有相关bin文件的提示,不过放心,程序会自动生成一个新的bin文件,骚等片刻,就好了。 验证结果是否正确 来源: oschina 链接: https://my.oschina.net/u/3793864/blog/3023936

HanLP-停用词表的使用示例

情到浓时终转凉″ 提交于 2019-12-01 08:19:15
停用词表的修改 停用词表在“pyhanlp\static\data\dictionary”路径下的“stopwords.txt”文件中,CoreStopWordDictionary.apply方法支持去除停用词。如果需要修改停用词表,则直接编辑文件“stopwords.txt”,之后删除路径下的“stopwords.txt.bin”,运行CoreStopWordDictionary.apply后即可自动生效。有关验证的方法见“验证是否生效”小节。 自定义词语过滤方法 用户可以通过编写“pyhanlp\static”路径下的“MyFilter.java”文件设置自己的词语过滤方法。应当注意这里处理的语言单位是词语,而不是字。编辑完毕后需要编译该文件并生成字节码文件,之后运行CoreStopWordDictionary.apply方法时就会自动调用用户自己的词语过滤方法了。这里给出一个自定义过滤方法的编写示例代码。 import os from pyhanlp.static import STATIC_ROOT, HANLP_JAR_PATH java_code_path = os.path.join(STATIC_ROOT, 'MyFilter.java') with open(java_code_path, 'w') as out: java_code = """ import

python调用hanlp进行命名实体识别

孤人 提交于 2019-12-01 08:18:48
本文分享自 6丁一的猫 的博客,主要是python调用hanlp进行命名实体识别的方法介绍。以下为分享的全文。 1、python与jdk版本位数一致 2、pip install jpype1(python3.5) 3、类库hanlp.jar包、模型data包、配置文件hanlp.properties放在一个新建目录 4、修改hanlp.properties中root根目录,找到data 代码调用如下: 1|#coding:utf-8 2|''' 3|Created on 2017-11-21 4| 5| @author : 刘帅 6|''' 7| 8| 9|from jpype import * 10| 11|startJVM(getDefaultJVMPath(), "-Djava.class.path=D:\hanlp\hanlp-1.3.4.jar;D:\hanlp", "-Xms1g", "-Xmx1g") # 启动JVM,Linux需替换分号;为冒号: 12|HanLP = JClass('com.hankcs.hanlp.HanLP') 13|# 中文分词 14|print(HanLP.segment('你好,欢迎在Python中调用HanLP的API')) testCases = [ 15| "商品和服务", 16| "结婚的和尚未结婚的确实在干扰分词啊", 17|

Hanlp1.7版本的新增功能一览

帅比萌擦擦* 提交于 2019-12-01 08:18:30
Hanlp1.7版本在去年下半年的时候就随大快的DKH1.6版本同时发布了,截至目前1.7大版本也更新到了1.7.1了。本篇分别就1.7.0和1.7.1中新增的功能做一个简单的汇总介绍。 HanLP 是由一系列模型与算法组成的 Java 工具包,目标是普及自然语言处理在生产环境中的应用。HanLP 具备功能完善、性能高效、架构清晰、语料时新、可自定义的特点。 在提供丰富功能的同时,HanLP 内部模块坚持低耦合、模型坚持惰性加载、服务坚持静态提供、词典坚持明文发布,使用非常方便,同时自带一些语料处理工具,帮助用户训练自己的模型。 1.7.0 更新如下: 新增文本聚类模块(k-means和repeated bisection) 词法分析器新增流水线模式 词法分析器加入规则 enableRuleBasedSegment #991 支持通过 JVM 的启动参数指定 data 路径:java -DHANLP_ROOT=/opt/hanlp 则加载/opt/hanlp/data #983 分词断句支持指定断句颗粒 #1018 CustomDictionary.insert("新词语", "词性标签") 支持省略频次 NeuralNetworkDependencyParser 构造函数接受 Segment TextRankKeyword 支持构造自任意分词器 优化双数组 trie 树

菜鸟如何使用hanlp做分词的过程记录

半城伤御伤魂 提交于 2019-12-01 08:18:16
菜鸟如何使用 hanlp做分词的过程记录 最近在学习hanlp的内容,准备在节后看看有没有时间整理一波hanlp分享下,应该还是会像之前分享DKHadoop一样的方式吧。把整个学习的过程中截图在配文字的方式搞一下。 这两天也在看一些其他人分享的hanlp学习和使用分享的文章,后面看到的分享也会转载分享给大家。今天分享的这篇也是很早前别人分享的一篇如何用hanlp做分词的文章,新手入门级的可以看看! boss给了个做分词的任务,最开始想用的是结巴分词and正则表达式。后来发现结果并不好,需要一遍一遍筛选【第一个标准筛选出80%的数据,然后制定第二个标准,继续筛选,然后制定第三个标准筛选,等等等等】 自己用了一下结巴分词,感觉对于人名,地名,机构名,只是泛泛地使用了一下。在实际分开的时候,并不能很好地分开机构名称。于是转而使用hanlp分词。 但是hanlp分词的缺点是只有在java上可以用,但是java一向又是我的弱项。所以在这里写一篇博客从头至尾叙述一下怎么样使用hanlp。 而且,小胖胖把我的电脑锁在北师图书馆柜子里了。我工作没有电脑可用,于是使用小胖的电脑,也就是说,所有的基本变量都需要我自己来配来下,因此也相当于是从一张白纸到使用hanlp的过程。 第一步:下载一个jdk , 到openjdk官网去下一个,直接安装即可。 安装过后,要配置三个环境变量,分别是 1、JAVA