对话工具包

cotk的Python项目详细描述


对话工具包

codefactorcoverage status构建状态codebeat badge

cotk是一个用于模型构建和评估的开源轻量级框架。 我们提供通用语言生成领域的标准数据集和评估套件。 它易于使用,让你专注于设计你的模型!

包括的功能:

  • 重量轻,启动方便。不要费心构建模型。
  • 预定义的标准数据集,在语言建模、对话框生成等领域。
  • 预定义的评估套件,使用多行中的多个指标测试您的模型。
  • 一个仪表板,用于显示实验,公平地比较您和其他人的型号。
  • 长期维护和持续发展。

本项目是dialtk(清华大学对话系统工具包)的一部分,您可以在我们的主页上点击dialtk或cotk。

快速链接

索引

安装

要求

  • 巨蟒3
  • numpy=1.13
  • nltk>;=3.4
  • tqdm>;=4.30
  • checksumdir>;=1.1
  • pytorch>;=1.0.0(可选)
  • Pythorch预培训伯特(可选)

从PIP安装

您只需使用

    pip install cotk

从源代码安装

  • 克隆coTK存储库
    git clone https://github.com/thu-coai/cotk.git
  • 通过PIP安装COTK
cd cotk
    pip install -e .

快速启动

让我们浏览一下整个包裹,看看你想要什么。

数据加载器

为您加载常用数据集和预处理:

  • 下载在线资源或从本地导入
  • 拆分训练集、开发集和测试集
  • 构建词汇表
>>># automatically download online resources>>>dataloader=cotk.dataloader.MSCOCO("resources://MSCOCO_small")>>># or download from a url>>>dl_url=cotk.dataloader.MSCOCO("http://cotk-data.s3-ap-northeast-1.amazonaws.com/mscoco_small.zip#MSCOCO")>>># or import from local file>>>dl_zip=cotk.dataloader.MSCOCO("./MSCOCO.zip#MSCOCO")>>>print("Dataset is split into:",dataloader.key_name)["train","dev","test"]

检查词汇表

>>>print("Vocabulary size:",dataloader.vocab_size)Vocabularysize:2588>>>print("Frist 10 tokens in vocabulary:",dataloader.vocab_list[:10])Frist10tokensinvocabulary:['<pad>','<unk>','<go>','<eos>','.','a','A','on','of','in']

在id和字符串之间转换

>>>print("Convert string to ids", \
    ...dataloader.convert_tokens_to_ids(["<go>","hello","world","<eos>"]))Convertstringtostring[2,1379,1897,3]>>>print("Convert ids to string", \
    ...dataloader.convert_ids_to_tokens([2,1379,1897,3]))

对批进行迭代

>>>fordataindataloader.get_batch("train",batch_size=1):...print(data){'sent':array([[2,181,13,26,145,177,8,22,12,5,1,1099,4,3]]),# <go> This is an old photo of people and a <unk> wagon.'sent_allvocabs':array([[2,181,13,26,145,177,8,22,12,5,3755,1099,4,3]]),# <go> This is an old photo of people and a horse-drawn wagon.'sent_length':array([14])}......

如果您愿意,也可以使用while

>>>dataloader.restart("train",batch_size=1):>>>whileTrue:...data=dataloader.get_next_batch("train")...ifdataisNone:break...print(data)

注意:如果您想了解有关数据加载器的更多信息,请参阅文档

指标

我们发现在github上发布的代码中有相同度量的不同版本, 这就导致了模型之间的不公平比较。例如,是否考虑 unk,计算在 困惑可能会导致多次错误并且严重损害评估。

我们为所有模型提供统一的度量实现。度量对象 批量接收数据。

>>>metric=cotk.metric.SelfBleuCorpusMetric(dataloader,gen_key="gen")>>>metric.forward({..."gen":...[[2,181,13,26,145,177,8,22,12,5,3755,1099,4,3],...[2,46,145,500,1764,207,11,5,93,7,31,4,3]]...})>>>print(metric.close()){'self-bleu':0.02206768072402293,'self-bleu hashvalue':'c206893c2272af489147b80df306ee703e71d9eb178f6bb06c73cb935f474452'}

我们还为选定的数据加载器提供标准度量。

    pip install cotk
0

哈希值用于检查是否使用了相同的数据集。

注意:如果您想了解更多关于度量的信息,请参阅文档

发布实验

我们提供一个在线仪表板来管理您的实验。

这里我们给您举一个简单的例子。

首先在命令行中初始化git repo。

    pip install cotk
1

然后在main.py

    pip install cotk
2

注意:模型的唯一要求是输出名为result.json的文件, 您可以随心所欲(甚至不使用cotk加载数据)。

接下来,提交更改并在命令行中设置上游分支。

    pip install cotk
3

最后,键入cotk run以运行您的模型并上载到cotk仪表板。

cotk将自动收集您的git repo、用户名、提交和result.json 到COTK仪表板(联机)。仪表板是一个网站,您可以在其中管理 您的实验或与他人分享结果。

在此处填充图像

如果你不想使用cotk的仪表板,你也可以选择直接上传你的模型 到Github。

使用cotk run--only run而不是cotk run,您将找到一个.model\config.json 是生成的。提交文件并将其推送到github,另一个可以自动下载 下一节将介绍您的型号。

注意:作者应保持再现性。我们只确定所有的输入 是相同的,但不同的随机种子、设备或其他 影响。在上传之前,运行cotk run——只运行两次 相同。

再现实验

您可以在仪表板中下载其他人的模型 并尝试复制结果。

    pip install cotk
4

id来自仪表板id。 cotk将从仪表板下载代码,并告诉您如何运行模型。

    pip install cotk
5

键入cotk run--only run--entry main将复制相同的实验。

如果维护人员设置了.model\config.json

    pip install cotk
6 < <代码>cotk
将从github下载代码并通过配置文件生成命令。

预定义模型

我们已经为经典任务提供了一些基线,详细信息请参见文档中的模型动物园。

您也可以使用coai/model\u name/master来获取代码。

问题

如果您想要请求功能、报告错误或提出一般性问题,欢迎您创建问题。

贡献

我们欢迎社会各界的贡献。

  • 如果您想做一个大的改变,我们建议首先在您的设计中创建一个问题。
  • 通过拉取请求可以直接进行小额捐款。
  • 如果您喜欢为我们的图书馆捐款,请参阅问题以了解我们需要什么。

团队

COTK由清华大学对话人工智能小组(THU COAI)负责维护和开发。查看我们的主页(中文版)。

许可证

apache许可证2.0

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

推荐PyPI第三方库


热门话题
在Java中使用BufferedReader类读取文本文件的子字符串   java如何在JSP页面上包含来自另一台服务器的动态JSP   使用单表策略的java持久化Hibernate继承映射   java报告状态失败达600秒。谋杀!报告hadoop的进展   java将字符串解析为形状   使用JTable的java ClassCastException?   java在Spring引导中关闭数据库   java Android Studio调试错误(Ubuntu)   java如何区分apache beam中KV实例中的两个键?   java将RealmObjectChangeListener添加到异步下载的RealmObject   java匹配模式之前的所有内容,包括新行和/或回车   java使用JAXB在XML中动态更改元素序列   java如何在MACOS中找到动态库(.dylib文件)的版本   Android中的java Nanohttpd服务器   java libGDX:3d动画不工作