2017-05-16 3 views
-1

Ich lese Stoppwörter aus einer Datei, die ich in einer HashSet speichern. Ich vergleiche HashSet mit einem String, um nach Stoppwörtern zu suchen.String nicht korrekt für Stoppwörter überprüft

Wenn ich ein einzelnes Stoppwort wie "das" in die String -Variable einfüge, ist mein Ausgang "Yes". Wenn ich jedoch etwas wie "Apple ist es" oder "es ist ein Apfel" gibt, ist die Ausgabe "Nein", trotz der Tatsache, dass beide String -Variablen Stoppwörter enthalten.

Hier ist das ganze Programm, das zwei Methoden, eine für das Lesen der Datei und eine für die Stoppwörter zu entfernen:

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

einen Debugger verwenden und es – Jens

Antwort

1

Ich habe das Gefühl, ich bin nicht Ihre Frage richtig zu lesen. Aber hier geht es.

Unter der Annahme:

String search = "it is an apple"; 

Dann sollten Sie spalten wahrscheinlich die Zeichenfolge und prüfen Sie jedes einzeln Wort.

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

Splitting auf Räume wie eine gute und angemessene Sache klingt herauszufinden, in diesem Fall zu tun, aber ich wollte, dass Tokenisieren hinzufügen kann ein schwieriges und subtiles Problem sein, zum Beispiel: https: //www.tutorialspoint.com/opennlp/open- nlp_tokenization.htm – hugh

Verwandte Themen