2017-07-28 90 views
-1

我想要构建一个与用户交谈并从用户处获得一些输入的ml程序。 ml程序分析输入数据(关键字),然后预测最佳解决方案。机器学习:哪种算法适合回答问题

+0

这是什么问题? –

+0

我无法预测完成此任务的最佳方法(算法)。 –

回答

-1

因此,您正在寻找一种AI应用程序,它需要某种机器智能来处理自然语言。 让我们说这里的选择语言是英语。在构建这样一个系统之前有很多事情需要考虑。

  1. 依存分析
  2. 词义消
  3. 动词多义
  4. 指代消解
  5. 语义角色标注
  6. 知识的宇宙。

简而言之,您需要构建所有上述基本模块,然后才能生成响应。 你需要决定你正在处理的是什么类型的问题?它是一个开放域名或封闭域名问题,这意味着这个应用程序的知识范围是什么。例如:Google现在是一个开放的域问题,它实际上可以采取任何可能的输入。 但是一些应用程序涉及一个特定的任务,如自动化应用程序中的食物订单等,其中可以问的范围是有限的。

一旦确定了,就需要解析输入句子,并依赖解析是要走的路。您可以使用Stanford核心NLP套件来实现上面提到的大部分NLP任务。

一旦输入句子被解析并且你有了主语,宾语等,现在是消除句子中单词歧义的时候了,因为特定的单词可以有不同的含义。

然后歧义的动词,意思是识别动词的类型(如回归可能意味着回到一个地方或回馈东西)

然后,你需要解决指代消解意义映射的名词和代词和其他实体给定的上下文。例如: 我叫约翰。我在ABC公司工作。

这里我在第二句话中提到约翰。 这有助于我们回答John的工作方式。由于约翰只用在第一句话中,而他的工作在第二句话中被提及,所以合作解决方案可以帮助我们将它们映射在一起。

手头的下一个任务是语义角色标注,它基本上意味着为每个动词标注句子中的所有参数。例如:约翰遇害玛丽。 这里的动词是杀人,约翰和玛丽是动词杀人的论点。约翰担任角色A0,玛丽担任角色A1。在NLP社区创建的巨大框架和参数注释框架中提到了每个动词的这些角色的定义。这里A0表示遇害者,A1表示遇难者。 现在,一旦您确定了A0和A1,只需查看杀戮框架的定义,然后返回A0作为杀手,A1返回给受害者。

手头的另一项重要任务是确定您的系统何时必须回答一个答案。你需要知道给定的句子是否是陈述句或断言句或疑问句。您可以通过查看输入句子是否以问号结束来检查。

现在回答你的问题: 让我们说你输入的应用程序是: 输入1:约翰遇害玛丽。 很明显,这是一个自信的句子,所以就像上面提到的那样存储并处理它。 现在的下一个输入是:

输入2:谁杀了玛丽?

这是一个疑问句,所以你需要拿出一个答复或答复。

现在找到输入1和输入2的语义角色标签,并返回与第2句中Who的参数匹配的输入1的词。 在这种情况下,谁将被标记为A0,John将被标记为A0,简单地返回约翰。

大部分提到的NLP模块都可以直接使用斯坦福核心NLP实现,但是如果您想自己实现一些算法,您可以通过EMNLP,NIPS,ICML,CONLL等最近的出版物来更好地理解它们,实施最适合你的那个。

祝你好运!