用于访问对话框数据集的统一API。

roboy-parlai的Python项目详细描述


对于Parlai Software

版权所有(C)2017年至今,Facebook,Inc.保留所有权利。


在满足以下条件的情况下是允许的:

*源代码的重新分发必须保留上述版权声明、此
条件列表和以下免责声明。

*以二进制形式重新分发必须复制上述版权声明,
此条件列表和文档中的以下免责声明
和/或随分发提供的其他材料。


*Facebook或其贡献者的姓名均不得用于
认可或推广由此软件衍生的产品未经事先书面许可。


本软件由版权所有者和贡献者"按原样"提供,并且
任何明示或暗示的保证,包括但不限于,不接受对适销性和特定用途适用性的暗示保证。在任何情况下,版权所有人或贡献者均不对
任何直接、间接、附带、特殊、惩戒性或后果性损害
(包括但不限于购买替代商品或服务;
使用、数据或利润损失负责;(或业务中断)无论是何种原因造成的,在
使用本
软件时以任何方式产生的任何责任理论,无论是合同、严格责任或侵权
(包括疏忽或其他),即使已告知此类损害的可能性也是如此。


说明:<;pAlg="Center"& gt;lg;img宽度="70%"Src="DoS/Objy//Iyg/img/Palay.PNG"/& ParlAI;BR/> B-------------------------------------------BR/>< BR/> >(发音"PALAY")是对话AI研究的框架,在python中实现。

其目标是为研究人员提供:
-一个用于共享、培训和测试对话模型的统一框架
-许多流行的数据集都可以在一个地方使用,具备多任务的能力
-无缝集成[Amazon Mechanical Turk](https://www.mturk.com/mturk/welcome)进行数据收集和人员评估
-与[Facebook Messenger]集成(http://www.parl.ai/static/docs/tutorial\u messenger.html)在聊天界面中将代理与人连接

支持许多[任务](https://github.com/facebook research/parlai/blob/master/parlai/tasks/task_list.py),包括流行的数据集,如[squad](https://rajpurkar.github.io/squad explorer/),[BABI任务](https://arxiv.org/abs/1502.05698),[Marco女士](http://www.ms marco.org/),[MCTEST](https://www.microsoft.com/en-us/research/publication/mctest challenge dataset open domain machine comprehension text/),[wikiqa](https://www.microsoft.com/en-us/download/details.aspx?ID=52419),[网络问题](http://www.aclweb.org/antology/d13-1160),[简单问题](https://arxiv.org/abs/1506.02075),[维基电影](https://arxiv.org/abs/1606.03126),[Qacnn&;QadailyMail](https://arxiv.org/abs/1506.03340),[CBT](https://arxiv.org/abs/1511.02301),[图书测试](https://arxiv.org/abs/1610.00956),[巴比对话任务](https://arxiv.org/abs/1605.07683),[ubuntu对话](https://arxiv.org/abs/1506.08909),[开放字幕](http://opus.lingfil.uu.se/opensubtitles.php),[康奈尔电影](https://www.cs.cornell.edu/~cristian/cornell_movie-dialogs_corpus.html)、[vqa-coco2014](http://visualqa.org/)、[visdial](https://arxiv.org/abs/1611.08669)和[clevr](http://cs.stanford.edu/people/jcjohns/clevr/)。请参见[此处](https://github.com/facebook research/parlai/blob/master/parlai/tasks/task_list.py)了解当前完整的任务列表。

(http://torch.ch/),提供GPU批量培训或CPU Hogwild培训。使用[tensorflow](https://www.tensorflow.org/)也很简单。

Dialog Research软件平台,"ARXIV:1705.06476"(https://arxiv.org/abs/1705.06476)。



期待一些冒险和粗糙的边缘。<;br>;
请参阅[新闻页面](https://github.com/facebooksresearch/parl ai/blob/master/news.md)了解最新的添加和更新,并访问网站[http://parl.ai](http://parl.ai)了解更多文档。


统一的对话模型评估框架
-按需下载任务/数据集,并提供相同的简单界面
-统一数据集输入和评估框架/指标
-`agents/`directory鼓励研究人员提交将他们的培训代码发送到存储库,以便与其他人共享
-有助于再现性

最终目标是进行一般对话,其中包括许多不同的技能
-将模拟和实际语言任务无缝结合
-鼓励多任务模型开发和评估
-有助于减少模型对特定数据集的过度拟合

最终目标是实实在在的与人对话
-通过Mechanical Turk训练和评估与人的实时对话
-连接Turkers和对话代理的简单设置
-允许比较不同的研究组Turk实验

引导用于人机交互的工作对话模型(对话日志)和交互式(在线/RL)任务。
-真实任务和模拟任务。
-支持其他媒体,例如vqa中的可视化。
-可以使用Mechanical Turk运行/收集数据/评估。
-Python框架。
-使用pytorch.
-使用zmq与其他不在python中的工具箱进行对话,给出lua torch的示例。
-支持批处理和hogwild培训以及模型评估。

查看[需求部分](需求)以查看是否遗漏了一些内容。

显示"1k训练示例"babi任务的任务1中的10个随机示例:
```bash
python examples/display_data.py-t babi:task1k:1
```

同时显示BABI任务和Squad数据集上多任务的100个随机示例:
`` bash
python examples/display\data.py-t babi:task 1:1,squad-ne 100
```

evaluate on the babi test set with a human agent(使用本地键盘作为输入):
``bash
python examples/eval_model.py-m local_human-t babi:task1k:1-dt valid
``

evaluate an电影subreddit数据集验证集上的ir基线模型:
``bash
python examples/eval\u model.py-m ir\u baseline-t"\moviedd reddit"-dt valid
```

``` bash
python示例/display_model.py-m ir_baseline-t"moviedd reddit"-dt valid
`````

train a seq2seq modEL关于"10K训练示例"BABI任务1,批量大小为32个示例,直到验证的准确率达到95%(需要Pythorch):
``bash
python examples/train\u model.py-t babi:task10K:1-m seq2seq-mf/tmp/model\u s2s-bs 32-vtim 30-vcut 0.95
```

在批量大小为32个示例(pytorch和regex)的Squad数据集上训练一个细心的LSTM模型:
``bash
python examples/train`u model.py-m drqa-t squad-bs 32-mf/tmp/model`u drqa
```

我们模型动物园的Squad数据集上的LSTM模型(DRQA读取器):
``bash
python examples/eval\model.py-t squad-mf"模型:drqa/squad/model"
````


Requirement.txt中列出了核心模块的依赖关系。


parlai/agents中包含的某些模型有其他要求。

安装parlai:

``bash
git clone https://github.com/facebook research/parlai.git~/parlai
cd~/parlai;python setup.py develop
```

这是建议的安装过程,因为它提供了对示例的随时访问,并允许您修改可能需要的任何内容。如果要将另一个任务提交到存储库,这一点尤其有用。

所有需要的数据都将下载到~/parlai/data,如果需要,任何非数据文件(如memnn代码)都将下载到~/parlai/downloads。如果您需要清除这些文件使用的空间,您可以安全地删除这些目录,所需的任何文件都将再次下载。

\worlds,代理和教师

parlai中的主要概念(类):
-世界-定义环境(可以非常简单,只需两个代理相互交谈)。
-代理-世界上的代理,例如学习者。(可以有多个学习者。)
-教师-一种与学习者交谈的代理,实现前面列出的
之一。

定义一个世界及其代理后,可以运行主循环进行培训、测试或显示,它调用函数world.parley()。左面板给出了示例main的框架,右面板给出了parley()的实际代码。

<;p align=center>;<;img width="100%" src="docs/source/\\u static/img/main.png"/>"<;/p>;

操作和观察

以及更多的代理之间。
当说话(动作)或倾听(观察)时,它是相同的对象类型,但视图不同(即字段中的值不同)。

observation/action dict字段如下(或参见[文档](http://parl.a i/static/docs/observations.html)):

<;p align=center>;<;img width="33%" src="docs/source/\\u static/img/act-obs-dict.png"/>;


尽管"文本"字段很可能在几乎所有的交换中使用。

注意:在验证和测试期间,labels字段被重命名为eval_labels–这样,模型不会意外地在标签上训练,但它们仍然可以用于计算模型侧的服务水平s.

对于像babi这样的固定监督学习数据集,训练集的典型交换可能如下(测试集不包括标签):

`` python
教师:{
'文本':'山姆去厨房了\n它给了山姆牛奶了\n这是牛奶吗?',
"标签":["厨房"],
"标签候选人":["走廊","厨房","浴室"],
"插曲完成":假
}
学生:{
"文本":"走廊"
}
老师:{
"文本":"山姆去了走廊上的厕所里有牛奶吗?,
"标签":["走廊"],
"标签候选人":["走廊","厨房","浴室"],
"插曲完成":真的
}
学生:{
"文本":"走廊"
}
老师:{
…#开始下一集
}

```

它可以与不同的任务交互(例如机器学习模型)
-**示例**:包含一些不同循环的基本示例(构建字典、训练/评估、显示数据)
-**任务**:包含parlai中可用的不同任务的代码
-**mturk**:包含设置Mechanical Turk的代码,以及示例mturk任务
-**messenger**:包含与facebook messenger连接的代码
-**zoo**:包含直接从我们的model zoo下载和使用预训练模型的代码

根据依赖关系。

代理,实现act()方法,该方法接收观察表并返回一个表以响应
-**任务实现教师类
-***多任务教师:基于传递给教师的"任务字符串"创建一组教师,在其中创建多个教师并在他们之间进行切换
-创建任务教师:从给定的任务字符串(例如"babi:task:1"或"squad")实例化教师
-**构建数据.py**:用于设置任务数据的基本实用程序。如果您的文件系统需要不同的功能,您可以覆盖它。
-**dict.py**:包含用于根据观察结果生成通用nlp风格词典的代码
-dictionary agent:跟踪词典中单词的索引和频率的代理,并且可以将一个句子解析成索引放入字典或返回
-**metrics.py**:计算对话框的评估指标,例如排名指标,等等
-**params.py**:使用argparse解释parlai的命令行参数
-**teachers.py**:包含处理基于对话框的任务的教师,以及用于存储数据的数据类
-**u fixedDialogTeacher:使用固定数据的教师的基类
-**u dialogTeacher:使用固定聊天日志进行对话的教师的基类
-**u fDialogTeacher:实现函数'setup_data'以FB对话框数据格式分析数据
-**thread_utils.py**:用于hogwild多线程(多处理)的实用程序类/函数
-sharedtable:提供锁保护的共享内存用于跟踪度量值
-**worlds.py**:包含一组用于在
-**u world中执行任务的基本世界:所有其他世界的基类,实现"parley"、"shutdown"、"enter",以及"退出"对话框:基于回合的两个代理通信的默认世界
-**u dialogpartnerworld:用于两个或多个代理的基于循环的回合的代理通信
-**u hogwildworld:用于设置单独的当使用多个线程(进程)时,每个线程的世界




目前在[本目录](https://github.com/facebook research/parlai/tree/master/parlai/agents)中提供的一些代理:

-**drqa**:Pythorch中实现的专注的[lstm model drqa](https://arxiv.org/abs/1704.00051),在Squad数据集等。
-**fairseq**:[使用卷积的关注序列到序列模型](https://arxiv.org/abs/1705.03122)
-**seq2seq**:具有各种选项的通用seq2seq模型-**语言模型**:RNN语言模型
-**memnn**:端到端存储网络代码
-**mlb_vqa**:基于[本文](https://arxiv.org/abs/1610.04325)的可视化问答模型
-**starspace**:一种简单的监督嵌入方法这是基于[本文](https://arxiv.org/abs/1709.03856)的强大基线。
-**tfidf_retriever**一个简单的基于检索的模型,作为检索输入到另一个模型的信息的第一步也很有用。
-**ir_baseline**:简单的信息检索基线,用[tfidf加权](https://en.wikipedia.org/wiki/tf%e2%80%93idf)匹配对候选响应进行评分
-**repeat_label**:basic类,仅用于重复发送给它的所有数据(例如,用于管道到文件、调试)
-**远程代理**:通过zmq连接的任何代理的基本类
-**本地人**:将键盘输入作为代理的act()函数,因此,一个人可以在环境中行动

请参见[目录](https://github.com/facebook research/parlai/tree/master/parlai/agents)获取完整列表。





目录](https://github.com/facebookresearch/parlai/tree/master/examples)包含一些基本循环的特定示例。

-base_train.py:\u非常简单的示例显示了使用默认代理父类的培训/验证循环的大纲-display_data.py:_使用代理。repeat_label显示命令行上提供的特定任务的数据。py:_显示命令行上提供的特定任务上提供的模型的预测。py:_使用命名代理计算命令行上提供的特定任务的评估度量数据-build_dict.py:_使用core.dict.dictionaryagent从命令行上提供的特定任务生成字典以下数据集(如左面板所示)和访问其中一个数据集非常简单,只需将任务名称指定为命令行选项,如数据集显示实用程序(右面板)所示:
<;p align=center>;<;img width="100%" src="docs/source/\\u static/img/tasks2.png"/>;<;/p>;

第一个版本支持20多个任务,包括ng受欢迎的数据集,如
Squad、Babi tasks、McTest、WikiQA、WebQuestions、SimpleQuestions、WikiMovies、Qacnn、QadailyMail、CBT、BookTest、Babi Dialog tasks、
Ubuntu、OpenSubtitles、Cornell Movie、VQA-CoCo2014。
添加了一些数据集,如vqav2、visdial、mnist_qa、个性化对话、保险qa、marco女士、triviaqa和clevr。请参见[此处](https://github.com/facebookresearch/parlai/blob/master/parlai/tasks/task_list.py)获取当前完整任务列表。


在parlai中选择任务与在命令行中指定任务一样简单,如上图(右)所示。如果数据集以前没有使用过,parlai将自动下载它。由于所有数据集在parlai中都以相同的方式处理(使用单个对话api),对话代理原则上可以在其中任何一个之间切换训练和测试。更妙的是,只需提供一个逗号分隔的列表,例如命令行"-t babi,squad",就可以同时指定多个任务(多任务处理),以便同时使用这两个数据集,甚至所有的qa数据集(-t qa),或者一次使用parlai中的每个任务(-t all)。其目的是使构建和评估非常丰富的对话框模型变得容易。




每个任务文件夹都包含:
-**build.py**文件,用于为任务设置数据(下载数据等,仅在第一次请求时完成,如果未使用任务,则不会下载该文件)。
-**agents.py**文件,其中包含Core使用的默认或特殊教师类。创建任务以从命令行参数(如果需要)实例化这些类。
-**worlds.py**文件可以为以下任务添加(可选)需要定义新的/复杂的环境。

要添加您自己的任务,请参阅[教程](http://www.parl.ai/static/docs/tutorial\u task.html)。



用于数据收集、培训和评估的Turk。

在不更改代理代码的情况下根据需要切换角色。这是因为土耳其人也通过同一界面的(打印精美的)版本接收和发送,使用的是观察/动作指令的字段。

以及本地人和远程土耳其人之间的循环聊天。

<;p align=center>;<;img width="100%" src="docs/source/\\u static/img/mturk.png"/>;<;/p>;

mturk库包含以下目录:

-**core**:此目录包含用于设置支持mturk聊天接口的aws后端的核心代码、用于创建和批准hit的代码,以及包装类"mturkagent"将mturk接口封装到一个标准的"代理"类中。
-**任务**:此目录包含三个mturk任务示例。
-**qa\\u data\\u collection**:从Turkers获取问题和答案,给定一个来自Squad的随机段落。
-**u model\\u evaluator**:请Turkers评估Reddit Movie Dialog数据集上的信息检索基线模型。
-**"多代理"对话框:两个本地人类代理和两个Turkers之间的循环对话。

要运行的任务。
-run`python run.py-nh<;num廑hits>;-na<;num廑assignments>;-r<;reward>;[--sandbox]/[--live]`,并适当设置`<;num廑hits>;`、`<;num廑assignments>;`和`<;reward>;`。使用"--sandbox"在推送之前以mturk沙盒模式运行任务要添加自己的mturk任务:
-在mturk/tasks目录中为新任务创建一个新文件夹在"task_config"字典中至少有以下字段:
-`hit_title`:关于hit包含的任务类型的简短描述性标题。在Amazon Mechanical Turk网站上,HIT标题出现在搜索结果中,并且在提到HIT的任何地方都会出现。
-`HIT U DESCRIPTION`:描述包括HIT包含的任务类型的详细信息。在Amazon Mechanical Turk网站上,点击描述出现在搜索结果的扩展视图中,以及点击和分配屏幕中。
-`hit_keywords`:一个或多个描述点击的单词或短语,用逗号分隔。在mturk网站上,这些词在搜索中用于查找点击。
-`task_description`:将在点击任务预览页和聊天页左侧显示的详细任务描述。支持HTML格式。
-使用用于设置和运行"mturkagent"所在世界的代码实现"run.py"。
-(可选)实现"worlds.py",使用从"world"扩展到"world"的世界级软件。

[Facebook Messenger教程](http://parl.ai/static/docs/tutorial嫒messenger.html)了解如何将Parlai与Facebook Messenger一起使用的更多信息。



在我们的[Github问题页面](https://github.com/facebookresearch/parlai/issues)上,

\杰克·乌班内克和杰森·韦斯顿。
其他主要撰稿人的非详尽清单包括:
威尔·冯、亚当·费什、陆家森、安托万·博尔德斯、德维·帕里克、德鲁夫·巴特拉,
Filipe de Avila Belbute Peres和Chao Pan。



title={parlai:a dialog research software platform},
author={miller},a.~h.和{feng},w.和{fisch},a.和{lu},j.和{batra},d.和{bordes},a.和{parikh},d.和{weston},j.},
journal={arxiv preprint arxiv:{1705.06476},
年份={2017}
}
````

我们还提供额外的专利授权。

平台:未知

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java从JSP或HTML向servlet发送多个参数   java方法来查看字符是否在字符数组中   使用带有java的MAC地址连接到设备   java如何将csv文件中的数据打印到secondactivity?   java如何从netbean 7.0.1连接到数据库   java考虑所有可能的类值,用于输出测试分割的预测值。   java我的actionListener调用有什么问题   swing在Java中实现粒子过滤器最有效的方法是什么?   java运行。getFontFamily()为返回null。使用apachepoi的docx文件   一个事务中的java领域循环与每个步骤循环中的一个事务   java日期格式与Spring Boot不兼容   java类冲突。处理   java GridBagLayout不工作   java将图像发送到另一个应用程序