【问题标题】:Simple chat bot projects [closed]简单的聊天机器人项目[关闭]
【发布时间】:2011-05-06 23:53:25
【问题描述】:

我想做的是构建一个简单的机器人,它将存储在数据库中的一组信息发送到我的 messanger 聊天窗口[聊天服务是 gTalk、Yahoo 和其他常用聊天产品] 另外,它应该能够接受一些预定义的命令并回复它们。

是否有任何可用的开源代码?

【问题讨论】:

  • 你是什么服务器端编程语言
  • 我仍处于需求收集和可行性研究阶段。但是,很可能它会是红宝石。对此有何建议?
  • 我使用 Java 和 incesoft ibot sdk 平台(见我的回答)。如果您愿意,也可以使用 .NET,这对您正在做的事情并没有什么影响。

标签: open-source artificial-intelligence bots google-talk yahoo-messenger


【解决方案1】:

查找AIML(人工智能标记语言),它已经存在很多年了,它的定义非常明确,并且对于简单的东西非常灵活。您还可以使用各种递归模板做一些非常复杂的事情,并且结果相当不错(就愚蠢的机器人而言)。

有很多 open sdk projects 使用这种标记语言,它们会负责将您的输入模式与存储在您必须使用模板配置的 xml 文件中的给定回复进行匹配。

几年前,我在 Java 中使用 AIML 来存储模式(如果您按照上面的链接,有很多 API)和使用 incesoft msn bot platform,我曾在一个 Messenger bot 上工作过。工作得很好。

希望对你有帮助。

【讨论】:

    【解决方案2】:

    对于一些尝试更复杂的东西,您可以查看 NLTK 自然语言工具包:

    http://www.nltk.org/

    基于 Python 并用于教育,但有相当多的文档和至少几本书(一本是开源的)。

    【讨论】:

      【解决方案3】:

      就不同的聊天网络而言,您可能需要查看 Pidgin (http://www.pidgin.im/download/source/),这是一个用 C 和 GTK+ 编写的跨平台 GPLed 聊天客户端,适用于所有主要的聊天网络。

      【讨论】:

        【解决方案4】:

        你可以考虑找一些人工智能资源 有一个很好的聊天机器人示例 尝试谷歌verbot 它是用 .NET 库构建的

        【讨论】:

          【解决方案5】:

          我们制作了一个非常容易在 python 中扩展的工具,它可以与 XMPP / gtalk 一起使用: http://gbin.github.com/err/

          为了给你一个想法,最小的 hello world 如下:

          from errbot.botplugin import BotPlugin
          from errbot.jabberbot import botcmd
          
          class HelloWorld(BotPlugin):
              @botcmd
              def hello(self, mess, args):         # the chatbot will then respond to the command !hello
                  """ this command says hello """  # this will be the result of !help hello
                  return 'Hello World !'           # this will be the answer
          

          【讨论】:

            【解决方案6】:

            为此,我一直在使用 Github 的 hubot。当被要求讲笑话时,我的机器人会讲笑话。 (当然我也有一个我可以问我应该做什么,它会查找我的工作清单。)

            GoGoBot> tell a joke about me
            GoGoBot> a joke about Shell...  Let me think about it...
            GoGoBot>
            I heard a funny one the other day:
            Chuck Norris doesn't look both ways before he crosses the street...
            he just roundhouses any cars that get too close.
            

            机器人在 NodeJS 上运行。该 api 接受一个正则表达式和一个回调,如

            robot.hear /tell a joke/i, (msg) -> msg.send 'I heard a funny joke...'

            module.exports = (robot) ->
              robot.hear /tell (?:a|something) (?:joke|funny)(?: about ([a-z.]+))?/i, (msg) ->
                subject = getSubject msg.match[1], msg.message.user.name
                msg.send 'a joke about ' + subject + '...  Let me think about it...' if subject.length
                tellJoke = ->
                  getJoke subject, (err, text) ->
                    msg.send "Cannot compute.  #{robot.name} is about to die.\r\n#{err}".replace(/e/ig, '3') if err?
                    msg.send "I heard a funny one the other day:\r\n#{text}" unless err?
                setTimeout tellJoke, 5000 * Math.random()
            

            这很容易学习,因为我已经熟悉 NodeJS 和咖啡脚本。我在今天几个小时内写了我提到的两个机器人。

            【讨论】:

              【解决方案7】:

              IMified 可能是一种简单的入门方式,它允许您使用服务器端 Web 开发工具构建 IM 聊天机器人来接收消息,并且只需发出 HTTP 请求来发送消息或请求状态。

              http://www.imified.com/hosting/

              IMified 的基于 API 的解决方案 创建和托管即时消息 应用程序消除了复杂性 并提供了一个简单的解决方案 构建和部署 IM 应用程序 在多个公共 IM 网络上使用 一个 API。

              API 文档在这里: http://www.imified.com/developers/api

              一个应用程序连接到 IMified 平台是最简单的 形成一个驻留的动态网页 在任何 HTTP 服务器上并监听 传入的消息然后输出 回复。您指定端点 URL 在您的机器人设置中。开发者可以 也向用户“推送”消息 通过 REST 请求用户存在 api 调用 IMified 的服务器。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2022-11-19
                • 1970-01-01
                • 2016-11-21
                • 2020-04-09
                • 1970-01-01
                • 2012-07-03
                • 1970-01-01
                • 2016-12-04
                相关资源
                最近更新 更多