hanlp汉语言包

一、简介

在搜索或其它应用领域,我们通常需要对数据进行分词。在汉语言分词处理中,我们可以使用hanlp,它是开源的汉语言处理包,可用于分词、语言处理等操作。

二、组成

hanlp由三部分组成,分别是词库、驱动器(jar包)、hanlp配置。

2.1 词库

词库包含词典和模型,词典(位于data/dictionary目录下)用于词法分析,模型(位于data/model目录下)用于语法分析。对应的数据包有如下几类:

data.full.zip,完整的词库(包括词典和模型);

data.standary.zip,完整的词典,不包含模型;

data.mini.zip,小体积的词典,不包含模型;

下载地址是http://115.159.41.123/click.php?id=3

详情在地址https://github.com/hankcs/HanLP/releases/tag/v1.3.4中

2.2 驱动器(jar包)

hanlp提供了轻便的jar包,内置了基本的词典,maven依赖如下:

<dependency>

<groupId>com.hankcs</groupId>

<artifactId>hanlp</artifactId>

<version>portable-1.2.8</version>

</dependency>

若在lucene或solr中使用,单独安装词典,则添加对应的依赖包,如下:

<dependency>

<groupId>com.hankcs.nlp</groupId>

<artifactId>hanlp-solr-plugin</artifactId>

<version>1.1.2</version>

</dependency>

<dependency>

<groupId>com.hankcs.nlp</groupId>

<artifactId>hanlp-solr-plugin</artifactId>

<version>1.1.2</version>

</dependency>

2.3 配置文件hanlp.properties

主要是配置词库的地址root=D:/HanLP/,配置文件内容如下:

#本配置文件中的路径的根目录,根目录+其他路径=绝对路径

#Windows用户请注意,路径分隔符统一使用/

root=D:/HanLP/

#核心词典路径

CoreDictionaryPath=data/dictionary/CoreNatureDictionary.txt

#2元语法词典路径

BiGramDictionaryPath=data/dictionary/CoreNatureDictionary.ngram.txt

#停用词词典路径

CoreStopWordDictionaryPath=data/dictionary/stopwords.txt

#同义词词典路径

CoreSynonymDictionaryDictionaryPath=data/dictionary/synonym/CoreSynonym.txt

#人名词典路径

PersonDictionaryPath=data/dictionary/person/nr.txt

#人名词典转移矩阵路径

PersonDictionaryTrPath=data/dictionary/person/nr.tr.txt

#繁简词典路径

TraditionalChineseDictionaryPath=data/dictionary/tc/TraditionalChinese.txt

#自定义词典路径,用;隔开多个自定义词典,空格开头表示在同一个目录,使用文件名 词性形式则表示这个词典的词性默认是该词性。优先级递减。

#另外data/dictionary/custom/CustomDictionary.txt是个高质量的词库,请不要删除

CustomDictionaryPath=data/dictionary/custom/CustomDictionary.txt; 现代汉语补充词库.txt; 全国地名大全.txt ns; 人名词典.txt; 机构名词典.txt; 上海地名.txt ns;data/dictionary/person/nrf.txt nrf

#CRF分词模型路径

CRFSegmentModelPath=data/model/segment/CRFSegmentModel.txt

#HMM分词模型

HMMSegmentModelPath=data/model/segment/HMMSegmentModel.bin

#分词结果是否展示词性

ShowTermNature=true

三、直接使用hanlp的代码实例

3.1 添加maven依赖

<dependency>

<groupId>com.hankcs</groupId>

<artifactId>hanlp</artifactId>

<version>portable-1.2.8</version>

</dependency>

3.2 代码

public class HanlpMain {

public static void main(String[] args) {

String text = "比你聪明的人,请不要让他还比你努力";

String traditionText= "比妳聰明的人,請不要讓他還比妳努力";

System.out.println(HanLP.segment(text)); //分词

System.out.println(HanLP.extractKeyword(text,2)); //提取关键字,同时指定提取的个数

System.out.println(HanLP.extractPhrase(text,2)); //提取短语,,同时指定提取的个数

System.out.println(HanLP.extractSummary(text,2)); //提取摘要,同时指定提取的个数

System.out.println(HanLP.getSummary(text,10)); //提取短语,同时指定摘要的最大长度

System.out.println(HanLP.convertToTraditionalChinese(text)); //简体字转为繁体字

System.out.println(HanLP.convertToSimplifiedChinese(traditionText)); //繁体字转为简体字

System.out.println(HanLP.convertToPinyinString(text," ",false)); //转为拼音

}

}

输出:

[比/p, 你/r, 聪明/a, 的/uj, 人/n, ,/w, 请/v, 不/d, 要/v, 让/v, 他/r, 还/d, 比/p, 你/r, 努力/ad]

[聪明, 努力]

[]

[请不要让他还比你努力]

请不要让他还比你努力。

比妳聰明的人,請不要讓他還比妳努力

