`

分词去停用词操作

阅读更多
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.HashSet;
import java.util.Set;

import ICTCLAS.I3S.AC.ICTCLAS50;

public class FileExcludeStopWord {

//停用词词表
public static final String stopWordTable = "停用词表路径";
public static void main(String[] args) {

//源文件和目的文件
String srcFile = "源文件路径";
String destFile = "目的文件路径";
new FileExcludeStopWord().fileExcludeStopWord(srcFile, destFile);

}

public void fileExcludeStopWord(String srcFile,String destFile){
try {
//读取原文件和停用词表
BufferedReader srcFileBr = new BufferedReader(new InputStreamReader(new FileInputStream(new File(srcFile))));
BufferedReader StopWordFileBr = new BufferedReader(new InputStreamReader(new FileInputStream(new File(stopWordTable))));

//将去除停用词的文本信息存入输出文件
BufferedWriter destFileBw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(destFile))));

//用来存放停用词的集合
Set stopWordSet = new HashSet<String>();

//初如化停用词集
String stopWord = null;
for(; (stopWord = StopWordFileBr.readLine()) != null;){
stopWordSet.add(stopWord);
}

//分词工具
ICTCLAS50 ICTCLAS = new ICTCLAS50();
// 初始化分词所用库的路径
String argu = ".";
if (ICTCLAS.ICTCLAS_Init(argu.getBytes("gb2312")) == false) {
System.out.println("分词所用库初始化失败。");
return;
}

String paragraph = null;
for(; (paragraph = srcFileBr.readLine()) != null;){
//对读入的文本进行分词
byte[] spiltResult = ICTCLAS.ICTCLAS_ParagraphProcess(paragraph.getBytes("gb2312"), 2, 0);
String spiltResultStr = new String(spiltResult,0,spiltResult.length,"gb2312");

//得到分词后的词汇数组,以便后续比较
String[] resultArray = spiltResultStr.split(" ");

//过滤停用词
for(int i = 0; i< resultArray.length; i++){
if(stopWordSet.contains(resultArray[i])){
resultArray[i] = null;
}
}

//把过滤后的字符串数组存入到一个字符串中
StringBuffer finalStr = new StringBuffer();
for(int i = 0; i< resultArray.length; i++){
if(resultArray[i] != null){
finalStr = finalStr.append(resultArray[i]).append(" ");
}
}

//将过滤后的文本信息写入到指定文件中
destFileBw.write(finalStr.toString());
destFileBw.newLine();
}

//关闭输入流
destFileBw.close();
StopWordFileBr.close();
srcFileBr.close();


} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch(Exception e){
e.printStackTrace();
}
}

}
分享到:
评论

相关推荐

    python文本分词,去停用词,包含基础停用词词典

    去停用词则是分词后的一道工序,停用词是指在文本中频繁出现但对主题信息贡献较小的词汇,如“的”,“是”,“在”等。在分析和理解文本时,这些词往往被视为噪声,去除它们有助于提高文本分析的效率和准确性。对于...

    文本分类之词频统计(分词、词干提取、去停用词、计算词频,有界面

    这个工具不仅能够对文本进行基本的处理,如分词、词干提取和去除停用词,还提供了用户界面,使得操作更加直观易用。 1. **分词**:分词是将连续的汉字序列切分成有意义的词语单位,它是中文信息处理的基础。常见的...

    文本分类之词频统计(分词、词干提取、去停用词、计算词频,有界面)

    在这个项目中,我们主要探讨的是如何通过分词、词干提取、去停用词等预处理技术来有效地进行词频统计,并且提供了一个具有图形用户界面的工具,使得操作更为直观和便捷。 首先,让我们了解一下分词。分词是将连续的...

    python使用jieba实现中文分词去停用词方法示例

    本文将详细介绍如何使用jieba库进行中文分词以及去除停用词。 首先,jieba分词器的安装非常简便,只需要通过Python的包管理工具pip即可完成,支持Python 2和3。安装命令如下: ```bash pip install jieba ``` jieba...

    去停用词_利用python去停用词_

    在自然语言处理(NLP)领域,去停用词是一个重要的步骤,主要是为了减少无关紧要的词汇对文本分析的影响。这些词汇通常包括常见的助词...如果你手头有一个文本文件需要去停用词,只需按照上述步骤操作,即可轻松完成。

    结巴分词、词性标注以及停用词过滤

    本文将深入探讨结巴分词、词性标注以及停用词过滤这三个关键概念,并结合Python程序实践来阐述它们的应用。 1. 结巴分词(jieba分词): 结巴分词是针对中文文本的一种开源分词工具,由李志武开发。它采用了基于...

Global site tag (gtag.js) - Google Analytics