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

https://www.hanlp.com/dynamic.html#

 

 

 

 
2021-01-04 10:01:31

 

中文分词≠自然语言处理!
  中文分词只是第一步;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会智能提示当前环境下的合适路径,并且尝试从项目根目录读取数据集。

posted @ 2021-07-19 17:05  尐鱼儿  阅读(470)  评论(0编辑  收藏  举报