ElasticSearch分词器比较及使用方法

ElasticSearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful web 接口。Elasticsearch 是用 Java 开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

Elasticsearch中,内置了很多分词器(analyzers)。下面来进行比较下系统默认分词器和常用的中文分词器之间的区别。

系统默认分词器:

1、standard 分词器

英文的处理能力同于StopAnalyzer.支持中文采用的方法为单字切分。他会将词汇单元转换成小写形式,并去除停用词和标点符号。

如何使用:http://www.yiibai.com/lucene/lucene_standardanalyzer.html

StandardAnalyzer分析器例子:

public void standardAnalyzer(String msg){

     StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_36);

      this.getTokens(analyzer, msg);

}

2、simple 分词器

功能强于WhitespaceAnalyzer, 首先会通过非字母字符来分割文本信息,然后将词汇单元统一为小写形式。该分析器会去掉数字类型的字符。

如何使用: http://www.yiibai.com/lucene/lucene_simpleanalyzer.html

SimpleAnalyzer分析器例子

public void simpleAnalyzer(String msg){

    SimpleAnalyzer analyzer = new SimpleAnalyzer(Version.LUCENE_36);

    this.getTokens(analyzer, msg);

}

3、Whitespace 分词器

仅仅是去除空格,对字符没有lowcase化,不支持中文; 并且不对生成的词汇单元进行其他的规范化处理。

如何使用:http://www.yiibai.com/lucene/lucene_whitespaceanalyzer.html

WhitespaceAnalyzer分析器例子

public void whitespaceAnalyzer(String msg){

    WhitespaceAnalyzer analyzer = new WhitespaceAnalyzer(Version.LUCENE_36);

    this.getTokens(analyzer, msg);

}

4、Stop 分词器

StopAnalyzer的功能超越了SimpleAnalyzer,在SimpleAnalyzer的基础上增加了去除英文中的常用单词(如the,a等),也可以更加自己的需要设置常用单词;不支持中文

如何使用:http://www.yiibai.com/lucene/lucene_stopanalyzer.html

StopAnalyzer分析器例子

public void stopAnalyzer(String msg){

    StopAnalyzer analyzer = new StopAnalyzer(Version.LUCENE_36);

    this.getTokens(analyzer, msg);

}

5、keyword 分词器

KeywordAnalyzer把整个输入作为一个单独词汇单元,方便特殊类型的文本进行索引和检索。针对邮政编码,地址等文本信息使用关键词分词器进行索引项建立非常方便。

6、pattern 分词器

一个pattern类型的analyzer可以通过正则表达式将文本分成"terms"(经过token Filter 后得到的东西 )。接受如下设置:

一个 pattern analyzer 可以做如下的属性设置:

lowercaseterms是否是小写. 默认为 true 小写.pattern正则表达式的pattern, 默认是 W+.flags正则表达式的flagsstopwords一个用于初始化stop filter的需要stop 单词的列表.默认单词是空的列表

7、language 分词器

一个用于解析特殊语言文本的analyzer集合。( arabic,armenian, basque, brazilian, bulgarian, catalan, cjk, czech, danish, dutch, english, finnish, french,galician, german, greek, hindi, hungarian, indonesian, irish, italian, latvian, lithuanian, norwegian,persian, portuguese, romanian, russian, sorani, spanish, swedish, turkish, thai.)可惜没有中文。不予考虑

8、snowball 分词器

一个snowball类型的analyzer是由standard tokenizer和standard filter、lowercase filter、stop filter、snowball filter这四个filter构成的。snowball analyzer 在Lucene中通常是不推荐使用的。

9、Custom 分词器

是自定义的analyzer。允许多个零到多个tokenizer,零到多个 Char Filters. custom analyzer 的名字不能以 "_"开头.

SettingDescriptiontokenizer通用的或者注册的tokenizer.filter通用的或者注册的token filterschar_filter通用的或者注册的 character filtersposition_increment_gap距离查询时,最大允许查询的距离,默认是100

自定义的模板:

index :

analysis :

analyzer :

myAnalyzer2 :

type : custom

tokenizer : myTokenizer1

filter : [myTokenFilter1, myTokenFilter2]

char_filter : [my_html]

position_increment_gap: 256

tokenizer :

myTokenizer1 :

type : standard

max_token_length : 900

filter :

myTokenFilter1 :

type : stop

