我想删除java中的停用词。
所以,我从文本文件中读取停用词。
并存储Set
Set<String> stopWords = new LinkedHashSet<String>();
BufferedReader br = new BufferedReader(new FileReader("stopwords.txt"));
String words = null;
while( (words = br.readLine()) != null) {
stopWords.add(words.trim());
}
br.close();
而且,我读了另一个文本文件。
所以,我想删除文本文件中的字符串。
我该怎么办?
答案 0 :(得分:5)
使用设置作为停用词:
Set<String> stopWords = new LinkedHashSet<String>();
BufferedReader SW= new BufferedReader(new FileReader("StopWord.txt"));
for(String line;(line = SW.readLine()) != null;)
stopWords.add(line.trim());
SW.close();
输入txt_file的和ArrayList
BufferedReader br = new BufferedReader(new FileReader(txt_file.txt));
//make your arraylist here
// function deletStopWord() for remove all stopword in your "stopword.txt"
public ArrayList<String> deletStopWord(Set stopWords,ArrayList arraylist){
System.out.println(stopWords.contains("?"));
ArrayList<String> NewList = new ArrayList<String>();
int i=3;
while(i < arraylist.size() ){
if(!stopWords.contains(arraylist.get(i))){
NewList.add((String) arraylist.get(i));
}
i++;
}
System.out.println(NewList);
return NewList;
}
arraylist=deletStopWord(stopWords,arraylist);
答案 1 :(得分:1)
使用ArrayList
可能会更容易。
public ArrayList removeDuplicates(ArrayList source){
ArrayList<String> newList = new ArrayList<String>();
for (int i=0; i<source.size(); i++){
String s = source.get(i);
if (!newList.contains(s)){
newList.add(s);
}
}
return newList;
}
希望这有帮助。
答案 2 :(得分:1)
你想从文件中删除重复的单词,下面是相同的高级逻辑。
现在你已经设置了包含文件的所有唯一字。
答案 3 :(得分:0)
您应该尝试使用StringTokenizer
。
答案 4 :(得分:0)
如果您只是想从文件中的单词中删除某组单词,则可以随意使用。但是,如果您正在处理涉及自然语言处理的问题,则应使用库。
例如,使用Lucene进行标记化起初看起来会更复杂,但是它会处理您将忽略的无数复杂情况,并且如果您改变主意关于具体的停用词,如何改进无论你是否关心案件等等,都是令人信服的。
答案 5 :(得分:0)
它可能是迟到的回复,希望它可以帮助几天后创建小的util库来删除给定文本中的stop / stemmer单词及其在maven repository / github