“意图识别器”如何工作?


11

亚马逊的Alexa,Nuance的Mix和Facebook的Wit.ai都使用类似的系统来指定如何将文本命令转换为意图,即计算机可以理解的东西。我不确定这的“正式”名称是什么,但我称其为“意图识别”。基本上是从“请将灯光设置为50%亮度”到的一种方法lights.setBrightness(0.50)

指定方法的方式是,让开发人员提供与意图相关的“样本话语”列表,并可选地标记“实体”(基本参数)的位置。这是Wit.ai的示例:

wit.ai示例

我的问题是:这些系统如何工作?由于它们都非常相似,因此我认为它们都有一些开创性的成果。有谁知道它是什么?

有趣的是,Houndify使用了一个更类似于正则表达式的系统["please"] . ("activate" | "enable" | "switch on" | "turn on") . [("the" | "my")] . ("lights" | "lighting") . ["please"]。我认为这已集成到他们语音识别系统的波束搜索中,而Alexa,Wit.ai和Mix似乎具有单独的“语音”->“文本”和“文本-> Intent”系统。

编辑:我找到了一个起点- 一种通过非正式语音命令进行人机交互的机制。它使用一种称为“潜在语义分析”的方法来比较话语。我将继续阅读。至少它为我提供了引文网络的起点。

编辑2: LSA本质上是比较文本每一段中使用的单词(单词袋)。我看不到它在这种情况下如何很好地工作,因为它完全失去了单词顺序。尽管对于这些类型的命令来说,单词顺序并不重要。

编辑3: 隐藏主题马尔可夫模型看起来可能很有趣。


这篇文章详细解释了意图分类:mrbot.ai/blog/natural-language-processing/…–
znat

这似乎使用了我在问题中提到的“语言袋”方法。基本上只是将句子中的单词向量加起来。但这不是它的工作方式。Wit和Nuance的界面表明,他们可以识别哪些单词袋很难做到的实体。同样,一堆单词失去了所有的顺序,因此“设置5点10分的闹钟”与“设置10点5分的闹钟”将是无法区分的。肯定还有更多的事情要做。
Timmmm

实体提取是顺序重要的另一个问题。如果您有大量数据,则Rnn将在较小的数据集中(在聊天
机器人

好的,所以...我正在寻找比“ RNN可以工作”更详细的答案。大多数现代序列学习系统都使用RNN,所以这似乎是给定的。
Timmmm

目的是关于句子的一般意义(向量的平均值),而实体是关于学习句子出现的上下文(周围的单词)的。Rnn或CRF只是可以使用的算法,因为它们从序列中学习。如果您想详细了解,请查看Rasa源代码
znat

Answers:


4

尽管未直接回答您的问题,但您可能对自动问题解答领域感兴趣。要回答自然语言文字问题,必须首先理解它们,这与您的问题重叠。

Jurafsky和Manning课程是很好的资源。特别是关于语义和问题解答的部分可能会帮助您寻找所需的内容。YouTube上有可用伴音的演讲视频在这里


我发现您答案的第一部分非常有趣,但内容丰富。
迭戈

也许这可以作为注释更好,因为您承认,它不能回答问题。
kbrose

2

这篇文章有一个方法。基本上,他们使用成袋的单词-将单词转换为稀疏向量,然后将它们加起来。

它看起来似乎工作得很好,但是一个主要缺陷是答案与词序无关,因此,除非您对它们进行特殊处理,否则您将无法进行“一磅多少公斤”之类的查询。

但是我用Alexa编写了文本,并且它对单词顺序的变化不敏感,因此也许他们确实使用了类似的东西。


很好奇-稀疏向量与朴素贝叶斯向量相比有什么优势?对我来说,这两个问题都可以通过天真的词袋假设解决线性可分的问题
Angad
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.