2014-06-07 3 views
1

자바에서 줄무늬 문자열을 검색하고 있습니다. 처음에는 lucene으로 해보고 싶었지만 웹상에있는 모든 예제 은 사용되지 않습니다. (SnowballAnalyzer, PorterStemmer, ...) 나는 전체 문장의 줄임말을 원합니다.자바에서 텍스트 줄기를 자르십시오.

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

어떻게 할 수 있습니까?

+0

이 링크는 당신을 위해 몇 가지 해결책이 있습니다 http://stackoverflow.com/questions/5391840/stemming-english-words-with-lucene – francisco

+0

루씬의 형태소 분석기는 모두 [org.apache.lucene.analysis] (http://lucene.apache.org/core/4_8_0/analyzers-common/org/apache/lucene/analysis/) 패키지에 들어 있습니다. 귀하의 언어를 선택하고 멀리 가십시오. ('SnowballAnalyzer'는 확실히 사용되지 않지만 'PorterStemmer'는 그렇지 않습니다. 결국 EnglishAnalyzer에서 사용됩니다) – femtoRgon

답변

4

이 확인 :

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(); 
} 
관련 문제