比你聪明的人,请不要让他还比你努力

Disconnected from the target VM, address: '127.0.0.1:57424', transport: 'socket'

bi ni cong ming de ren qing bu yao rang ta hai bi ni nu li

四、lucene中hanlp使用实例

4.1 添加maven依赖

<dependency>

<groupId>org.apache.lucene</groupId>

<artifactId>lucene-core</artifactId>

<version>${lucene.version}</version>

</dependency>

<dependency>

<groupId>org.apache.lucene</groupId>

<artifactId>lucene-queryparser</artifactId>

<version>${lucene.version}</version>

</dependency>

<!-- 分词器 -->

<dependency>

<groupId>org.apache.lucene</groupId>

<artifactId>lucene-analyzers-smartcn</artifactId>

<version>${lucene.version}</version>

</dependency>

<dependency>

<groupId>org.apache.lucene</groupId>

<artifactId>lucene-analyzers-common</artifactId>

<version>${lucene.version}</version>

</dependency>

<dependency>

<groupId>com.hankcs.nlp</groupId>

<artifactId>hanlp-lucene-plugin</artifactId>

<version>1.1.2</version>

</dependency>

4.2 配置文件hanlp.properties

将配置文件hanlp.properties放到classpath目录下(resources目录下即可),配置文件内容如下

#本配置文件中的路径的根目录,根目录+其他路径=绝对路径

#Windows用户请注意,路径分隔符统一使用/

root=D:/HanLP/

#核心词典路径

CoreDictionaryPath=data/dictionary/CoreNatureDictionary.txt

#2元语法词典路径

BiGramDictionaryPath=data/dictionary/CoreNatureDictionary.ngram.txt

#停用词词典路径

CoreStopWordDictionaryPath=data/dictionary/stopwords.txt

#同义词词典路径

CoreSynonymDictionaryDictionaryPath=data/dictionary/synonym/CoreSynonym.txt

#人名词典路径

PersonDictionaryPath=data/dictionary/person/nr.txt

#人名词典转移矩阵路径

PersonDictionaryTrPath=data/dictionary/person/nr.tr.txt

#繁简词典路径

TraditionalChineseDictionaryPath=data/dictionary/tc/TraditionalChinese.txt

#自定义词典路径,用;隔开多个自定义词典,空格开头表示在同一个目录,使用文件名 词性形式则表示这个词典的词性默认是该词性。优先级递减。

#另外data/dictionary/custom/CustomDictionary.txt是个高质量的词库,请不要删除

CustomDictionaryPath=data/dictionary/custom/CustomDictionary.txt; 现代汉语补充词库.txt; 全国地名大全.txt ns; 人名词典.txt; 机构名词典.txt; 上海地名.txt ns;data/dictionary/person/nrf.txt nrf

#CRF分词模型路径

CRFSegmentModelPath=data/model/segment/CRFSegmentModel.txt

#HMM分词模型

HMMSegmentModelPath=data/model/segment/HMMSegmentModel.bin

#分词结果是否展示词性

ShowTermNature=true

4.3 示例

public class LuceneHanlpMain {

public static void main(String[] args) throws Exception {

String text = "少年强则中国强";

////////////////标准分词器(长词不做切分的分词器)//////////////////////////////

Analyzer analyzer = new HanLPAnalyzer();

TokenStream ts = analyzer.tokenStream("field",text);

ts.reset();

while(ts.incrementToken()){

CharTermAttribute attribute = ts.getAttribute(CharTermAttribute.class); //The term text of a Token.

OffsetAttribute offsetAttribute =ts.getAttribute(OffsetAttribute.class); //偏移量

PositionIncrementAttribute positionIncrementAttribute = ts.getAttribute(PositionIncrementAttribute.class); //距离

System.out.println(attribute+" "

+offsetAttribute.startOffset()+" "+offsetAttribute.endOffset()+" "

+positionIncrementAttribute.getPositionIncrement());

}

ts.close();

System.out.println();

/////////////////////////////////索引分词器(长词全切分的分词器)/////////////////////////////

Analyzer indexAnalyzer = new HanLPIndexAnalyzer();

TokenStream indexTs = indexAnalyzer.tokenStream("field",text);

indexTs.reset();

while(indexTs.incrementToken()){

CharTermAttribute attribute = indexTs.getAttribute(CharTermAttribute.class); //The term text of a Token.

OffsetAttribute offsetAttribute =indexTs.getAttribute(OffsetAttribute.class); //偏移量

PositionIncrementAttribute positionIncrementAttribute = indexTs.getAttribute(PositionIncrementAttribute.class); //距离

System.out.println(attribute+" "

+offsetAttribute.startOffset()+" "+offsetAttribute.endOffset()+" "

+positionIncrementAttribute.getPositionIncrement());

}

indexTs.close();

System.out.println();

/////////////////////////////通过query查看分词结果//////////////////////////////

QueryParser queryParser = new QueryParser("txt",analyzer);

Query query = queryParser.parse(text);

System.out.println(query.toString("txt"));

queryParser = new QueryParser("txt",indexAnalyzer);

query = queryParser.parse(text);

System.out.println(query.toString("txt"));

}

}

