5

(Apologies for the title. Stack overflow doesn't allow the word "Question" in titles.)

How would one go about writing an algorithm to convert an english statement into a question? Where would one even begin? For example:

"The ingredients for an omelette are eggs, bacon, cheese, and onions" would become "What are the ingredients for an omelette?" or "The ingredients for an omelette are what?"

I can imagine parsing a sentence into it's components, and then re-arranging these while adding and removing words to form a grammatically correct sentence, but I'd have no idea where to start. I know this is by no means a trivial task, and I think the most helpful thing right now would be pointers to literature or similar problems.

4

3 回答 3

8

查看ACL 文集,了解使用基于模板的方法在问题生成上发表的论文。

以下是一些开始:

波波维奇、大卫·林德伯格·弗雷德和约翰·内斯比特·菲尔·温恩。“生成自然语言问题以支持在线学习。” https://aclweb.org/anthology/W/W13/W13-2114.pdf

Rokhlenko、Oleg 和 Idan Szpektor。“为新闻文章生成综合可比问题。” http://aclweb.org/anthology/P/P13/P13-1073.pdf

赵世奇,等。“从查询中自动生成问题以进行基于社区的问答。” IJCNLP。2011. https://aclweb.org/anthology/I/I11/I11-1104.pdf

于 2013-10-02T20:29:35.370 回答
3

好吧,如果您不想从头开始,请查看斯坦福的 lex 解析器。 http://nlp.stanford.edu/software/lex-parser.shtml 这是一个非常棒的工具。

我会解析文本并找出句子的语法结构。完成后,您只需为特定的词性找到一个问题。

您还可以在http://nlp.stanford.edu/publications.shtml阅读大量出版物。 祝您搜索顺利。

于 2013-10-02T20:45:16.007 回答
-3

这是一个有趣的问题。就在我的脑海中:您将需要构建一个数据库来保存按它们是什么分类的词,例如介词、“链接词”(或它们被称为的任何词,以及其他......

将句子的单词排列在一个数组(列表)中并循环遍历每个单词。当某个单词出现在某个类别中时,请执行某些操作。

例如:“The”可能会告诉您下一个单词是主语。

“成分”是主语,但有一个“s”所以期待多个东西,寻找下一个象征(链接)的词,如“是”

“of”告诉你下一个词是上面链接的主题,

“是”告诉您接下来是一个列表,将它们存储在一个单独的表中,但将它们链接到主题。

介词词和陈述=把它们拿出来,因为它们不需要。

将所有内容分成不同的列表后,只需构建您的简单问题即可。如果您知道答案有多个以“什么是”开头的答案,则添加元素的主题。

像这样基本的东西。但我非常确定,您将不得不弄清楚句子中每个单词的含义,以便您可以找到如何对它们进行分类并存储它们一些如何然后提出问题的方法。

希望能指出你(一个)方向。

于 2013-10-02T20:28:13.563 回答