1. 程式人生 > >IK分詞器用法

IK分詞器用法

con ade enc nbsp 分區 lac eset smart true

一)新建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分詞器用法