stopwords : [stop1, stop2, stop3, stop4]

myTokenFilter2 :

type : length

min : 0

max : 2000

char_filter :

my_html :

type : html_strip

escaped_tags : [xxx, yyy]

read_ahead : 1024

中文分词器:

1、ik-analyzer

IKAnalyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。

采用了特有的“正向迭代最细粒度切分算法“,支持细粒度和最大词长两种切分模式;具有83万字/秒(1600KB/S)的高速处理能力。采用了多子处理器分析模式,支持:英文字母、数字、中文词汇等分词处理,兼容韩文、日文字符。优化的词典存储,更小的内存占用。支持用户词典扩展定义。针对Lucene全文检索优化的查询分析器IKQueryParser(作者吐血推荐);引入简单搜索表达式,采用歧义分析算法优化查询关键字的搜索排列组合,能极大的提高Lucene检索的命中率。

Maven用法:



    org.wltea.ik-analyzer

    ik-analyzer

    3.2.8

在IK Analyzer加入Maven Central Repository之前,你需要手动安装,安装到本地的repository,或者上传到自己的Maven repository服务器上。

要安装到本地Maven repository,使用如下命令,将自动编译,打包并安装: mvn install -Dmaven.test.skip=true

Elasticsearch添加中文分词

安装IK分词插件

https://github.com/medcl/elasticsearch-analysis-ik

进入elasticsearch-analysis-ik-master

更多安装请参考博客:

1、为elastic添加中文分词: http://blog.csdn.net/dingzfang/article/details/42776693

2、如何在Elasticsearch中安装中文分词器(IK+pinyin):http://www.cnblogs.com/xing901022/p/5910139.html

3、Elasticsearch 中文分词器 IK 配置和使用: http://blog.csdn.net/jam00/article/details/52983056

ik 带有两个分词器

  • ik_max_word:会将文本做最细粒度的拆分;尽可能多的拆分出词语
  • ik_smart:会做最粗粒度的拆分;已被分出的词语将不会再次被其它词语占有

区别:

# ik_max_word

curl -XGET 'http://localhost:9200/_analyze?pretty&analyzer=ik_max_word' -d '联想是全球最大的笔记本厂商'

#返回

{

"tokens" : [

{

"token" : "联想",

"start_offset" : 0,

"end_offset" : 2,

"type" : "CN_WORD",

"position" : 0

},

{

"token" : "是",

"start_offset" : 2,

"end_offset" : 3,

"type" : "CN_CHAR",

"position" : 1

},

{

"token" : "全球",

"start_offset" : 3,

"end_offset" : 5,

"type" : "CN_WORD",

"position" : 2

},

{

"token" : "最大",

"start_offset" : 5,

"end_offset" : 7,

"type" : "CN_WORD",

"position" : 3

},

{

"token" : "的",

"start_offset" : 7,

"end_offset" : 8,

"type" : "CN_CHAR",

"position" : 4

},

{

"token" : "笔记本",

"start_offset" : 8,

"end_offset" : 11,

"type" : "CN_WORD",

"position" : 5

},

{

"token" : "笔记",

"start_offset" : 8,

"end_offset" : 10,

"type" : "CN_WORD",

"position" : 6

},

{

"token" : "本厂",

"start_offset" : 10,

"end_offset" : 12,

"type" : "CN_WORD",

"position" : 7

},

{

"token" : "厂商",

"start_offset" : 11,

"end_offset" : 13,

"type" : "CN_WORD",

"position" : 8

}

]

}
# ik_smart

curl -XGET 'http://localhost:9200/_analyze?pretty&analyzer=ik_smart' -d '联想是全球最大的笔记本厂商'

# 返回

{

"tokens" : [

{

"token" : "联想",

"start_offset" : 0,

"end_offset" : 2,

"type" : "CN_WORD",

"position" : 0

},

{

"token" : "是",

"start_offset" : 2,

"end_offset" : 3,

"type" : "CN_CHAR",

"position" : 1

},

{

"token" : "全球",

"start_offset" : 3,

"end_offset" : 5,

"type" : "CN_WORD",

"position" : 2

},

{

"token" : "最大",

"start_offset" : 5,

"end_offset" : 7,

"type" : "CN_WORD",

"position" : 3

},

{

"token" : "的",

"start_offset" : 7,

"end_offset" : 8,

"type" : "CN_CHAR",

"position" : 4

},

{

"token" : "笔记本",

"start_offset" : 8,

"end_offset" : 11,

"type" : "CN_WORD",

"position" : 5

},

{

"token" : "厂商",

"start_offset" : 11,

"end_offset" : 13,

"type" : "CN_WORD",

"position" : 6

}

]

}

