中文分词≠自然语言处理!

  中文分词只是第一步;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 中文分词≠自然语言处理!_githubHanLP 中文分词≠自然语言处理!_句法分析_02HanLP 中文分词≠自然语言处理!_配置文件_03



汉语言处理包

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 中文分词≠自然语言处理!_github HanLP 中文分词≠自然语言处理!_句法分析_02HanLP 中文分词≠自然语言处理!_配置文件_06

HanLP下载地址:​​https://github.com/hankcs/HanLP/releases​​ HanLP 中文分词≠自然语言处理!_中文分词_07

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]-----