java中的停止字删除方法不起作用

java中的停止字删除方法不起作用,java,information-retrieval,stop-words,Java,Information Retrieval,Stop Words,我正在尝试编写一个Java代码,该代码计数大于读取所有cran字段(信息检索中的热门话题),以便进行标记化、计算总标记数、查找50个常用词并删除预定义的停止词。 除了StopWordsRemoval方法(代码中的最后一个方法),它将起作用, 它不会根据需要更改输出,此方法前后的输出相同 你能帮我找出问题所在吗? 这是我用Java编写的第一个代码:( import java.io.*; 导入java.util.*; 公共类信息检索1{ //全局变量 公共静态缓冲区读取缓冲区; public sta

我正在尝试编写一个Java代码,该代码计数大于读取所有cran字段(信息检索中的热门话题),以便进行标记化、计算总标记数、查找50个常用词并删除预定义的停止词。 除了
StopWordsRemoval
方法(代码中的最后一个方法),它将起作用, 它不会根据需要更改输出,此方法前后的输出相同

你能帮我找出问题所在吗? 这是我用Java编写的第一个代码:(

import java.io.*;
导入java.util.*;
公共类信息检索1{
//全局变量
公共静态缓冲区读取缓冲区;
public static Hashtable wordList=new Hashtable();
public static ArrayList fileMap=new ArrayList();
public static Set tagNames=new HashSet();
//公共静态数组列表;
公共静态int documentsCount=0;
公共静态整型totalTokens=0;
公共静态int uniqueWords=0;
公共静态int标记计数=0;
公共静态int-singleOccurrenOWORDS=0;
公共静态数组列表分类列表;
公共信息检索{
//TODO自动生成的构造函数存根
}
公共静态void main(字符串[]args)引发IOException{
字符串cranfield=“/Users/Manal/Desktop/semster1/IR/assignment 1/cranfieldDocs”;
文件cranfield文件=新文件(cranfield);
读取文件(cranfieldFiles);
System.out.println(“文档总数:+fileMap.size());
//计算令牌的总数
totalTokens=CalculateEnumberOfTokens(单词列表);
System.out.println(“单词总数=”+totalTokens);
//计算唯一单词的数量
单字=计算单字(字表);
System.out.println(“不同单词总数=”+唯一单词);
//计算唯一单词的数量
singleoccurrenewords=计算singleoccurrencewords(单词列表);
System.out.println(“仅出现一次的单词总数=“+SingleOccurrenOrds”);
//找出最常用的30个单词
查找最频繁的单词(单词列表);
StopWordsRemoval(Cranfield文件、单词列表);
//删除停止字后重新打印所有信息;
System.out.println(“\n************************************************\n删除停止字后\n************************************\n”);
//计算令牌的总数
totalTokens=CalculateEnumberOfTokens(单词列表);
System.out.println(“单词总数=”+totalTokens);
//计算唯一单词的数量
单字=计算单字(字表);
System.out.println(“不同单词总数=”+唯一单词);
//计算唯一单词的数量
singleoccurrenewords=计算singleoccurrencewords(单词列表);
System.out.println(“仅出现一次的单词总数=“+SingleOccurrenOrds”);
//找出最常用的30个单词
查找最频繁的单词(单词列表);
}
公共静态void ReadFile(File cranfieldFiles)引发IOException{
对于(文件:cranfieldFiles.listFiles())
{
//如果路径包含文件夹,则递归读取文件
if(file.isDirectory())
{
读取文件(文件);
}
其他的
{
documentsCount++;
尝试
{
buffer=newbufferedreader(newfilereader(file));
}
catch(filenotfounde异常)
{
System.out.println(“未找到文件”);
}
//找到标签和它们的计数
tagCount=tagCount+TagHandler(文件、标记名);
//在田野里找单词
标记处理程序(文件、标记名);
}
}
}
公共静态int标记处理程序(文件、设置标记名)引发IOException
{
弦线;
int tag_count=0;
buffer=newbufferedreader(newfilereader(file));
而((line=buffer.readLine())!=null)
{
/*

*如果该行包含一个“,我认为这就是代码中的问题

if(wordList.keySet().equals(stopwords[j]))
这里要做的是检查键集是否等于单词(keySet()返回Set),以及键集是否包含单词。请尝试以下操作:

if(wordList.keySet().contains(stopwords[j]))

让我知道这是否解决了您的问题。

我认为这就是代码中的问题

if(wordList.keySet().equals(stopwords[j]))
这里要做的是检查键集是否等于单词(keySet()返回Set),以及键集是否包含单词。请尝试以下操作:

if(wordList.keySet().contains(stopwords[j]))

让我知道这是否解决了您的问题。

我认为您必须将您的if语句从“if(wordList.keySet().equals(stopwords[j])”更改为“if(key.equals(stopwords[j])”。我尝试过它,但我想它只是删除了一个单词?我想您必须将您的if语句从“if(wordList.keySet().equals(stopwords[j])”更改为“if(key.equals)”(stopwords[j])“我试过了,但我想知道它只是删除了一个单词?