下面我们来创建一个索引,使用 ik 创建一个名叫 iktest 的索引,设置它的分析器用 ik ,分词器用 ik_max_word,并创建一个 article 的类型,里面有一个 subject 的字段,指定其使用 ik_max_word 分词器

curl -XPUT 'http://localhost:9200/iktest?pretty' -d '{

"settings" : {

"analysis" : {

"analyzer" : {

"ik" : {

"tokenizer" : "ik_max_word"

}

}

}

},

"mappings" : {

"article" : {

"dynamic" : true,

"properties" : {

"subject" : {

"type" : "string",

"analyzer" : "ik_max_word"

}

}

}

}

}'

批量添加几条数据,这里我指定元数据 _id 方便查看,subject 内容为我随便找的几条新闻的标题

curl -XPOST http://localhost:9200/iktest/article/_bulk?pretty -d '

{ "index" : { "_id" : "1" } }

{"subject" : ""闺蜜"崔顺实被韩检方传唤 韩总统府促彻查真相" }

{ "index" : { "_id" : "2" } }

{"subject" : "韩举行"护国训练" 青瓦台:决不许国家安全出问题" }

{ "index" : { "_id" : "3" } }

{"subject" : "媒体称FBI已经取得搜查令 检视希拉里电邮" }

{ "index" : { "_id" : "4" } }

{"subject" : "村上春树获安徒生奖 演讲中谈及欧洲排外问题" }

{ "index" : { "_id" : "5" } }

{"subject" : "希拉里团队炮轰FBI 参院民主党领袖批其“违法”" }

查询 “希拉里和韩国”

curl -XPOST http://localhost:9200/iktest/article/_search?pretty -d'

{

"query" : { "match" : { "subject" : "希拉里和韩国" }},

"highlight" : {

"pre_tags" : [""],

"post_tags" : [""],

"fields" : {

"subject" : {}

}

}

}

'

#返回

{

"took" : 113,

"timed_out" : false,

"_shards" : {

"total" : 5,

"successful" : 5,

"failed" : 0

},

"hits" : {

"total" : 4,

"max_score" : 0.034062363,

"hits" : [ {

"_index" : "iktest",

"_type" : "article",

"_id" : "2",

"_score" : 0.034062363,

"_source" : {

"subject" : "韩举行"护国训练" 青瓦台:决不许国家安全出问题"

},

"highlight" : {

"subject" : [ "举行"护训练" 青瓦台:决不许国家安全出问题" ]

}

}, {

"_index" : "iktest",

"_type" : "article",

"_id" : "3",

"_score" : 0.0076681254,

"_source" : {

"subject" : "媒体称FBI已经取得搜查令 检视希拉里电邮"

},

"highlight" : {

"subject" : [ "媒体称FBI已经取得搜查令 检视希拉里电邮" ]

}

}, {

"_index" : "iktest",

"_type" : "article",

"_id" : "5",

"_score" : 0.006709609,

"_source" : {

"subject" : "希拉里团队炮轰FBI 参院民主党领袖批其“违法”"

},

"highlight" : {

"subject" : [ "希拉里团队炮轰FBI 参院民主党领袖批其“违法”" ]

}

}, {

"_index" : "iktest",

"_type" : "article",

"_id" : "1",

"_score" : 0.0021509775,

"_source" : {

"subject" : ""闺蜜"崔顺实被韩检方传唤 韩总统府促彻查真相"

},

"highlight" : {

"subject" : [ ""闺蜜"崔顺实被检方传唤 总统府促彻查真相" ]

}

} ]

}

}

这里用了高亮属性 highlight,直接显示到 html 中,被匹配到的字或词将以红色突出显示。若要用过滤搜索,直接将 match 改为 term 即可

热词更新配置

网络词语日新月异,如何让新出的网络热词(或特定的词语)实时的更新到我们的搜索当中呢

先用 ik 测试一下

curl -XGET 'http://localhost:9200/_analyze?pretty&analyzer=ik_max_word' -d '

成龙原名陈港生

'

#返回

