从给定的单词中组成一个有意义的句子

10

我正在开发一个程序,需要从给定的一组单词中创建一个语法正确的句子。我会向该程序传递一个字符串列表作为输入,输出应该是由这些单词和其他必要的单词构成的有意义的句子。例如:

Input: {'You' , 'House' , 'Beautiful'}
Output: 'Your house is beautiful' (or) 'you house is beautiful' 
Input: {'Father' , 'Love' , 'Child'}
Output: 'The father loves the child'

我该如何使用NLTK和机器学习来实现这个?

你有任何建议吗?我准备尝试最疯狂的想法。谢谢! :)


1
你正在做的事情,是开发人工智能的圣杯 :) 我也尝试过这个,我所能想到的就是将列表中的每个单词与其他单词链接起来。这种链接就像大脑中的突触一样工作。当应用程序看到两个甚至一个单词时,它会检查所有与其他单词的链接。链接具有数字含义,表示链接的强度。好吧,链接的问题在于你需要创建这些链接。为了做到这一点,你可以将应用程序连接到维基百科并分析所有文章,从而创建链接。 - Jerry Switalski
https://github.com/karpathy/char-rnn - alvas
1
MontyNLGenerator对于基本句子非常有趣,如果你小心地用勺子喂它的话。http://alumni.media.mit.edu/~hugo/montylingua/doc/MontyLingua.html - Eugene
1个回答

8
在这种情况下,您可以应用n-gram模型。其思想是一个句子

我非常喜欢自然语言处理。

得到以下3元组:
  1. <s> 我非常喜欢
  2. 我非常喜欢 自然语言处理
  3. 非常喜欢 自然语言处理 很多
  4. 自然语言处理 很多 </s>
然后将其视为概率模型P(word3 | word1 word2)
因此,您需要做的是:
  1. 获取许多单词连续出现的数据(例如,我认为https://books.google.com/ngrams有下载选项)
  2. 对于给定的一组单词,找到仅包含这些单词的所有n元组
  3. 找到最可能的组合。
请注意:
  • n至少应为3。
  • n越大,你就越有可能需要“后退”,因为你没有数据(但n-gram可能存在并且有意义)。
  • 即使n=5已经是非常多的数据了。

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