hanlp中文分词器解读

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

中文分词器解析hanlp分词器接口设计:

提供外部接口:

分词器封装为静态工具类,并提供了简单的接口

标准分词是最常用的分词器,基于HMM-Viterbi实现,开启了中国人名识别和音译人名识别,调用方法如下:

HanLP.segment其实是对StandardTokenizer.segment的包装。

/**

* 分词

*

* @param text 文本

* @return切分后的单词

*/

publicstatic Listsegment(String text)

{

return StandardTokenizer.segment(text.toCharArray());

}

/**

* 创建一个分词器

* 这是一个工厂方法

* 与直接new一个分词器相比,使用本方法的好处是,以后HanLP升级了,总能用上最合适的分词器

* @return一个分词器

*/

publicstatic Segment newSegment()

}

publicclass StandardTokenizer

{

/**

* 预置分词器

*/

publicstaticfinalSegment SEGMENT = HanLP.newSegment();

/**

* 分词

* @param text 文本

* @return分词结果

*/

publicstatic Listsegment(String text)

{

return SEGMENT.seg(text.toCharArray());

}

/**

* 分词

* @param text 文本

* @return分词结果

*/

publicstatic Listsegment(char[]text)

{

return SEGMENT.seg(text);

}

/**

* 切分为句子形式

* @param text 文本

* @return句子列表

*/

publicstatic List>seg2sentence(String text)

{

return SEGMENT.seg2sentence(text);

}

}

publicstatic Segment newSegment()

{

returnnew ViterbiSegment();// Viterbi分词器是目前效率和效果的最佳平衡

}

/**

* Viterbi分词器

* 也是最短路分词,最短路求解采用Viterbi算法

*

* @author hankcs

*/

publicclass ViterbiSegment extends WordBasedGenerativeModelSegment

NLP分词NLPTokenizer会执行全部命名实体识别和词性标注。,调用方法如下:

∙NLP分词NLPTokenizer会执行全部命名实体识别和词性标注。

∙所以速度比标准分词慢,并且有误识别的情况。

publicclass NLPTokenizer

{

/**

* 预置分词器

*/

publicstaticfinalSegment SEGMENT =

HanLP.newSegment().enableNameRecognize(true).enableTranslatedNameRecognize( true).enableJapaneseNameRecognize(true).enablePlaceRecognize(true).enableOr ganizationRecognize(true).enablePartOfSpeechTagging(true);

publicstatic Listsegment(String text)

{

return SEGMENT.seg(text);

}

/**

* 分词

* @param text 文本

* @return分词结果

*/

publicstatic Listsegment(char[]text)

{

return SEGMENT.seg(text);

}

/**

* 切分为句子形式

* @param text 文本

* @return句子列表

*/

publicstatic List>seg2sentence(String text)

{

return SEGMENT.seg2sentence(text);

}

}

索引分词IndexTokenizer是面向搜索引擎的分词器,能够对长词全切分,另外通过term.offset可以获取单词在文本中的偏移量。调用方法如下:

ListtermList=IndexTokenizer.segment("主副食品");

for(Termterm:termList)

{

System.out.println(term+"

["+term.offset+":"+(term.offset+term.word.length())+"]");

}

publicclass IndexTokenizer

{

/**

* 预置分词器

*/

publicstaticfinalSegment SEGMENT = HanLP.newSegment().enableIndexMode(true); publicstatic Listsegment(String text)

{

return SEGMENT.seg(text);

}

/**

* 分词

相关文档
最新文档