0

所以我们都看过钢铁侠,对吧?作为一个个人项目,我正在尝试创建一个类似 jarvis 的 AI。我无论如何都不需要像 jarvis 那样复杂的东西;这只是我能想到的最好的描述。

我首先研究了对话式人工智能——聊天机器人——但这不是我需要的。我觉得该方法以与我正在寻找的方式截然不同且更复杂的方式处理用户输入。我需要的只是给ai一个命令,让ai匹配该命令并运行适当的代码。

所以后来我偶然发现了libdiff。但这并不能充分满足我的目的。libdiff,据我所知,不会匹配措辞乱序的字符串。据我所知,至少,两个字符串中的措辞顺序必须相同,libdiff 才能进行匹配。

例如:
用户输入:“现在几点?”
不会匹配它应该匹配的命令:“现在几点?”

我不是要勺子代码,但有人能指出我正确的方向吗?

4

2 回答 2

2

您正在尝试构建专家系统

看看这本书Prolog Programming for Artificial Intelligence - Ivan Bratko。在第 14 章中,他谈到了专家系统。

于 2013-03-20T23:37:58.217 回答
2

很酷的项目,这是我的第一个想法。我想首先你需要语音到文本,这样你就可以有效地处理命令。然后,您可以在此之上应用更复杂的方法。有https://code.google.com/p/dragonfly/,但我发现它对于破解一个快速项目来说有点太多了,我认为主要支持 Windows。但是,也许有人为这类事情提供免费休息服务,谷歌在这里做得很好http://updates.html5rocks.com/2013/01/Voice-Driven-Web-Apps-Introduction-to- the-Web-Speech-API,但我认为没有 python 绑定。

然后,下一个任务将是尝试在文本中找到意义。因此,您需要一个解析器(http://nltk.org/index.html)来查看诸如“what”和主题“time”之类的问题词,或某种类型的词性标记。当然,在一般设置中正确执行此操作(任意输入要困难得多)。拥有一些内置命令然后在以后工作到更高的通用性可能要容易得多。

如果您想实时执行此操作,则更具挑战性,因为您需要对实时音频流进行分段以确定一个句子何时结束以及另一个句子何时开始。

假设,你想先解决一个更简单的问题。假设只需通过麦克风识别单个命令,例如“打开”一词,然后执行一个动作。如果你愿意训练你的声音,你可以很容易地做到这一点。受此http://xa.yimg.com/kq/groups/24321415/1523383180/name/Speech_Recognition_seminar.pdf的启发。您需要 pyaudio、numpy、scipy,如果您想查看在 python 中实现此功能的代码,请参阅https://gist.github.com/a-wild-tigger/5209781

于 2013-03-21T00:24:20.627 回答