如何使用小写字母限制来构建短句?

时间:2014-01-02 21:50:54

标签: api nlp linguistics

我正在寻找一种方法来编写一个用限制字母集创建短德语句子的程序。句子可以是无稽之谈,但在语法上应该是正确的。以下示例仅包含字母“aeilmnost”:

  • “Antonia ist mit Tina im Tal。”
  • “Tamina malt mit lila Tinte Enten。”
  • “Tina nimmt alle Tomaten mit。”

对于这项任务,我需要一个像this one这样的字典(在"Where can I find a parsable list of German words?"的答案中找到)。以编程方式创建文本的研究区域为NLG - Natural Language Generation。在NLG-Wiki上,我发现了一个很大的table of NLG systems。我从列表中选了两个,这可能是合适的:

您是否使用过NLG图书馆并提供一些建议,哪些用于构建带有字母设置限制的短句? 你能推荐一篇关于这个主题的论文吗?

2 个答案:

答案 0 :(得分:1)

语法正确是一个非常模糊的区域,因为语法不是像人们想象的那样严格定义。你真正想要的是part-of-speech tagger和马尔可夫链。

特别是马尔可夫链表示,给定某种状态(例如第一个单词),只有一定的机会进入另一个状态(下一个单词)。从scracth编写它们相对容易,但我在python中有一个gist here,如果你想要一个例子,它会显示它们是如何工作的。

一旦你有了这个,我会建议一个基于词性的马尔可夫链,结合只是检查一下是否用你想要的字符集构造单词。一般来说算法会是这样的:

  1. 随机选择第一个单词,检查它是否仅由您想要的字符集构成
  2. 使用马尔可夫链预测下一个单词
  3. 检查该单词是否是适当的词性,并且它是否符合所需的字符集。
  4. 如果没有,请预测另一个词,直到情况发生。
  5. 如果是,则从2开始重复完成。
  6. 希望这就是你要找的东西。如果您还有其他问题,请与我们联系。

答案 1 :(得分:1)

正如Slater Tyranus已经说过的那样,Markov连锁店肯定是这项任务的基础。我将建议更多重型方法。这是相当多的工作,但在语法正确性方面可能会给出更好的结果。

基于PCFG解析树的语言模型:语言模型通过为一系列单词分配概率来工作。但是,它需要训练数据才能首先构建。在您的情况下,培训过程应忽略包含有限集之外的字母的单词。

虽然理论上基于解析树的语言模型更有可能达到你的目的,但有一点需要注意:由于你所拥有的基于字母的限制,数据稀疏性肯定会提升其丑陋的头脑。退避技术(例如Katz's backoff model)可以帮助一点,但它主要取决于你是否可以训练足够的数据。

就现成的解析器而言,Stanford NLP小组提供了一个基于Negra语料库的德语解析器,如上所述in their home page