hanlp汉语言包

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

欢迎大家来到IT世界,在知识的湖畔探索吧!

一、简介

在搜索或其它应用领域,我们通常需要对数据进行分词。在汉语言分词处理中,我们可以使用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

少年强 则 中国 强

少年强 少年 则 中国 强

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/22135.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信