J'essaie de togmenter et de supprimer les mots d'arrêt d'un fichier TXT avec Lucene. J'ai ceci: Mon principal ressemble à ceci: p> Ceci me donne une erreur mais je ne peux pas comprendre pourquoi . p> p>
3 Réponses :
Vous pouvez essayer d'appeler Tokenstream.Reset () avant d'appeler Tokenstream.incrimentationToken () P>
J'ai eu le même problème. Pour supprimer les mots d'arrêt à l'aide de Le code ci-dessous indique la version correcte de votre Pour utiliser une liste personnalisée des mots d'arrêt Utilisez ce qui suit: p> Lucene Code> Vous pouvez utiliser son ensemble d'arrêt par défaut à l'aide de la méthode anglaisnalyzer.getDefaultStopset (); code>. Sinon, vous pouvez créer votre propre liste de mots d'arrêt personnalisée. retirer des mots () code>: p>
Quelles importations sont nécessaires pour faire fonctionner le code ci-dessus?
Voici actuels, exemples de travail: Docs.LePonceau .org / java-exemples / java-évaluation / ... et docs.leponceau.org/java-examples/java-evaluation/...
@ user1050755 Le lien Anglaisalalyzer Code> Version fonctionne, le Standardanalyzer Code> On ne supprime aucun mot, car vous devez probablement lui donner une liste de mots d'arrêt. Comment tu fais ça? Veuillez également publier ce code comme réponse, car l'autre code ci-dessus est obsolète et ne fonctionne plus avec les dernières versions de Lucene plus (J'utilise 8.6.3).
Lucene a changé et à cause de cette réponse suggérée (postée en 2014) ne compilera pas. Il s'agit d'une version légèrement altérée du code @ user1050755 liée qui fonctionne avec Lucene 8.6.3 et Java 8:
final String text = "This is a short test!"
final List<String> stopWords = Arrays.asList("short","test"); //Filters both words
final CharArraySet stopSet = new CharArraySet(stopWords, true);
try {
ArrayList<String> remaining = new ArrayList<String>();
Analyzer analyzer = new StandardAnalyzer(stopSet); // Filters stop words in the given "stopSet"
//Analyzer analyzer = new StandardAnalyzer(); // Only filters punctuation marks out of the box, you have to provide your own stop words!
//Analyzer analyzer = new EnglishAnalyzer(); // Filters the default English stop words (see link below)
//Analyzer analyzer = new EnglishAnalyzer(stopSet); // Only uses the given "stopSet" but also runs a stemmer, so the result might not look like what you expected.
TokenStream tokenStream = analyzer.tokenStream(CONTENTS, new StringReader(text));
CharTermAttribute term = tokenStream.addAttribute(CharTermAttribute.class);
tokenStream.reset();
while(tokenStream.incrementToken()) {
System.out.print("[" + term.toString() + "] ");
remaining.add(term.toString());
}
tokenStream.close();
analyzer.close();
} catch (IOException e) {
e.printStackTrace();
}
Quelle est l'erreur que vous voyez?
Il se plaint alors que (Tokenstream.incrementationToken ())