2017-05-16 87 views
-1

我正在读取文件中的停止词,我将它保存在HashSet中。我比较说HashSetString检查停用词。字符串没有正确检查停止词

如果我在String-变量中放置了一个单词,例如“the”,那么我的输出是“Yes”。但是,如果我将“Apple is it”或“它是一个苹果”这样的东西输出为“No”,尽管String -variables包含停用词。

这里的整个程序,包含两种方法,一种用于读取文件和一个用于去除停止词:

private static HashSet<String> readFile(){ 
    Scanner x = null; 
    HashSet<String> hset = new HashSet<String>(); 

    try { 
     x = new Scanner(new File("StopWordsEnglish")); 
     while(x.hasNext()){ 
      hset.add(x.next()); 
     } 
    } catch(Exception e) { 
     e.printStackTrace(); 
    } finally { 
     x.close(); 
    } 
    return hset; 
} 

public static void removeStopWords(){ 
    HashSet<String> hset = readFile(); 
    System.out.println(hset.size()); 
    System.out.println("Enter a word to search for: "); 
    String search = "is"; 
    String s = search.toLowerCase(); 
    System.out.println(s); 

    if (hset.contains(s)) { 
     System.out.println("Yes"); 
    } else { 
     System.out.println("No"); 
    } 
} 
+0

使用调试器,并发现它在空间 – Jens

回答

1

我有一种感觉,我无法正确读取你的问题。但是在这里。

假设:

String search = "it is an apple"; 

那么你或许应该拆分字符串,并逐个检查每个单词。

String[] split = search.split(" "); 
for (String s : split) { 
if (hset.contains(s.toLowerCase()) { 
    System.out.println("Yes"); 
    break; //no need to continue if a stop word is found 
} else { 
    System.out.println("No"); 
} 
+0

拆分听起来像是不错的和适当的事情在这种情况下做的,但我想补充一点,符号化可能是一个困难和微妙的问题,例如:HTTPS: //www.tutorialspoint.com/opennlp/opennlp_tokenization.htm – hugh