智能家居的自然语言处理

时间:2013-09-09 21:35:01

标签: algorithm nlp

我正在为我的学士学位编写一个智能家居软件,它只会模拟实际的房子,但我被困在项目的NLP部分。我们的想法是让客户端听取语音输入(已经完成),将其转换为文本(完成)并将其发送到服务器,从而完成所有繁重的工作。

所以我所有的输入都会很短(比如“请打开门廊灯”)。基于此,我想决定采取行动的对象以及如何采取行动。所以我想出了一些事情要做,以便写出一些有效的东西。

  1. 摆脱不必要的词语(在前面的例子中“请”和“the”是不会改变需要做的事情的意思;但如果我说“关闭我的灯“,”我的“确实有一个相当重要的含义。)
  2. 处理同义词(“打开灯”应该与“启用灯”相同 - 我知道这是一个愚蠢的例子)。我猜测唯一的选择是拥有某种字典(XML可能),并且只有一个可能的单词列表,用于房子中的一个特定对象。
  3. 检测动词和主语。 “开启”是动词,“灯”是主题。我需要一种很好的方法来检测它。
  4. 一般实施。这些东西通常是如何根据算法开发的?我只是设法在智能家居中找到一篇关于NLP的文章,这篇文章很模糊(并且英文不好)。欢迎任何链接。
  5. 我希望这个问题足够独特(我在SO上看过NLP问题,没有人真的有帮助),它不会被关闭。

3 个答案:

答案 0 :(得分:6)

如果您没有足够的时间来处理NLP问题,可以使用将自然语言句子映射到JSON的Wit API(http://wit.ai):

enter image description here

它基于机器学习,因此您需要提供句子+ JSON输出的示例以根据您的需要进行配置。它应该比基于语法的方法更强大,特别是因为语音转语音引擎可能会出错会破坏你的语法(但机器学习模块仍然可以得到句子的含义)。

答案 1 :(得分:3)

我不是NLP的先驱(虽然我喜欢它),但让我尝试一下这个。对于您的项目,我建议您浏览Stanford Parser

  1. 从你的问题定义中我猜你除了动词和名词之外别无其他。 SP生成POS(词性标签)您可以用它来修剪您不需要的单词。

  2. 为此,我想不出更好的选择,那么你现在想到的是什么。

  3. 为此,您可以使用SP的语法依赖结构,我非常确定它足以解决这个问题。

  4. 这是您的研究部分所在。我想你可以使用GD和POS标签找到足够的模式来为你的问题提出算法。我几乎不怀疑任何算法都能够有效地处理每一组输入句子(结构化+非结构化),但85%以上的准确性对你来说应该足够好。

答案 2 :(得分:3)

首先,我会构建一个所有可能命令的列表(不是每种可能的方式来说出一个命令,只是实际的功能本身:“厨房灯亮”和“打开厨房里的灯”是相同的命令)基于智能住宅可用的实际功能。我假设这些离散数量不超过数百个。分配每种标识符代码。

然后,您的工作就是映射输入:

  • 英文文本
  • 发言人的位置
  • 时间,星期几
  • 任何其他输入数据

为每个命令输出置信度(0.0到1.0)。

如果置信度超过某个可调阈值(例如超过0.70),系统将执行最佳匹配命令。

从这里开始它成为机器学习应用程序。有许多不同的方法(此外,通过让它们根据输入的特征进行竞争,可以将方法组合在一起)。

首先,我将完成NLP book from Jurafsky/Manning from Stanford。这是对当前NLP算法的一个很好的调查。

从那里,您将获得有关如何通过机器学习映射的一些想法。更重要的是,如何将自然语言分解为机器学习的数学结构。

一旦文本被语义分析,首先尝试的最简单的ML算法将是受监督的ML算法。要生成具有正常GUI的训练数据,请说出您的命令,然后手动按相应的命令。这形成了一个单独的监督培训案例。制作一些这些。设置一些进行测试。这也是不熟练的工作,所以其他人可以提供帮助。然后,您可以将它们用作ML算法的训练集。