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 ())