1. 程式人生 > >【java HanNLP】HanNLP 利用java實現對文字的去除停用詞以及分詞處理

【java HanNLP】HanNLP 利用java實現對文字的去除停用詞以及分詞處理

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