【问题标题】:How to inverse lemmatization process given a lemma and a token?如何在给定引理和令牌的情况下逆向词形化过程?
【发布时间】:2018-01-17 07:40:26
【问题描述】:

一般来说,在自然语言处理中,我们希望得到一个记号的引理。

例如,我们可以使用 wordnet 词形还原将 'eaten' 映射到 'eat'。

python中是否有任何工具可以将引理反转为某种形式?

例如,我们将 'go' 映射到 'gone' 给定目标形式 'eaten'。

PS:有人提到我们必须存储这样的映射。 How to un-stem a word in Python?

【问题讨论】:

  • POS 信息也可以用来获得某种形式的引理。
  • 你怎么知道你是否将“go”映射到“gone”或“goes”或“went”......等等。 .如果需要,您需要保存一个带有可能变化列表的引理(如果您想从这些“增强的引理”重新创建文本,可能还有它们的位置)
  • @Adonis 我会添加其他变量作为约束或目标。例如,def inverse_lemma(**args)。 'gone' = inverse_lemma(lemma='go', target_form='eaten', target_pos='VBN')。像这样。

标签: python nlp nltk lemmatization


【解决方案1】:

将诸如引理之类的基本形式转换为适合情况的形式称为realization(或“表面实现”)。来自维基百科的示例:

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."

用于此的库不像词形还原器那样频繁使用,这通常意味着您的选择更少,并且不太可能找到开发良好的库。 Wikipedia 示例是用 Java 编写的,因为支持它的最流行的库是 SimpleNLG

快速搜索发现pynlg,尽管它似乎没有得到积极维护。或者,您可以通过 Python 库 nlgserv 提供的 HTTP JSON 接口使用 SimpleNLG。

【讨论】:

  • 谢谢@polm23!我试试看。
猜你喜欢
  • 2013-08-27
  • 1970-01-01
  • 2013-03-07
  • 2018-10-04
  • 2014-06-01
  • 1970-01-01
  • 2018-07-03
  • 2010-12-06
  • 1970-01-01
相关资源
最近更新 更多