跳转到主要内容

“一个基于《自然语言处理实战》构建分布式代理聊天机器人的开源框架和数据集。”

项目描述

Build Status Coverage GitHub release PyPI version License

nlpia_bot

使用NLP in Action构建一个真正有帮助的虚拟助手!大多数机器人都是为了给他们的企业主人赚钱而操纵你。你的机器人可以帮助你保护自己并放大你的能力和亲社会本能。

这个混合聊天机器人结合了NLP in Action中解释的4种技术

1. search: [chatterbot](https://github.com/gunthercox/ChatterBot), [will](https://github.com/skoczen/will)
2. pattern matching and response templates: Alexa, [AIML](https://github.com/keiffster/program-y)
3. generative deep learning: [robot-bernie](https://github.com/nlpia/robot-bernie), [movie-bot](https://github.com/totalgood/nlpia/blob/master/src/nlpia/book/examples/ch10_movie_dialog_chatbot.py)
4. grounding: [snips](https://github.com/snipsco/snips-nlu)

圣地亚哥Python用户组的演示文稿在docs/

安装

你需要在Anaconda3中使用conda包管理器进行安装和使用,特别是如果你的开发环境不是一个开放标准的操作系统,如Linux。

git clone git@github.com:nlpia/nlpia-bot
cd nlpia-bot
conda env create -n nlpia -f environment.yml  # or environment-windoze.yml
conda activate nlpia
pip install --editable .

使用

$ bot --help
usage: bot [-h] [--version] [--name STR] [-p] [-b STR] [-v] [-vv]
           [words [words ...]]

Command line bot application, e.g. bot how do you work?

positional arguments:
  words                Words to pass to bot as an utterance or conversational
                       statement requiring a bot reply or action.

optional arguments:
  -h, --help           show this help message and exit
  --version            show program's version number and exit
  --name STR           IRC nick or CLI command name for the bot
  -p, --persist        Don't exit. Retain language model in memory and
                       maintain dialog until user says 'exit', 'quit' or 'bye'
                       (this is the default behavior if you do not provide a statement)
  -b STR, --bots STR   comma-separated list of bot personalities to load
                       default: pattern,parul,search_fuzzy,time,eliza
  -v, --verbose        set loglevel to INFO
  -vv, --very-verbose  set loglevel to DEBUG

示例

你可以像运行任何其他命令行应用程序一样运行机器人,将你的陈述/查询作为参数传递。

$ bot hello
# 2019-11-21 12:42:13,620 WARNING:nlpia.constants:107:            <module> Starting logger in nlpia.constants...
# 100%|█████████████████████████████████████████████████████████████████████████████████████████████| 64350/64350 [00:00<00:00, 540679.58it/s]
BOT: Hello

如果你想更快地完成你的机器人,你可以在持久模式下运行它(不需要为你的陈述或单词提供任何位置参数)。

Travis的概率回复选择器正在很好地从多个来源选择回复(默认设置)

  • pattern_bots.py:正则表达式模式和问候模板

  • fuzzy_search_bots.py:电影对话模糊匹配

  • parul_bots.py:使用传统的TFIDF像搜索引擎一样进行维基百科搜索

  • eliza_bots.py:ELIZA治疗机器人Python端口

  • time_bots.py:一个解析您的 git 日志和 bash 历史记录的时间和生产率跟踪器

$ bot
(nlpia) hobs@Hobsons-MacBook-Air:~/code/chatbot/nlpia-bot$ bot
# 2019-11-21 12:59:05,854 WARNING:nlpia.constants:107:            <module> Starting logger in nlpia.constants...
# 100%|█████████████████████████████████████████████████████████████████████████████████████████████| 64350/64350 [00:00<00:00, 495935.48it/s]
YOU: Hi
BOT: hey there. tired of breathing?
YOU: Hello
BOT: How do you do. Please state your problem.
YOU: What is an ELIZA chatbot?
BOT: joey never told you we went out, did he?
YOU: ^[[A
BOT: I am sorry! I dont understand you
YOU: What is an ELIZA chatbot?
BOT: Does that question interest you ?
YOU: What is a chatbot?
BOT: hello barbie is an internet-connected version of the doll that uses a chatbot provided by the company toytalk, which previously used the chatbot for a range of smartphone-based characters for children.
YOU: Hello
BOT: hello.
YOU: Hello
BOT: How do you do. Please state your problem.
YOU: bye
$

正在进行中

  • Travis (@travis-harper):模型管理、上下文过滤和更多对话代理的添加

  • Nima (@hulkgeek):基于其最先进的问答分类器的问答机器人

  • Xavier (@spirovanni):为 workforce.org 和圣地亚哥市提供就业顾问

  • Hobson (@hobson):基础设施(CI、Web 应用)和框架功能(nltk→spacy、USE 向量)

  • Erturgrul:土耳其维基百科问答机器人(parul 机器人)

  • 您:您想实现哪个大型聊天机器人想法?

想法

请提交您的功能想法 github issues。以下是一些启动想法。

  1. 将电影对话存储在 django 数据库中,以保存语句→响应对

    1. 与 MxGraph(draw.io)和其他 js 库兼容的图模式,用于编辑图形/流程图。

    2. 在数据库中的 ubuntu 对话语料库

    3. 在数据库中的正念 FAQ 语料库

    4. 对“告诉我一些鼓舞人心的话”的著名引言作为回应

    5. 对“讲个笑话”的笑话

    6. 数据科学 FAQ

    7. nlpia FAQ

    8. 心理学/自助 FAQ

  2. HTML django 模板,以便有 Web 界面而不是仅限于命令行命令 bot

  3. 使用 Django Rest Framework 创建一个基本的 API,该 API 返回包含对发送到本地主机 URL 的任何请求的回复的 json,例如 http://localhost:8000/api?statement='Hello world' 可能返回 {‘reply’: ‘Hello human!’}

  4. 使命令行应用使用 #3 中的 REST API 而不是每次与机器人交谈时都缓慢重新加载 csv 文件

  5. 使用数据库全文搜索来查找数据库中有响应的适当语句

  6. 使用语义搜索而不是文本相似度(全文搜索或模糊匹配文本)

    1. 将嵌入向量(来自 spacy 的 300D 文档向量)添加到数据库中的每个语句和响应中

    2. 使用 annoy 创建文档向量的语义索引,以便快速找到“近似最近邻”(语义匹配)

    3. 每次服务器启动时都加载文档向量的 annoy 索引,并使用它来在数据库中找到最佳回复。

    4. 使用通用句子编码而不是 spacy 的 docvecs。

  7. 创建一个用于对话图创建/设计的 UX

    1. 在 django 应用程序中安装 mxgraph

    2. 创建一个基于此 mxgraph 示例的基本页面,以便用户可以构建并将对话作为图保存到数据库中: 教程示例应用程序

    3. 将对话图转换为 nlpia-bot 数据库中的一系列记录/行,使其起作用

  8. 在数据库中对不同的对话图进行标记,以便用户可以为其机器人打开/关闭它们

    1. 允许用户优先考虑一些对话/模型而不是其他对话/模型

    2. 允许用户创建自己的权重函数,以优先考虑 API 产生的单个语句

  9. 训练基于字符的生成模型

    1. 自动编码器的解码器部分,根据 spacy 的 docvecs 生成文本

    2. 自动编码器的解码器部分,根据通用句子编码生成文本

    3. 训练模型以生成回复嵌入(doc vecs 和/或使用 vecs),使用语句嵌入(对话引擎编码器-解码器使用 docvecs 或使用 vecs 作为编码器的一半)

  10. 添加一个治疗/正念教练功能,以对某些查询/语句提供正念想法的回复

  11. 添加“将‘此文本’翻译成西班牙语”的功能

    1. 在英语-西班牙语、英语-法语、英语-德语、英语<<->任何语言上训练基于字符的 LSTM 模型

    2. 将此模块添加到 django 应用程序/api 中

  12. AIML 引擎后备

灵感

许多模式和想法是从其他出色的利他主义聊天机器人和模块化开源框架中汲取的。

心理健康教练

开源框架

    • 语言:python

    • 网络:zeromq

    • 数据库:redis,couchbase,平面文件,用户自定义

    • 集成:hipchat,rocketchat,shell,slack

  • ai聊天机器人框架

    • 语言:python

    • 网络:flask

    • ORM:flask?

    • 数据库:mongodb

    • 为会话管理器(代理)指定意图/目标的良好通用JSON语法

  • rasa

    • 语言:python

    • 网络:sanic(异步)

    • ORM:sqlalchemy

    • 数据库:sqlite

    • 丰富、复杂、成熟的框架

  • botpress

    • javascript(typescript)

    • 元框架,允许您在javascript中编写自己的模块

  • Program-Y

    • python

    • 网络:flask(rest),sanic(异步)

    • 数据库:aiml平面文件(XML)

    • 集成:facebook messenger,google搜索,kik,line,alexa,webchat,viber

项目详情


下载文件

下载适合您平台的文件。如果您不确定要选择哪一个,请了解有关安装包的更多信息。

源代码分发

此版本没有提供源代码分发文件。请参阅生成分发存档的教程。

构建分发

nlpia_bot-0.2.14-py2.py3-none-any.whl (84.6 kB 查看哈希)

上传 Python 2 Python 3

由以下支持