中文分词≠自然语言处理!
中文分词只是第一步;HanLP从中文分词开始,覆盖词性标注、命名实体识别、句法分析、文本分类等常用任务,提供了丰富的API。
不同于一些简陋的分词类库,HanLP精心优化了内部数据结 构和IO接口,做到了毫秒级的冷启动、千万字符每秒的处理速度,而内存最低仅需120MB。无论是移动设备还是大型集群,都能获得良好的体验。
不同于市面上的商业工具,HanLP提供训练模块,可以在用户的语料上训练模型并替换默认模型,以适应不同的领域。项目主页上提供了详细的文档,以及在一些开源语料上训练的模型。
HanLP希望兼顾学术界的精准与工业界的效率,在两者之间取一个平衡,真正将自然语言处理普及到生产环境中去。
支持中文分词(N-最短路分词、CRF分词、索引分词、用户自定义词典、词性标注),命名实体识别(中国人名、音译人名、日本人名、地名、实体机构名识别),关键词提取,自动摘要,短语提取,拼音转换,简繁转换,文本推荐,依存句法分析(MaxEnt依存句法分析、神经网络依存句法分析)。提供Lucene插件,兼容Solr和ElasticSearch。
HanLP已经被广泛用于Lucene、Solr、ElasticSearch、Hadoop、Android、Resin等平台,有大量开源作者开发各种插件与拓展,并且被包装或移植到Python、C#、R、JavaScript等语言上去。在线演示。
HanLP: Han Language Processing
汉语言处理包
HanLP是由一系列模型与算法组成的Java工具包,目标是促进自然语言处理在生产环境中的应用。HanLP具备功能完善、性能高效、架构清晰、语料时新、可自定义的特点。
HanLP提供下列功能:
- 中文分词
- 最短路分词
- N-最短路分词
- CRF分词
- 索引分词
- 极速词典分词
- 用户自定义词典
- 词性标注
- 命名实体识别
- 中国人名识别
- 音译人名识别
- 日本人名识别
- 地名识别
- 实体机构名识别
- 关键词提取
- TextRank关键词提取
- 自动摘要
- TextRank自动摘要
- 短语提取
- 基于互信息和左右信息熵的短语提取
- 拼音转换
- 多音字
- 声母
- 韵母
- 声调
- 简繁转换
- 繁体中文分词
- 简繁分歧词
- 文本推荐
- 语义推荐
- 拼音推荐
- 字词推荐
- 依存句法分析
- 基于神经网络的高性能依存句法分析器
- MaxEnt依存句法分析
- CRF依存句法分析
- 语料库工具
- 分词语料预处理
- 词频词性词典制作
- BiGram统计
- 词共现统计
- CoNLL语料预处理
- CoNLL UA/LA/DA评测工具
在提供丰富功能的同时,HanLP内部模块坚持低耦合、模型坚持惰性加载、服务坚持静态提供、词典坚持明文发布,使用非常方便,同时自带一些语料处理工具,帮助用户训练自己的语料。
项目地址
HanLP项目主页:https://github.com/hankcs/HanLP/tree/1.x
HanLP下载地址:https://github.com/hankcs/HanLP/releases
Python接口:https://github.com/hankcs/pyhanlp
HanLP在线演示:http://hanlp.hankcs.com/
内存要求
内存120MB以上(-Xms120m -Xmx120m -Xmn64m),标准数据包(35万核心词库+默认用户词典),分词测试正常。
全部词典和模型都是惰性加载的,如果你只用拼音转换的话,则只加载拼音词典,未加载的词典相当于不存在,不占内存。同理,模型也是如此。
更新日志
最新版请移步GitHub!
基于深度学习的HanLP2.0已与2020年初发布,面向下一个十年的前沿NLP技术,与1.x相辅相成,平行发展。1.x将会持续维护,保证稳定性。
旧版本一览——
2015年7月12日 发布了1.2.4版。在长时间的思考后,决定将用户词典用于分词后的合并处理,使得用户词典中的长词更容易切分出来。
2015年5月11日 发布了1.2.2版。主要支持了并行化,优化了CRF分词,新增了TnT分词器,支持了数量词识别。数据包data-for-1.2.2.zip也做了小幅调整。其实最新的更新日志都可以在GitHub上看到,比博客详细多了,更新也勤快多了。
2015年5月02日 发布了1.1.5版。主要将ACDAT降级为DAT,内存占用减少了一半。所以需要删缓存重新构建,或者下载data-for-1.1.5.zip。另外,还发布了内置数据包的Portable版,可以通过maven直接引入,零配置!
2015年4月28日 发布了1.1.4版。这次训练了一个新的CRF分词模型,感觉效果要好很多(注:该模型与旧版本不兼容)。诸位可以评估一下,提出宝贵意见。
下载与配置
方式一、通过Maven的pom.xml
为了方便用户,特提供内置了数据包的Portable版,只需在pom.xml加入:
<dependency>
<groupId>com.hankcs</groupId>
<artifactId>hanlp</artifactId>
<version>portable-1.3.4</version>
</dependency>
目前Portable体积仅仅5.7MB,作为代价,使用的是1998年的小词典,对现代汉语的支持有限;所以还是建议外挂下面的数据包比较好。
方式二、下载jar、data、hanlp.properties
HanLP将数据与程序分离,给予用户自定义的自由。
1、下载jar
2、下载data
数据包 | 功能 | 体积(MB) |
data.zip | 全部词典,全部模型 | 280(注:分词词典大约40MB,主要是句法分析模型占体积,可以自行删除。) |
在GitHub的release页面Ctrl+F搜索data即可,下载后解压到任意目录,接下来通过配置文件告诉HanLP数据包的位置。
HanLP中的数据分为词典和模型,其中词典是词法分析必需的,模型是句法分析必需的。
data
│
├─dictionary
└─model
用户可以自行增删替换,如果不需要句法分析功能的话,随时可以删除model文件夹。
3、配置文件
示例配置文件:hanlp.properties
配置文件的作用是告诉HanLP数据包的位置,只需修改第一行
root=usr/home/HanLP/
为data的父目录即可,比如data目录是/Users/hankcs/Documents/data,那么root=/Users/hankcs/Documents/ 。
- 如果选用mini词典的话,则需要修改配置文件:
CoreDictionaryPath=data/dictionary/CoreNatureDictionary.mini.txt
BiGramDictionaryPath=data/dictionary/CoreNatureDictionary.ngram.mini.txt
最后将HanLP.properties放入classpath即可,对于任何项目,都可以放到src目录或resources目录下,编译时IDE会自动将其复制到classpath中。
如果放置不当,HanLP会智能提示当前环境下的合适路径,并且尝试从项目根目录读取数据集。
-----[尐鱼儿的 JAVA编程QQ群:726994578]-----