java去掉停止词_文本分类实验中用java实现取名词和去除停用词

这点小程序我调了一整天啊啊啊啊啊

本来打算用C语言写一个  可是弄了半天总是出错  上午几乎就在用C语言写了

写的是:

#include

#include

#include

void get_n(FILE* word_result,FILE* n_result);

int enterchange(FILE *fp);

void main()

{

for(int i=0;i<=9;i++)

{

for(int j=0;j<=1999;j++)

{

FILE *word_result,*n_result;

char name_i[20],name_j[20];

sprintf(name_i,"%d",i);

sprintf(name_j,"%d",j);

char file_path[100];

char file_path_n[100];

//file_path=strcat(strcat(strcat(strcat("E:\\datamining\\ICTCLAS50_Windows_32_JNI\\Sample\\Windows_32_jni_Demo\\file"\\,name_i),"\\"),"result_"),name_j);

sprintf(file_path,"%s%d%s%d%s","E:\\datamining\\ICTCLAS50_Windows_32_JNI\\Sample\\Windows_32_jni_Demo\\file",i,"\\",j,".txt");

sprintf(file_path_n,"%s%d%s%d%s","E:\\datamining\\ICTCLAS50_Windows_32_JNI\\Sample\\Windows_32_jni_Demo\\file",i,"\\",j,"result_n.txt");

word_result = fopen(file_path,"r");

n_result = fopen(file_path_n,"w");

get_n(word_result, n_result);

}//j

}//i

}

void get_n(FILE* word_result,FILE* n_result)

{

enterchange(word_result);

char line[1024];

while(fgets(line,1024,word_result))

{

for(int i=0;i

{

if(line[i]=='n'){fprintf(n_result,"%s",line);}

}

}//while

}//get_n

int enterchange(FILE *fp)

{

int c;

if(fp==NULL)

return 1;

while((c=fgetc(fp))!=EOF)

if(c==' '){

fseek(fp,-1L,1);

fputc('\n',fp);

fseek(fp,0L,1);

}

fclose(fp);

return 0;

}也不知道是哪里出错了

我的想法是把要检察的表中空格都换成回车 然后可以用fgets函数 获取一行 然后查找是不是存在n这个字符 存在就说明是名词 就存到一个新文件中 如果没有 就不存到新文件中

总之没达到效果 希望大神帮我看看怎么回事

然后同学给我传过来他的一段java代码:

//*************************取名词和去除停用词****************************************

public static void refineNoun() throws IOException{

String filestopwords = "E:/datamining/ICTCLAS50_Windows_32_JNI/Sample/Windows_32_jni_Demo/file/stop_words_ch.txt";//停用詞表

File fsw = new File(filestopwords);

BufferedReader stopreader = new BufferedReader(new FileReader(fsw));

Set setor = new HashSet ();

String tempt = null;

while((tempt = stopreader.readLine()) != null){

setor.add(tempt);

}

System.out.println("set over!");

for(int j=0;j<=9;j++){

for(int i=10;i<=1999;i++){

String Outputfilename = "E:/datamining/ICTCLAS50_Windows_32_JNI/Sample/Windows_32_jni_Demo/file/"+j+"/"+"result_"+i+".txt";

File file = new File(Outputfilename);

if(!file.exists()) continue;

BufferedReader reader = new BufferedReader(new FileReader(file));

String filenewname = "E:/datamining/ICTCLAS50_Windows_32_JNI/Sample/Windows_32_jni_Demo/file/"+j+"/"+"result_data_"+i+".txt";

File fileout = new File(filenewname);

FileWriter fw = new FileWriter(fileout);

String tmp = null;

try {

while((tmp = reader.readLine()) !=null){

String t = tmp.trim();

if(t.equals("") ){

continue;

}else{

tmp = " "+tmp;

}

//System.out.println(tmpString);

String[] str = tmp.split(" ");

for(int k=0;k

int m = str[k].indexOf("/");

if(m != -1){

String x = str[k].substring(m, str[k].length());

String o = str[k].substring(0, m).replaceAll("[a-zA-Z0-9\\pP‘’“”]*", "");

if(x.indexOf('n') != -1 && !(setor.equals(o))){

fw.write(o+" ");

fw.flush();

}else{

k++;

}

}

}

}

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

fw.close();

//System.out.println(i+"once over!");

}

}

}

//******************************取名词和去除停用词***********************************

然后我出现的错误是  泛型什么的  使用了未经检察或不安全的操作

然后我加了一个

就搞定啦

后来又出现的错误是我本来有10-19个文件 但是我的循环写的是i=10;i<=199;i++

总是出错 因为我根本不存在这么多文件 这属于异常

然后我就加了一个判断语句

判断文件是不是存在,如果不存在就continue

哇咔咔 好机智的我

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值