功能:
对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,每个词之间使用空格隔开。
结果:
原始文本:
处理之后文本:
实现效果还不错。欢迎大家指导。