Nlp 口语对话系统的自然语言理解

Nlp 口语对话系统的自然语言理解,nlp,speech,Nlp,Speech,我希望实现一个基于任务的口语对话系统作为我的项目的一部分。我发现很难为系统构建自然语言理解(NLU)单元。它是系统“理解”用户的单词(话语)以将语音映射到特定动作的部分。这是一个复杂的过程,但如果任何人在建立口语对话系统方面有任何实际经验,任何关于如何开始这方面的想法都将不胜感激。 谢谢 这是一个相当广泛的话题,但由于我对这一领域的研究还很新鲜,让我分享一下我学到的东西 通常,第一步是分析句子的语法结构(尤其是单词之间的依赖关系)。这将为您提供如下输出: 我使用这个python包装器与Stan

我希望实现一个基于任务的口语对话系统作为我的项目的一部分。我发现很难为系统构建自然语言理解(NLU)单元。它是系统“理解”用户的单词(话语)以将语音映射到特定动作的部分。这是一个复杂的过程,但如果任何人在建立口语对话系统方面有任何实际经验,任何关于如何开始这方面的想法都将不胜感激。
谢谢

这是一个相当广泛的话题,但由于我对这一领域的研究还很新鲜,让我分享一下我学到的东西

通常,第一步是分析句子的语法结构(尤其是单词之间的依赖关系)。这将为您提供如下输出:

我使用这个python包装器与Stanford解析器进行接口:

第二步,通常是将每个单词映射到一个“意义”,进行所谓的词义消歧(WSD)

一旦你知道了每个单词的意思和它们之间的关系,你就应该能够理解这个句子,并触发想要的动作

没有一个开放和自由的系统能够对泛型句子做到所有这些。这对于口语来说尤其困难

例如,斯坦福语法分析器(Stanford Parser)通常提供针对报纸文章文本类型的语言模型,这与口语有很大的不同。很可能您希望培训一个新的语言模型,在培训“树库”中添加您希望在系统中接收的句子类型。(斯坦福解析器提供了这样的模型训练器应用程序)

不幸的是,没有好的通用软件库来进行词义消歧(WSD)。主要原因是“感官”这个词还没有一个实用的参考。在这个领域,事实上的标准仍然是WordNet,但显然,即使是人类也常常不同意单词和“语法集”之间的映射。换句话说,WordNet的含义粒度太细,无法提供可靠的映射

通常,您需要建立自己的意义数据库(通常以树的形式构造),为应用程序创建尽可能多的粗粒度数据库。 有许多方法可以将单词映射到这种粗粒度的含义,其中一种最简单但仍然非常有效的方法是好的旧朴素贝叶斯分类器。 另一种我自己还没有尝试过的方法是使用关于“单词框架”的信息(即某个单词的某个意思与它周围的单词有一定的关系)


无论如何,现实是,这是一个尚未解决的问题。最初,您应该专注于解决特定子域的问题。

您确定您的应用程序有效地需要NLU而不仅仅是语音识别吗?是的。我已经完成了自动语音识别(ASR)。@这对于一个问题来说是一个太大的话题。你查过关于这个主题的文献了吗?@Themah出于好奇,你在ASR中使用了什么?谷歌的Android内置语音识别器。