利用java实现对文本的去除停用词以及分词处理

时间:2024-04-06 20:35: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,每个词之间使用空格隔开。

结果:

原始文本:

利用java实现对文本的去除停用词以及分词处理

处理之后文本:

利用java实现对文本的去除停用词以及分词处理

实现效果还不错。欢迎大家指导。