首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby/Rails中的人工智能或机器人

Ruby/Rails中的人工智能或机器人
EN

Stack Overflow用户
提问于 2016-03-22 12:38:28
回答 1查看 1.3K关注 0票数 1

这是一个模糊/笼统的问题,因此我要事先道歉。我正在构建一个带有Twilio集成的简单Rails应用程序,它将允许用户发送诸如“你好吗”之类的信息,并从应用程序中得到一个准智能的回复,比如“很好,你自己怎么样,约翰?”

我已经把所有的东西都连接好了,但我想知道是否有人能为我指出用Ruby编写一个算法的正确方向,从而使这个“机器人”更智能。现在,我使用了一个非常直接的if/elsif/else链来解析有效负载并交付正确的响应,但是一旦我获得超过5-10个关键字,这看起来就无法维护了。

我会更好地使用一个案例陈述(至少为了可读性),还是有一个更好的OOP设计模式可以帮助我匹配我的关键词并提供特定的响应?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-22 12:50:43

那得看情况。如果你想写一个真正的聊天机器人,为5+多年阅读神经网络论文做好准备。不如现在就放弃吧:)

但是,如果您减少了需求(让bot只识别几个选定的关键字,每个关键字都有预定义的响应),那么简单的字典方法就足够了。

您说得对,将字典存储在代码中是不可伸缩的。最好将知识存储在数据文件(YAML、JSON或您喜欢的任何东西)或数据库中。然后,您的代码将加载文件,并将能够查找响应的关键字。

就像这样:

代码语言:javascript
复制
def reply(input)
  # you load this from a storage, so that when you add new keywords,
  # your code doesn't have to be touched.
  knowledge = [
    { keyword: 'how are you', response: 'Good, how about yourself, %{name}?' },
    { keyword: 'bye', response: 'Ciao!' },
  ]

  response = knowledge.detect do |pair|
    input.downcase.include?(pair[:keyword].downcase)
  end

  response && response[:response]
end

reply('How are you doing, machine?') # => "Good, how about yourself, %{name}?"
reply('gotta go, bye') # => "Ciao!"
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36154617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档