我正在使用Apache Lucene开发一个文本分析项目。我需要对一些文本进行词形归并(将单词转换为它们的标准形式)。我已经编写了代码进行词干提取(stemming)。使用它,我可以将以下句子转换为:
"stem part word never chang even when morpholog inflect lemma base form word exampl from produc lemma produc stem produc becaus word product"
但是,我需要获取单词的基本形式:例如,需要获取"example"而不是"exampl","produce"而不是"produc"等。
我使用Lucene是因为它有许多语言的分析器(我至少需要英语和俄语)。我知道有Stanford NLP库,但它没有俄语支持。
那么有没有办法像我用Lucene做词干提取一样对多种语言进行词形还原(Lemmatization)呢?
以下是我的词干提取代码的简化版本:
"stem part word never chang even when morpholog inflect lemma base form word exampl from produc lemma produc stem produc becaus word product"
但是,我需要获取单词的基本形式:例如,需要获取"example"而不是"exampl","produce"而不是"produc"等。
我使用Lucene是因为它有许多语言的分析器(我至少需要英语和俄语)。我知道有Stanford NLP库,但它没有俄语支持。
那么有没有办法像我用Lucene做词干提取一样对多种语言进行词形还原(Lemmatization)呢?
以下是我的词干提取代码的简化版本:
//Using apache tika to identify the language
LanguageIdentifier identifier = new LanguageIdentifier(text);
//getting analyzer according to the language (eg, EnglishAnalyzer for 'en')
Analyzer analyzer = getAnalyzer(identifier.getLanguage());
TokenStream stream = analyzer.tokenStream("field", text);
stream.reset();
while (stream.incrementToken()) {
String stem = stream.getAttribute(CharTermAttribute.class).toString();
// doing something with the stem
System.out.print(stem+ " ");
}
stream.end();
stream.close();
更新:我找到了library,它几乎可以满足我的需求(对于英语和俄语),并使用Apache Lucene(虽然是以自己的方式),值得探索。