Giter VIP home page Giter VIP logo

weatherbot's Introduction

WeatherBot

一个使用 Rasa 技术栈 (Rasa NLU, Rasa Core, Rasa Core SDK)构建的简单的中文天气情况问询机器人(chatbot), 附带有基于 Web 的用户界面(UI)

功能

这个机器人可以根据你提供的城市(北京、上海等)和日期(明天、后天等),查询出相应的天气预报。

功能截图

特性

使用 Frame-based 对话管理方案,如果上述两个 Slot (既城市和天气),有任意一个用户未提供,对话管理系统会负责让你澄清相关 Slot 的值。

能力范围

  • 受限于天气数据提供方的能力,这个机器人只能查询 **大陆地区市级城市 三天以内 (今天,明天,后天) 的气象数据,不能查询过去(昨天,前天)等历史数据。
  • 受限于开发时间,这个机器人 不提供 诸如 这个星期五、下个星期一 这种需要计算才能得到日期给定方式。也 不能提供 诸如 绝对日期:三月一号、六一儿童节日 这种日期的查询能力。
  • 因为使用的是免费的天气查询接口,所以 会有配额限制,可能会因为 超出调用次数 ,而在一个小时内不能用。同时网络查询接口可能存在不稳定因素,导致 没有结果返回或者出现异常尝试多次重新发送请求可解决问题

动画演示

在线演示

Demo for 天气预报查询机器人

文档说明

本项目采用了组件相互隔离(类似于微服务的**)来构建整个系统。

整个系统分成 4 个 APP:

组件 仓库地址 说明
User Interface WeatherBot_UI 负责提供用户 UI ,方便用户使用,Rasa Core 支持和多种即时通讯软件(IM)的整合,Rasa Core 提供了一种称之为 Channel 的特性来方便接入 API。
Diaglog Manager WeatherBot_Core 负责管理整个对话的流程,它会主动调用 NLU 来解析用户的意图和提取相关的实体,在需要执行业务动作的时候会调用 Action Server 执行具体的业务动作。
NLU WeatherBot_NLU 负责理解用户的意图和提取相关的实体。
Action Server WeatherBot_Action 负责执行自定义 Action (通常都是具体的业务动作,在本项目中是请求远程服务器以查询天气情况)

NOTE 4 个 APP 不在本仓库中,它们分别有独立的仓库,具体仓库地址见上面的列表。

FAQ

  • 如果在使用机器人中遇到解析失败或者 SSL 错误或者超时错误,请重试几次,数据提供商 心知天气 的 API 很不稳定,后续考虑替换成其他供应商

TODO

  • 使用更加 Robust 的对话管理方案,目前的方案无法处理意图切换等复杂场景.
  • 使用 duckling 做时间和日期的识别,效果将更加 Robust 和准确

weatherbot's People

Contributors

howl-anderson avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

weatherbot's Issues

4个服务都部署起来了,但是聊天窗口输入无返回

已经依次部署Action、NLU、Core、UI,且服务都正常启动:
image
image
image
image

但是在聊天窗口输入语句,无返回:
image
且在UI端没有任何信息。请问下,是否有一定的请求url可以测试每个模块的服务确实部署成功?方便逐一模块排查。或者您有什么建议可以帮忙排查这个问题,谢谢!

“查找表”功能不能支持中文吗?

通过rasa_nlu的官方文档,我知道查找表是为了优化实体识别功能,同时又不增加过多训练样本。
但是实际使用我发现没有效果,请问你知道怎么用吗?

我在nlu.json中增加

"lookup_tables": [
      {
        "name": "date-time",
        "elements": [
          "周子","明天","后天","海天","每天"
        ]
      }]

nlu_model_config.yaml中增加pipeline
- name: "intent_entity_featurizer_regex"
训练时会在models文件夹中生成regex_featurizer.json文件。

看了rasa_nlu的源码中featurizers/regex_featurizer.py文件,
regex_string = '(?i)(\\b' + '\\b|\\b'.join(elements_sanitized) + '\\b)'
这里加了\b导致无法匹配中文(因为送到这里的文本没有分词)
然后我去掉了这里的\b,确实就能够被查找表的正则匹配了。

我理解的查找表应该是把自定义词“周子”当作和“明天”一样的'date-time'实体。
但是实际上输入“周子”时,它还是被识别成了'address'词。

请问是我理解不对,还是哪一步做错了吗?

NLU训练数据很慢

你好!感谢你的项目,很赞。这里我有个问题,就是我在训练NLU数据的时候,总共51条,4个意图,10个实体,但是5个小时才能够训练完,有时候还会挂掉,请问是什么原因导致的?还是我在构造训练数据时对实体、意图的标志不对?期待解答,谢谢!

输入“你好”报错

链接到自己的训练好的模型上,可以启动 webchat 。
然后输入“你好”,会返回两遍下面这个错误
message handler error
Traceback (most recent call last):
File "/home/tonyzh/.conda/envs/spring/lib/python3.6/site-packages/engineio/server.py", line 423, in _trigger_event
return self.handlersevent
File "/home/tonyzh/.conda/envs/spring/lib/python3.6/site-packages/socketio/server.py", line 522, in _handle_eio_message
self._handle_event(sid, pkt.namespace, pkt.id, pkt.data)
File "/home/tonyzh/.conda/envs/spring/lib/python3.6/site-packages/socketio/server.py", line 458, in _handle_event
self._handle_event_internal(self, sid, data, namespace, id)
File "/home/tonyzh/.conda/envs/spring/lib/python3.6/site-packages/socketio/server.py", line 461, in _handle_event_internal
r = server._trigger_event(data[0], namespace, sid, *data[1:])
File "/home/tonyzh/.conda/envs/spring/lib/python3.6/site-packages/socketio/server.py", line 490, in _trigger_event
return self.handlers[namespace]event
File "/home/tonyzh/.conda/envs/spring/lib/python3.6/site-packages/flask_socketio/init.py", line 251, in _handler
*args)
File "/home/tonyzh/.conda/envs/spring/lib/python3.6/site-packages/flask_socketio/init.py", line 634, in _handle_event
ret = handler(*args)
File "/home/tonyzh/.conda/envs/spring/lib/python3.6/site-packages/rasa_addons/webchat/init.py", line 126, in handle_message
output_channel.custom_data = message['customData']
TypeError: string indices must be integers

web端可以接受到NLU识别出来的意图和槽位信息么

孔晓泉老师您好,还想向您请教一个问题,就是我这边web端已经能跑通了,现在我想尝试在web端界面进行测试的时候接受NLU识别出来的意图和槽位信息,就是我这边可以直观的看到每一轮对话,系统在NLU阶段都识别出了哪些东西。谢谢。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.