如何给定一个词形和一个标记,反转词形还原过程?

8
通常,在自然语言处理中,我们希望获得一个标记的词元。例如,我们可以使用Wordnet词形还原将“eaten”映射到“eat”。
在Python中是否有任何工具可以将词元反转为特定形式?
例如,我们将“go”映射到目标形式“eaten”的“gone”。
PS:有人提到我们必须存储这些映射。请参见:如何在Python中取消词干?

1
POS信息也可以用于获取某种形式的词元。 - Shifeng.Liu
1
如果你将“go”映射到“gone”、“goes”或“went”等,你怎么知道呢?词形归并允许更好的性能,但这是一种权衡,你会失去一些信息。如果需要,你需要保留一个带有可能变化列表的词元(如果你想从这些“增强的词元”重新创建文本,则可能需要它们的位置)。 - Adonis
1
@Adonis 我会将附加变量作为限制或目标添加进去。例如, def inverse_lemma(**args). 'gone' = inverse_lemma(lemma='go', target_form='eaten', target_pos='VBN'). 就像这样。 - Shifeng.Liu
1个回答

6

将像词元这样的基本形式转化为适合情境的形式被称为“实现”(或“表面实现”)。维基百科上的例子:

NPPhraseSpec subject = nlgFactory.createNounPhrase("the", "woman");
subject.setPlural(true);
SPhraseSpec sentence = nlgFactory.createClause(subject, "smoke");
sentence.setFeature(Feature.NEGATED, true);
System.out.println(realiser.realiseSentence(sentence));
// output: "The women do not smoke."

这方面的库不如词形还原器常用,这通常意味着您的选择较少,很难找到一个良好开发的库。维基百科的例子使用Java,因为支持此功能的最流行的库是SimpleNLG。
快速搜索发现pynlg,但它似乎没有得到积极的维护。或者,您可以通过Python库nlgserv提供的HTTP JSON接口来使用SimpleNLG。

1
谢谢@polm23!我会尝试的。 - Shifeng.Liu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接