智能家居的自然语言处理

问题描述 投票:0回答:3

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

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

  1. 去掉不必要的词(在前面的例子中,“please”和“the”是不会改变需要做的事情的意思的词;但是如果我说“关掉my灯”,“my”确实有相当重要的意义)。
  2. 处理同义词(“开灯”应该和“启用灯”一样——我知道这是一个愚蠢的例子)。我猜唯一的选择是拥有某种字典(也许是 XML),并且只列出房子中某个特定对象的可能单词列表。
  3. 检测动词和主语。 “打开”是动词,“灯”是主语。我需要一个很好的方法来检测这个。
  4. 一般实施。这些东西通常在算法方面是如何开发的?我只在 Smart Homes 中找到一篇关于 NLP 的文章,非常模糊(而且英语不好)。欢迎任何链接。
algorithm nlp
3个回答
6
投票

如果你没有太多时间花在 NLP 问题上,你可以使用 Wit API (http://wit.ai) 将自然语言句子映射到 JSON:

enter image description here

它是基于机器学习的,所以你需要提供句子的例子+JSON输出来配置它以满足你的需求。它应该比基于语法的方法更健壮,特别是因为语音转语音引擎可能会犯下会破坏语法的错误(但机器学习模块仍然可以获取句子的含义)。


3
投票

对于您的项目,我建议您通过Stanford Parser

  1. 根据您的问题定义,我猜您不需要动词和名词以外的任何东西。 SP 生成 POS(词性标签),您可以使用它来修剪不需要的词。

  2. 为此,我想不出比您现在想到的更好的选择。

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

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


3
投票

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

然后你的工作变成映射输入:

  • 一段英文文字
  • 演讲者的位置
  • 一天中的时间,星期几
  • 任何其他输入数据

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

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

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

首先,我会阅读斯坦福大学 Jurafsky/Manning 的NLP 书。这是对当前 NLP 算法的一个很好的调查。

从那里你会得到一些关于映射如何被机器学习的想法。更重要的是如何将自然语言分解为机器学习的数学结构。

一旦对文本进行了语义分析,首先要尝试的最简单的 ML 算法就是监督算法。要生成训练数据,请使用普通的 GUI,说出您的命令,然后手动按下相应的命令。这形成了一个单一的监督培训案例。做一些大量的这些。留出一些用于测试。这也是非技术性工作,因此其他人可以提供帮助。然后,您可以将这些用作 ML 算法的训练集。

© www.soinside.com 2019 - 2024. All rights reserved.