텍스트에서 일부 키워드를 추출하려고합니다. 그것은 아주 잘 작동하지만 복수형을 제거해야합니다.Lucene.NET에서 복수형을 제거하는 방법은 무엇입니까?
이미 Lucene을 검색 목적으로 사용하고 있으므로 색인화 된 용어로 키워드를 추출하는 데 사용하려고합니다. 나는 "대통령"과 같은 용어를 가질 수있는 용어 목록에서
var list = new List<KeyValuePair<int, string>>();
using (var reader = IndexReader.Open(directory, true))
{
var tv = reader.GetTermFreqVector(0, "text");
if (tv != null)
{
string[] terms = tv.GetTerms();
int[] freq = tv.GetTermFrequencies();
for (int i = 0; i < terms.Length; i++)
list.Add(new KeyValuePair<int, string>(freq[i], terms[i]));
}
}
:
첫째, 내가 지수에게 RAMDirectory 지수에서 문서, 그리고
RAMDirectory idx = new RAMDirectory();
using (IndexWriter writer =
new IndexWriter(
idx,
new CustomStandardAnalyzer(StopWords.Get(this.Language),
Lucene.Net.Util.Version.LUCENE_30, this.Language),
IndexWriter.MaxFieldLength.LIMITED))
{
writer.AddDocument(createDocument(this._text));
writer.Optimize();
}
, 나는 키워드를 추출 "회장"
어떻게 제거 할 수 있습니까?
내 CustomStandardAnalyzer이를 사용
public override TokenStream TokenStream(string fieldName, System.IO.TextReader reader)
{
//create the tokenizer
TokenStream result = new StandardTokenizer(this.version, reader);
//add in filters
result = new Lucene.Net.Analysis.Snowball.SnowballFilter(result, this.getStemmer());
result = new LowerCaseFilter(result);
result = new ASCIIFoldingFilter(result);
result = new StopFilter(true, result, this.stopWords ?? StopWords.English);
return result;
}
그래서 내가 이미 (올바른 언어 별 형태소 분석기 사용) SnowballFilter를 사용합니다. 복수형은 어떻게 제거 할 수 있습니까?
는
그것은 당신이 표시되지 않는 코드의 부분에서 뭔가해야 당신이 당신이 포터 형태소 분석기 사용하는 경우 우리가 작업을해야 보여 . 나는 기본적으로 당신의 코드를 몇개의 하드 코드 된 (스템 머) 재료와 함께 넣을 것이다. –