结果输出:

少年强 0 3 1

则 3 4 1

中国 4 6 1

强 6 7 1

少年强 0 3 1

少年 0 2 1

则 3 4 1

中国 4 6 1

强 6 7 1

少年强 则 中国 强

少年强 少年 则 中国 强

免责声明:本文作者:“pandastar”,版权归作者所有,观点仅代表作者本人。本站仅提供信息存储分享服务,不拥有所有权。信息贵在分享,如有侵权请联系ynstorm@foxmail.com,我们将在24小时内对侵权内容进行删除。
(126)
用TokenStream做一套宏不就行了
上一篇 2024年01月07日
freepascal教程(信息学竞赛fr
下一篇 2024年01月07日

相关推荐

  • thinkpads220(thinkpadt系列哪款最好)

    1、ThinkPad系列里TX(除X120X100外)W三个系列最好,其中T为主力机型,全功能十四寸;X超轻薄十二寸,无光驱无独立显卡;W是旗舰型,性能极其强悍。现在主流的三大系列机器是:T420X220W520三大系列中最低价的是:Thin...

    2023年11月02日
  • 可牛免费杀毒软件(推荐一款杀毒软件可以吗)

    大家好,我是大明,根据提问者对问题的描述,金山,管家都有弹窗广告的问题,我建议如果是win10用户的话可以使用自带的windowsDenfender杀毒软件因为微软内置的杀毒软件是不会有弹窗的问题的,另外还可以使用第三方杀毒软件”火绒“,这款...

    2023年11月03日
  • mts转换(或者如何转换文件格式才能播放)

    MTS属于小高清格式,是SONY硬盘摄像机拍摄出来的。可以用暴风影音播放,不过必须安装个视频硬件加速器,播放起来就比较流畅了。但是mts文件通常都很大,很占硬盘空间,最好还是转换下。转换软件:狸窝视频转化大师都不错而且是免费的...

    2023年11月06日
  • postgresql命令(postgresql授权库权限)

    1.PostgreSQL授权库权限是存在的。2.因为在PostgreSQL中,授权库权限是用来管理用户对数据库的访问和操作权限的。通过授权库权限,可以控制用户对数据库的增删改查等操作。3.此外,授权库权限还可以细分为不同的角色和权限级别,可以...

    2023年11月15日
  • 河南省银行业协会(河南村镇银行暴雷会给中国银行业带来哪些影响)

    存款突然取不了,还可能变成非法集资款?在过去2个多月来,对于近40万储户来说,无疑是一场噩梦。河南村镇银行这件事情影响确实挺大的,这确实也让大家对银行有了一个重新的认识。那么,受河南村镇银行的影响,其它村镇银行会垮掉吗?...

    2023年11月17日
  • 三星s4迷你版怎么样(三星手表s4怎么设置语言)

    若使用的是安卓4.1以及之前版本:应用程序-齿轮图标(设置)-查找字母A的图标(语言和键盘)-第一项(选择语言位置)-查找并选择需要的语言即可。...

    2023年11月29日
  • 22i(至强e2224g相当于什么cpu)

    英特尔至强®E-2224G3.5GHz四核处理器可提升您的系统性能,加快系统处理速度。此外,虚拟化技术可实现更多环境的迁移。它支持增强型SpeedStep®技术,可实现性能和功耗之间的完美均衡。...

    2023年12月02日
  • 退房时酒店为什么不再查房了?前台工作人员说出真相,原来如此!

    你是否有过这样的经历,住完酒店准备退房时,前台工作人员直接让你还钥匙就可以走了,不用等待他们检查房间的情况。你可能会感到奇怪,也可能会感到轻松,毕竟不用浪费时间等待了。但是,你有没有想过,为什么酒店现在不再查房了呢?这背后有什么原因呢?其实,...

    2023年12月10日
  • Vidda C1测评:投影会搞颜色是什么体验?

    尽管常说电视是家庭的中心,但也可以是ViddaC1投影机。因为租的是较小的单间,我一直没有买电视,不过这两年更加便携的投影倒是一直颇受租房一族的青睐。其实我一开始对投影仪没有太大兴趣,因为画质和清晰度对比电视还是有亿点距离,想要提升这两点还要...

    2024年03月02日
  • 学校网站制作(手机怎么连接校园网)

    2、在浏览器中输入校园网址,会提示帐号和密码。拓展资料校园网是为学校师生提供教学、科研和综合信息服务的宽带多媒体网络。校园网具有教务、行政和总务管理功能,为学校教学、科研提供先进的信息化教学环境。设计目标是,将各种不同应用的信息资源通过高性能...

    2024年05月31日
返回顶部