2015-04-13 3 views
0

Для некоторых ИК-пурпусов я хотел бы извлечь фрагмент текста и перед анализом хочу удалить слова остановки. Для этого я сделал txt файл стоп-слов, а затем, используя следующий код, пытаясь удалить эти бесполезные слова:Остановить удаление слова пошло не так

private static void stopWordRemowal() throws FileNotFoundException, IOException { 

Set<String> stopWords = new LinkedHashSet<String>(); 
BufferedReader br = new BufferedReader(new FileReader("StopWord.txt")); 
for(String line;(line = br.readLine()) != null;) 
    stopWords.add(line.trim()); 


BufferedReader br2 = new BufferedReader(new FileReader("text")); 
FileOutputStream theNewWords=new FileOutputStream(temp); 

for(String readReady;(readReady = br2.readLine()) != null;) 

    { 
    StringTokenizer tokenizer =new StringTokenizer(readReady) ; 
     String temp=tokenizer.nextToken(); 
     if(!stopWords.equals(temp)) 
     { 
      theNewWords.write(temp.getBytes()); 
      theNewWords.write(System.getProperty("line.separator").getBytes()); 
     }} 

    } 

Но на самом деле это не работает хорошо. Учитывая следующий пример текста фрагмент кода:

Text summarization is the process of extracting salient information from the source text and to present that 
information to the user in the form of summary 

выход будет, как:

Text 
summarization 
is 
the 
process 
of 
extracting 
salient 
information 
from 
the 
source 
text 
and 
to 
present 
that 
information 
to 
the 
user 
in 
the 
form 
of 
summary 

это почти как никакого эффекта. Но я не знаю, почему.

+0

Просьба также отправить файл StopWord.txt. Также обратите внимание, что у вас есть проблемы с интервалом в вашем коде. – Cristik

ответ

3

Вы должны использовать contains метод набора и не равен метод, как:

if(!stopWords.contains(temp))//does set contains my string temp? 

Вместо

if(!stopWords.equals(temp))//set equals to string? not possible 
+0

oh. вот и все. но почему не равны? я имею в виду, так как 'to' в' stop word.txt' равен 'to' в самом файле, почему это должно быть неправильно использовать' equals() '? – user3049183

+0

Нет, вы являетесь методом равных знаков на заданном объекте. Набор String будет равен другому набору строк. Случается, что набор строк не равен одной строке. – SMA

+0

Я также хотел бы потребовать улучшения. Я надеялся, если есть способ сделать регистр нечувствительным к регистру? это использование шаблонов или что? – user3049183

 Смежные вопросы

  • Нет связанных вопросов^_^