【java HanNLP】HanNLP 利用java實現對文字的去除停用詞以及分詞處理
阿新 • • 發佈:2018-12-19
HanNLP 功能很強大,利用它去停用詞,加入使用者自定義詞庫,中文分詞等,計算分詞後去重的個數、
maven pom.xml 匯入
<dependency> <groupId>com.hankcs</groupId> <artifactId>hanlp</artifactId> <version>portable-1.6.1</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.6</version> </dependency>
分詞程式:
import com.hankcs.hanlp.HanLP; import com.hankcs.hanlp.dictionary.CustomDictionary; import com.hankcs.hanlp.seg.common.Term; import org.apache.commons.io.FileUtils; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; public class HanNLP2 { /*列表去重*/ public static List removeDuplicate(List list){ List listTemp = new ArrayList(); for(int i=0;i<list.size();i++){ if(!listTemp.contains(list.get(i))){ listTemp.add(list.get(i)); } } return listTemp; } public static void main(String[] args) throws IOException { /*載入停止詞*/ File file1 = new File("F:/停止詞大全/stop_words.txt");//停用詞 List<String> stopword= FileUtils.readLines(file1,"utf8"); //System.out.println(stopword); /*載入自定義詞典*/ File file2 = new File("F:/停止詞大全/使用者自定義詞典.txt");//停用詞 List<String> dic= FileUtils.readLines(file2,"utf8"); //System.out.println(dic); // 動態增加自定義詞典 for(int i=0;i<dic.size();i++) { CustomDictionary.add(dic.get(i)); } /*中文分詞*/ // 關閉詞性顯示 HanLP.Config.ShowTermNature = false; //呼叫HanLP.segment()對句子進行分詞處理 List<Term> termList = HanLP.segment("五星巴西中國科學院啊啊啊啊啊啊啊啊啊啊啊啊啊啊《啊計算技術研究所的宗成慶教授正在教授自然語言處理課程趙樂際?俺們美錦男籃"); ArrayList<String> TermList = new ArrayList(); for(int i = 0;i < termList.size(); i++){ TermList.add(termList.get(i).toString()); } //去除停止詞 TermList.removeAll(stopword); System.out.println(TermList); System.out.println(removeDuplicate(TermList)); /*計算去除停止詞之後的分詞的長度*/ Integer tag_length=removeDuplicate(TermList).size(); System.out.println(tag_length); } }
執行結果:
[五星巴西, 中國科學院, 宗成慶, 教授, 教授, 課程, 美錦男籃]
[五星巴西, 中國科學院, 宗成慶, 教授, 課程, 美錦男籃]
6
Process finished with exit code 0