CTs*_*rth 8 java similarity stemming porter-stemmer
我使用lucene雪球分析仪进行干预.结果不是有意义的话.我提到了这个问题.
其中一个解决方案是使用一个数据库,该数据库包含单词的词干版本与单词的一个稳定版本之间的映射.(无论社区的基础是什么(社区/或其他一些词),从社区到社区的例子)
我想知道是否有一个执行这样功能的数据库.
从一个词干中恢复一个特定的词在理论上是不可能的,因为一个词干可以为许多词所共有。根据您的应用程序,一种可能性是建立一个词干数据库,每个词干都映射到一个由几个单词组成的数组。但是,您需要预测这些词中的哪一个是合适的,因为要重新转换词干。
作为这个问题的一个非常简单的解决方案,如果你知道单词标签,你可以尝试在数据库中存储带有标签的单词:
run:
NN: runner
VBG: running
VBZ: runs
Run Code Online (Sandbox Code Playgroud)
然后,给定词干“run”和标签“NN”,您可以确定“runner”是该上下文中最可能的词。当然,该解决方案远非完美。值得注意的是,您需要处理这样一个事实,即相同的词形式在不同的上下文中可能会被标记为不同的标签。但请记住,任何解决此问题的尝试充其量只是一个近似值。
编辑:从下面的评论看来,您可能想要使用词形还原而不是词干。以下是使用斯坦福核心 NLP 工具获取词的引理的方法:
import java.util.*;
import edu.stanford.nlp.pipeline.*;
import edu.stanford.nlp.ling.*;
import edu.stanford.nlp.ling.CoreAnnotations.*;
Properties props = new Properties();
props.put("annotators", "tokenize, ssplit, pos, lemma");
pipeline = new StanfordCoreNLP(props, false);
String text = "Hello, world!";
Annotation document = pipeline.process(text);
for(CoreMap sentence: document.get(SentencesAnnotation.class)) {
for(CoreLabel token: sentence.get(TokensAnnotation.class)) {
String word = token.get(TextAnnotation.class);
String lemma = token.get(LemmaAnnotation.class);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4377 次 |
| 最近记录: |