gpt4 book ai didi

java - 词干的逆过程

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:45:38 25 4
gpt4 key购买 nike

我使用 lucene 雪球分析器来执行词干提取。结果是没有意义的话。我提到了这个question .

其中一个解决方案是使用一个数据库,该数据库包含一个词干版本与一个稳定版本之间的映射。 (从社区到社区的示例,无论社区的基础是什么(社区/或其他词))

我想知道是否有一个数据库可以执行这样的功能。

最佳答案

理论上不可能从一个词干中恢复出一个特定的词,因为一个词干可能是许多词所共有的。根据您的应用程序,一种可能性是构建一个词干数据库,每个词干映射到一个包含多个单词的数组。但是您随后需要根据要重新转换的词干来预测这些词中的哪一个是合适的。

作为这个问题的一个非常天真的解决方案,如果你知道单词标签,你可以尝试将带有标签的单词存储在你的数据库中:

run:
NN:  runner
VBG: running
VBZ: runs

然后,给定词干“run”和标签“NN”,您可以确定“runner”是该上下文中最有可能的词。当然,这个解决方案远非完美。值得注意的是,您需要处理相同的单词形式在不同的上下文中可能被标记为不同的事实。但请记住,解决此问题的任何尝试充其量只是一个近似值。

编辑:从下面的评论来看,您可能想要使用词形还原而不是词干提取。以下是如何使用 Stanford Core NLP tools 获取单词的词元:

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);
}
}

关于java - 词干的逆过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9481081/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com