{

"tokens" : [ {

"token" : "成龙",

"start_offset" : 1,

"end_offset" : 3,

"type" : "CN_WORD",

"position" : 0

}, {

"token" : "原名",

"start_offset" : 3,

"end_offset" : 5,

"type" : "CN_WORD",

"position" : 1

}, {

"token" : "陈",

"start_offset" : 5,

"end_offset" : 6,

"type" : "CN_CHAR",

"position" : 2

}, {

"token" : "港",

"start_offset" : 6,

"end_offset" : 7,

"type" : "CN_WORD",

"position" : 3

}, {

"token" : "生",

"start_offset" : 7,

"end_offset" : 8,

"type" : "CN_CHAR",

"position" : 4

} ]

}

ik 的主词典中没有”陈港生” 这个词,所以被拆分了。 现在我们来配置一下

修改 IK 的配置文件 :ES 目录/plugins/ik/config/ik/IKAnalyzer.cfg.xml

修改如下:







IK Analyzer 扩展配置



custom/mydict.dic;custom/single_word_low_freq.dic



custom/ext_stopword.dic



http://192.168.1.136/hotWords.php





这里我是用的是远程扩展字典,因为可以使用其他程序调用更新,且不用重启 ES,很方便;当然使用自定义的 mydict.dic 字典也是很方便的,一行一个词,自己加就可以了

既然是远程词典,那么就要是一个可访问的链接,可以是一个页面,也可以是一个txt的文档,但要保证输出的内容是 utf-8 的格式

hotWords.php 的内容

$s = <<<'EOF'

陈港生

元楼

蓝瘦

EOF;

header('Last-Modified: '.gmdate('D, d M Y H:i:s', time()).' GMT', true, 200);

header('ETag: "5816f349-19"');

echo $s;

ik 接收两个返回的头部属性 Last-Modified 和 ETag,只要其中一个有变化,就会触发更新,ik 会每分钟获取一次 重启 Elasticsearch ,查看启动记录,看到了三个词已被加载进来

再次执行上面的请求,返回, 就可以看到 ik 分词器已经匹配到了 “陈港生” 这个词,同理一些关于我们公司的专有名字(例如:永辉、永辉超市、永辉云创、云创 .... )也可以自己手动添加到字典中去。

2、结巴中文分词

特点:

1、支持三种分词模式:

  • 精确模式,试图将句子最精确地切开,适合文本分析;
  • 全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;
  • 搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。

2、支持繁体分词

3、支持自定义词典

3、THULAC

THULAC(THU Lexical Analyzer for Chinese)由清华大学自然语言处理与社会人文计算实验室研制推出的一套中文词法分析工具包,具有中文分词和词性标注功能。THULAC具有如下几个特点:

  • 能力强:利用我们集成的目前世界上规模最大的人工分词和词性标注中文语料库(约含5800万字)训练而成,模型标注能力强大。
  • 准确率高:该工具包在标准数据集Chinese Treebank(CTB5)上分词的F1值可达97.3%,词性标注的F1值可达到92.9%,与该数据集上最好方法效果相当。
  • 速度较快:同时进行分词和词性标注速度为300KB/s,每秒可处理约15万字。只进行分词速度可达到1.3MB/s。

中文分词工具thulac4j发布

1、规范化分词词典,并去掉一些无用词;

2、重写DAT(双数组Trie树)的构造算法,生成的DAT size减少了8%左右,从而节省了内存;

3、优化分词算法,提高了分词速率。



io.github.yizhiru

thulac4j

${thulac4j.version}



http://www.cnblogs.com/en-heng/p/6526598.html

thulac4j支持两种分词模式:

SegOnly模式,只分词没有词性标注;

SegPos模式,分词兼有词性标注。

// SegOnly mode

String sentence = "滔滔的流水,向着波士顿湾无声逝去";

SegOnly seg = new SegOnly("models/seg_only.bin");

System.out.println(seg.segment(sentence));

// [滔滔, 的, 流水, ,, 向着, 波士顿湾, 无声, 逝去]

// SegPos mode

SegPos pos = new SegPos("models/seg_pos.bin");

System.out.println(pos.segment(sentence));

//[滔滔/a, 的/u, 流水/n, ,/w, 向着/p, 波士顿湾/ns, 无声/v, 逝去/v]

4、NLPIR

中科院计算所 NLPIR:http://ictclas.nlpir.org/nlpir/ (可直接在线分析中文)

