나는 약 ngrams를 컴파일하고자하는 약 500 문장이 있습니다. 정지 단어를 제거하는 데 문제가 있습니다. lucene StandardFilter와 StopFilter를 추가하려고 시도했지만 여전히 같은 문제가 있습니다.Java Lucene Stop Words 필터
for(String curS: Sentences)
{
reader = new StringReader(curS);
tokenizer = new StandardTokenizer(Version.LUCENE_36, reader);
tokenizer = new StandardFilter(Version.LUCENE_36, tokenizer);
tokenizer = new StopFilter(Version.LUCENE_36, tokenizer, stopWords);
tokenizer = new ShingleFilter(tokenizer, 2, 3);
charTermAttribute = tokenizer.addAttribute(CharTermAttribute.class);
while(tokenizer.incrementToken())
{
curNGram = charTermAttribute.toString().toString();
nGrams.add(curNGram); //store each token into an ArrayList
}
}
예를 들어, 내가 테스트하고 첫 구절은 다음과 같습니다 : "에 수신 모든 사람은"여기 내 코드입니다. 이 예에서 curNGram은 "For"로 설정되어 있는데, 이는 내 목록 stopWords에서 정지 단어입니다. 또한이 예제에서 "every"는 중지 단어이므로 "person"이 첫 번째 ngram이어야합니다.
- StopFiler를 사용할 때 왜 내 단어가 내 목록에 추가됩니까?
모든 도움을 주실 수 있습니다!
stopWords 생성 방법은 무엇입니까? [StopFilter.makeStopSet] (http://lucene.apache.org/core/3_6_0/api/all/org/apache/lucene/analysis/StopFilter.html#makeStopSet (org.apache.lucene.util))을 사용하여 생성합니까? .Version, % 20java.util.List, % 20boolean))? – femtoRgon
정적 함수를 사용하여 줄 단위로 txt 파일을 읽었습니다. – CodeKingPlusPlus