Основа текста в Java

Я в поисках возможности Stemm строк в Java. Сначала я хотел сделать это с помощью lucene, но все примеры, которые я нашел в Интернете, устарели. (SnowballAnalyzer, PorterStemmer, ...) Я просто хочу выделить целые предложения.

public static String stemSentence(String sentence) {
    ...
    return stemmedSentence;
}

Как мне это сделать?

1 ответ

Решение

Сделай это:

public static String stem(String string) throws IOException {
    TokenStream tokenizer = new StandardTokenizer(Version.LUCENE_47, new StringReader(string));
    tokenizer = new StandardFilter(Version.LUCENE_47, tokenizer);
    tokenizer = new LowerCaseFilter(Version.LUCENE_47, tokenizer);
    tokenizer = new PorterStemFilter(tokenizer);

    CharTermAttribute token = tokenizer.getAttribute(CharTermAttribute.class);

    tokenizer.reset();

    StringBuilder stringBuilder = new StringBuilder();

    while(tokenizer.incrementToken()) {
        if(stringBuilder.length() > 0 ) {
            stringBuilder.append(" ");
        }

        stringBuilder.append(token.toString());
    }

    tokenizer.end();
    tokenizer.close();

    return stringBuilder.toString();
}
Другие вопросы по тегам