下载地址:https://github.com/NLPIR-team/NLPIR

中科院分词系统(NLPIR)JAVA简易教程: http://www.cnblogs.com/wukongjiuwo/p/4092480.html

5、ansj分词器

这是一个基于n-Gram+CRF+HMM的中文分词的java实现.

分词速度达到每秒钟大约200万字左右(mac air下测试),准确率能达到96%以上

目前实现了.中文分词. 中文姓名识别 .

用户自定义词典,关键字提取,自动摘要,关键字标记等功能 可以应用到自然语言处理等方面,适用于对分词效果要求高的各种项目.

maven 引入:



org.ansj

ansj_seg

5.1.1

调用demo

String str = "欢迎使用ansj_seg,(ansj中文分词)在这里如果你遇到什么问题都可以联系我.我一定尽我所能.帮助大家.ansj_seg更快,更准,更自由!" ;

System.out.println(ToAnalysis.parse(str));

//输出结果
欢迎/v,使用/v,ansj/en,_,seg/en,,,(,ansj/en,中文/nz,分词/n,),在/p,这里/r,如果/c,你/r,遇到/v,什么/r,问题/n,都/d,可以/v,联系/v,我/r,./m,我/r,一定/d,尽我所能/l,./m,帮助/v,大家/r,./m,ansj/en,_,seg/en,更快/d,,,更/d,准/a,,,更/d,自由/a,!

6、哈工大的LTP

LTP制定了基于XML的语言处理结果表示,并在此基础上提供了一整套自底向上的丰富而且高效的中文语言处理模块(包括词法、句法、语义等6项中文处理核心技术),以及基于动态链接库(Dynamic Link Library, DLL)的应用程序接口、可视化工具,并且能够以网络服务(Web Service)的形式进行使用。

关于LTP的使用,请参考: http://ltp.readthedocs.io/zh_CN/latest/

7、庖丁解牛

下载地址:http://pan.baidu.com/s/1eQ88SZS

使用分为如下几步:

配置dic文件: 修改paoding-analysis.jar中的paoding-dic-home.properties文件,将“#paoding.dic.home=dic”的注释去掉,并配置成自己dic文件的本地存放路径。eg:/home/hadoop/work/paoding-analysis-2.0.4-beta/dic

把Jar包导入到项目中: 将paoding-analysis.jar、commons-logging.jar、lucene-analyzers-2.2.0.jar和lucene-core-2.2.0.jar四个包导入到项目中,这时就可以在代码片段中使用庖丁解牛工具提供的中文分词技术,例如:

Analyzer analyzer = new PaodingAnalyzer(); //定义一个解析器

String text = "庖丁系统是个完全基于lucene的中文分词系统,它就是重新建了一个analyzer,叫做PaodingAnalyzer,这个analyer的核心任务就是生成一个可以切词TokenStream。"; //待分词的内容

TokenStream tokenStream = analyzer.tokenStream(text, new StringReader(text)); //得到token序列的输出流

try {

    Token t;

    while ((t = tokenStream.next()) != null){

        System.out.println(t); //输出每个token

    }

} catch (IOException e) {

    e.printStackTrace();

}

8、sogo在线分词

sogo在线分词采用了基于汉字标注的分词方法,主要使用了线性链链CRF(Linear-chain CRF)模型。词性标注模块主要基于结构化线性模型(Structured Linear Model)

在线使用地址为: http://www.sogou.com/labs/webservice/

9、word分词

word分词是一个Java实现的分布式的中文分词组件,提供了多种基于词典的分词算法,并利用ngram模型来消除歧义。能准确识别英文、数字,以及日期、时间等数量词,能识别人名、地名、组织机构名等未登录词。能通过自定义配置文件来改变组件行为,能自定义用户词库、自动检测词库变化、支持大规模分布式环境,能灵活指定多种分词算法,能使用refine功能灵活控制分词结果,还能使用词频统计、词性标注、同义标注、反义标注、拼音标注等功能。提供了10种分词算法,还提供了10种文本相似度算法,同时还无缝和Lucene、Solr、ElasticSearch、Luke集成。注意:word1.3需要JDK1.8

maven 中引入依赖:



    

        org.apdplat

        word

        1.3

    

ElasticSearch插件:

1、打开命令行并切换到elasticsearch的bin目录

      cd elasticsearch-2.1.1/bin

