利用java實現對文字的去除停用詞以及分詞處理
阿新 • • 發佈:2018-10-31
功能:
對txt文件進行分詞處理,並去除停用詞。
工具:
IDEA,java,hankcs.hanlp.seg.common.Term等庫。
程式:
import java.util.*; import java.io.*; import java.lang.String; import java.lang.StringBuilder; import com.hankcs.hanlp.seg.common.Term; import com.hankcs.hanlp.HanLP; public class WordPre { public static void main(String[] args)throws Exception { File file = new File("E:\\資料\\資料\\test.txt");//Test檔案 File file1 = new File("E:\\資料\\資料\\totalstop.txt");//停用詞 File file2=new File("E:\\資料\\資料\\testPro.txt"); BufferedReader br = new BufferedReader(new FileReader(file));//構造一個BufferedReader類來讀取Test檔案BufferedReader br1 = new BufferedReader(new FileReader(file1));//構造一個BufferedReader類來讀取totalstop檔案 String string = null; String string1 = null; PrintWriter pfp= new PrintWriter(file2); ArrayList<String> stopword = new ArrayList(); while ((string1 = br1.readLine()) != null) {//使用readLine方法,一次讀一行 讀取停用詞 stopword.add(string1); } br1.close(); //使用readLine方法,一次讀一行,讀取待處理文字 while ((string = br.readLine()) != null) { ArrayList<String> TermList = new ArrayList(); StringBuilder sb = new StringBuilder(); HanLP.Config.ShowTermNature = false; // 關閉詞性顯示 List<Term> termList = HanLP.segment(string);//呼叫HanLP.segment()對句子進行分詞處理 for(int i = 0;i < termList.size(); i++){ TermList.add(termList.get(i).toString()); } TermList.removeAll(stopword); //System.out.println(TermList); for(int i = 0;i < TermList.size(); i++) { sb.append(TermList.get(i)); sb.append(" "); sb.toString(); } pfp.print(sb); pfp.write("\r\n"); pfp.flush(); } pfp.close(); br.close(); } }
功能如程式所示,
首先讀取待處理文字,txt格式,一行一句話,大概34萬條資料,也就34萬行。
再讀取停用詞文字。
呼叫HanLP.segment() 對讀取到的 每一行 句子進行分詞處理,並呼叫removeAll去除停用詞,
儲存到本地txt,每個詞之間使用空格隔開。
結果:
原始文字:
處理之後文字:
實現效果還不錯。歡迎大家指導。