“一个基于《自然语言处理实战》构建分布式代理聊天机器人的开源框架和数据集。”
项目描述
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。以下是一些启动想法。
将电影对话存储在 django 数据库中,以保存语句→响应对
与 MxGraph(draw.io)和其他 js 库兼容的图模式,用于编辑图形/流程图。
在数据库中的 ubuntu 对话语料库
在数据库中的正念 FAQ 语料库
对“告诉我一些鼓舞人心的话”的著名引言作为回应
对“讲个笑话”的笑话
数据科学 FAQ
nlpia FAQ
心理学/自助 FAQ
HTML django 模板,以便有 Web 界面而不是仅限于命令行命令 bot
使用 Django Rest Framework 创建一个基本的 API,该 API 返回包含对发送到本地主机 URL 的任何请求的回复的 json,例如 http://localhost:8000/api?statement='Hello world' 可能返回 {‘reply’: ‘Hello human!’}
使命令行应用使用 #3 中的 REST API 而不是每次与机器人交谈时都缓慢重新加载 csv 文件
使用数据库全文搜索来查找数据库中有响应的适当语句
使用语义搜索而不是文本相似度(全文搜索或模糊匹配文本)
将嵌入向量(来自 spacy 的 300D 文档向量)添加到数据库中的每个语句和响应中
使用 annoy 创建文档向量的语义索引,以便快速找到“近似最近邻”(语义匹配)
每次服务器启动时都加载文档向量的 annoy 索引,并使用它来在数据库中找到最佳回复。
使用通用句子编码而不是 spacy 的 docvecs。
创建一个用于对话图创建/设计的 UX
在数据库中对不同的对话图进行标记,以便用户可以为其机器人打开/关闭它们
允许用户优先考虑一些对话/模型而不是其他对话/模型
允许用户创建自己的权重函数,以优先考虑 API 产生的单个语句
训练基于字符的生成模型
自动编码器的解码器部分,根据 spacy 的 docvecs 生成文本
自动编码器的解码器部分,根据通用句子编码生成文本
训练模型以生成回复嵌入(doc vecs 和/或使用 vecs),使用语句嵌入(对话引擎编码器-解码器使用 docvecs 或使用 vecs 作为编码器的一半)
添加一个治疗/正念教练功能,以对某些查询/语句提供正念想法的回复
添加“将‘此文本’翻译成西班牙语”的功能
在英语-西班牙语、英语-法语、英语-德语、英语<<->任何语言上训练基于字符的 LSTM 模型
将此模块添加到 django 应用程序/api 中
AIML 引擎后备
灵感
许多模式和想法是从其他出色的利他主义聊天机器人和模块化开源框架中汲取的。
心理健康教练
WYSA 来自伦敦,是免费的
开源(touchkin)?
ionic?
睡眠模式的无感监测(加速度计?)
引导冥想
运动建议
带有建议回复按钮的免费文本对话
基于开源的touchkin/mindlogger?
Replika 来自美国,需付费
性格测试
付费解锁“技能”培训
Youper(感谢Maria和tangibleai.com)
开源框架
-
语言:python
网络:zeromq
数据库:redis,couchbase,平面文件,用户自定义
集成:hipchat,rocketchat,shell,slack
-
语言:python
网络:flask
ORM:flask?
数据库:mongodb
为会话管理器(代理)指定意图/目标的良好通用JSON语法
-
语言:python
网络:sanic(异步)
ORM:sqlalchemy
数据库:sqlite
丰富、复杂、成熟的框架
-
javascript(typescript)
元框架,允许您在javascript中编写自己的模块
-
python
网络:flask(rest),sanic(异步)
数据库:aiml平面文件(XML)
集成:facebook messenger,google搜索,kik,line,alexa,webchat,viber
项目详情
下载文件
下载适合您平台的文件。如果您不确定要选择哪一个,请了解有关安装包的更多信息。
源代码分发
构建分发
nlpia_bot-0.2.14-py2.py3-none-any.whl的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 40845a002cae21dd92fd2e7786a54f226cefea01e45a27d5d8183032c79d12fd |
|
MD5 | b8e43fc713fb1ab932212c3c26d15597 |
|
BLAKE2b-256 | 571ae4d3ca0a5c28e4f6342dc7c1ccb3df37f917a15453136a250cf16a8a4bb9 |