2、运行plugin脚本安装word分词插件:

      ./plugin install http://apdplat.org/word/archive/v1.4.zip

安装的时候注意:

如果提示:

ERROR: failed to download

或者

Failed to install word, reason: failed to download

或者

ERROR: incorrect hash (SHA1)

则重新再次运行命令,如果还是不行,多试两次

如果是elasticsearch1.x系列版本,则使用如下命令:

./plugin -u http://apdplat.org/word/archive/v1.3.1.zip -i word

3、修改文件elasticsearch-2.1.1/config/elasticsearch.yml,新增如下配置:

index.analysis.analyzer.default.type : "word"

index.analysis.tokenizer.default.type : "word"

4、启动ElasticSearch测试效果,在Chrome浏览器中访问:

http://localhost:9200/_analyze?analyzer=word&text=杨尚川是APDPlat应用级产品开发平台的作者

5、自定义配置

修改配置文件elasticsearch-2.1.1/plugins/word/word.local.conf

6、指定分词算法

修改文件elasticsearch-2.1.1/config/elasticsearch.yml,新增如下配置:

index.analysis.analyzer.default.segAlgorithm : "ReverseMinimumMatching"

index.analysis.tokenizer.default.segAlgorithm : "ReverseMinimumMatching"

这里segAlgorithm可指定的值有:

正向最大匹配算法:MaximumMatching

逆向最大匹配算法:ReverseMaximumMatching

正向最小匹配算法:MinimumMatching

逆向最小匹配算法:ReverseMinimumMatching

双向最大匹配算法:BidirectionalMaximumMatching

双向最小匹配算法:BidirectionalMinimumMatching

双向最大最小匹配算法:BidirectionalMaximumMinimumMatching

全切分算法:FullSegmentation

最少词数算法:MinimalWordCount

最大Ngram分值算法:MaxNgramScore

如不指定,默认使用双向最大匹配算法:BidirectionalMaximumMatching

10、jcseg分词器

11、stanford分词器

Stanford大学的一个开源分词工具,目前已支持汉语。

首先,去【1】下载Download Stanford Word Segmenter version 3.5.2,取得里面的 data 文件夹,放在maven project的 src/main/resources 里。

然后,maven依赖添加:



1.8

UTF-8

3.6.0







edu.stanford.nlp

stanford-corenlp

${corenlp.version}





edu.stanford.nlp

stanford-corenlp

${corenlp.version}

models





edu.stanford.nlp

stanford-corenlp

${corenlp.version}

models-chinese



测试:

import java.util.Properties;

import edu.stanford.nlp.ie.crf.CRFClassifier;

public class CoreNLPSegment {

    private static CoreNLPSegment instance;

    private CRFClassifier classifier;

    private CoreNLPSegment(){

        Properties props = new Properties();

        props.setProperty("sighanCorporaDict", "data");

        props.setProperty("serDictionary", "data/dict-chris6.ser.gz");

        props.setProperty("inputEncoding", "UTF-8");

        props.setProperty("sighanPostProcessing", "true");

        classifier = new CRFClassifier(props);

        classifier.loadClassifierNoExceptions("data/ctb.gz", props);

        classifier.flags.setProperties(props);

    }

    public static CoreNLPSegment getInstance() {

        if (instance == null) {

            instance = new CoreNLPSegment();

        }

        return instance;

    }

    public String[] doSegment(String data) {

        return (String[]) classifier.segmentString(data).toArray();

    }

    public static void main(String[] args) {

        String sentence = "他和我在学校里常打桌球。";

        String ret[] = CoreNLPSegment.getInstance().doSegment(sentence);

        for (String str : ret) {

            System.out.println(str);

        }

    }

}

参考博客:

https://blog.sectong.com/blog/corenlp_segment.html

http://blog.csdn.net/lightty/article/details/51766602

12、Smartcn

Smartcn为Apache2.0协议的开源中文分词系统,Java语言编写,修改的中科院计算所ICTCLAS分词系统。很早以前看到Lucene上多了一个中文分词的contribution,当时只是简单的扫了一下.class文件的文件名,通过文件名可以看得出又是一个改的ICTCLAS的分词系统。

http://lucene.apache.org/core/5_1_0/analyzers-smartcn/org/apache/lucene/analysis/cn/smart/SmartChineseAnalyzer.html

你可能感兴趣的:(java)