码迷,mamicode.com
首页 > 其他好文 > 详细

IK分词器用法

时间:2018-08-20 13:42:54      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:内容   vat   encoding   result   string   新建   分享图片   rac   des   

一)新建maven工程

1.1)项目结构如下:

技术分享图片

 

1.2)IKAnalyzer.cfg.xml内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>IK Analyzer 扩展配置</comment>
<entry key="ext_dict">extend.dic;</entry>
<entry key="ext_stopwords">stopword.dic;</entry>
</properties>

 

1.3)在pom文件中添加如下jar

<dependency>
<groupId>com.janeluo</groupId>
<artifactId>ikanalyzer</artifactId>
<version>2012_u6</version>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-core</artifactId>
<version>4.7.2</version>
</dependency>

二)新建类IKAnalyzerSupplyProduct
public class IKAnalyzerSupplyProduct {
public static String startIKAnalyzer(String line) throws IOException{
IKAnalyzer analyzer = new IKAnalyzer();
// 使用智能分词
analyzer.setUseSmart(true);
// 打印分词结果
try {
return printAnalysisResult(analyzer, line);
} catch (Exception e) {
e.printStackTrace();
}finally{
if(analyzer!=null){
analyzer.close();
}
}
return null;
}
private static String printAnalysisResult(Analyzer analyzer, String keyWord)
throws Exception {
String resultdata="";
String infoData="";
if(keyWord!=""&&keyWord!=null){
TokenStream tokenStream = analyzer.tokenStream("content",
new StringReader(keyWord));
tokenStream.addAttribute(CharTermAttribute.class);
tokenStream.reset();
while (tokenStream.incrementToken()) {
CharTermAttribute charTermAttribute = tokenStream
.getAttribute(CharTermAttribute.class);
String dest= NumberUtil.checkNumber(charTermAttribute.toString().replace("-",""));
boolean mailres= RegExpUtil.isEmail(charTermAttribute.toString());
boolean hpres=RegExpUtil.isHomepage(charTermAttribute.toString());
boolean num=RegExpUtil.isNum(charTermAttribute.toString().replace("-", "").replace("qq", "").replace("QQ", "").replace("+", ""));
if(dest!="CELLPHONE"&&dest!="FIXEDPHONE"&&mailres==false&&hpres==false&&num==false){
infoData=infoData+" "+charTermAttribute.toString();
}
}
if(infoData!=""&&infoData!=null){
resultdata=resultdata+infoData.trim()+"\r\n";
}else{
resultdata="";
}
}
return resultdata;
}

public static void main(String[] args) {
String word ="8月17日,“雄鹰突击-2018”中国和白俄罗斯特种部队联合训练,在北部战区陆军某综合训练基地完成综合演练并举行结训仪式。北部战区副司令员兼北部战区陆军司令员王印芳、白俄罗斯武装力量总参谋长兼国防部第一副部长别洛科涅夫出席结训仪式。" +
"记者在综合演练现场看到,联合突击营救行动展开后,双方特战队员混编成多个战斗小组,各小组指挥员通过眼神和手语快速交流现场侦察情况,分配任务、搜索前行、交替掩护等一系列动作顺畅默契,判定目标后迅即展开行动。演练中,中白特战队员密切协同,出色完成立体封控、分区搜歼等一系列行动,赢得两军观摩团阵阵掌声。";
String result=null;
try {
result = IKAnalyzerSupplyProduct.startIKAnalyzer(word);
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("result"+result);
}
}

 三)运行结果如下:

技术分享图片

可在extend.dic 与 stopword.dic 之间进行调整 分词

IK分词器用法

标签:内容   vat   encoding   result   string   新建   分享图片   rac   des   

原文地址:https://www.cnblogs.com/fishjar/p/9505041.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!