2

我一直在试验斯坦福 NLP 工具包及其词形还原功能。我很惊讶它是如何将某些单词词形还原的。例如:

depressing -> depressing
depressed -> depressed
depresses -> depress

它不能转换成同一个引理depressingdepressedconfusingconfused发生hopelessly类似情况hopeless。我感觉它唯一能做的就是删除s如果单词是这种形式(例如feels -> feel)。这种行为对于英语中的 Lematizatiors 来说是否正常?我希望他们能够将常见单词的这种变体转换为相同的引理。

如果这是正常的,我应该使用词干分析器吗?而且,有没有办法在 StanfordNLP 中使用像 Porter(Snowball 等)这样的词干分析器?他们的文档中没有提到词干分析器;但是,API 中有一些CoreAnnotations.StemAnnotation。如果无法使用 StanfordNLP,您推荐在 Java 中使用哪些词干分析器?

4

2 回答 2

3

词形还原关键取决于令牌的词性。只有具有相同词性的标记才会映射到相同的引理。

在句子“这很混乱”中,confusing被分析为形容词,因此它被词形化为confusing。相比之下,在句子“我把你和别人混淆了”中,confusing被分析为动词,并被词形化为confuse.

如果您希望将具有不同词性的标记映射到相同的引理,您可以使用诸如Porter Stemming之类的词干算法,您可以简单地调用每个标记。

于 2015-05-13T09:42:26.467 回答
0

对 yvespeirsman 的回答进行补充:

我看到,在应用词形还原时,我们应该确保文本保持其标点符号,即标点符号必须在词形还原之前进行,因为词形还原器在执行其任务时会考虑单词的类型(词性)。

请注意以下示例中的混淆混淆词。

带标点:

for token in nlp("This is confusing. You are confusing me."):
   print(token.lemma_)

输出:

this
be
confusing
.
-PRON-
be
confuse
-PRON-
.

无标点:

for token in nlp("This is confusing You are confusing me"):
   print(token.lemma_)

输出:

this
be
confuse
-PRON-
be
confuse
-PRON-
于 2020-08-30T06:53:19.687 回答