对话工具包
cotk的Python项目详细描述
对话工具包
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 .
- 如果要在
/models
中运行模型,则必须另外安装tensorflow或pytorch
快速启动
让我们浏览一下整个包裹,看看你想要什么。
数据加载器
为您加载常用数据集和预处理:
- 下载在线资源或从本地导入
- 拆分训练集、开发集和测试集
- 构建词汇表
>>># 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 cotk0
哈希值
用于检查是否使用了相同的数据集。
注意:如果您想了解更多关于度量的信息,请参阅文档
发布实验
我们提供一个在线仪表板来管理您的实验。
这里我们给您举一个简单的例子。
首先在命令行中初始化git repo。
pip install cotk1
然后在main.py
pip install cotk2
注意:模型的唯一要求是输出名为result.json的文件,
您可以随心所欲(甚至不使用
cotk
加载数据)。
接下来,提交更改并在命令行中设置上游分支。
pip install cotk3
最后,键入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 cotk4
id
来自仪表板id。
cotk
将从仪表板下载代码,并告诉您如何运行模型。
pip install cotk5
键入cotk run--only run--entry main
将复制相同的实验。
如果维护人员设置了.model\config.json
pip install cotk6 < <代码>cotk将从github下载代码并通过配置文件生成命令。
预定义模型
我们已经为经典任务提供了一些基线,详细信息请参见文档中的模型动物园。
您也可以使用coai/model\u name/master来获取代码。
问题
如果您想要请求功能、报告错误或提出一般性问题,欢迎您创建问题。
贡献
我们欢迎社会各界的贡献。
- 如果您想做一个大的改变,我们建议首先在您的设计中创建一个问题。
- 通过拉取请求可以直接进行小额捐款。
- 如果您喜欢为我们的图书馆捐款,请参阅问题以了解我们需要什么。
团队
COTK由清华大学对话人工智能小组(THU COAI)负责维护和开发。查看我们的主页(中文版)。
许可证
apache许可证2.0