mtdata是一个下载用于机器翻译的数据集的工具
mtdata的Python项目详细描述
MTData公司
MTData工具自动收集和准备机器翻译研究的数据集。 它提供了CLI和PythonAPI,因此可以作为独立工具使用或嵌入到 用于准备MT实验的python应用程序。在
这个工具知道:
- 从何处下载数据集:WMT测试和开发[2014,2015。。。2020年],Pararcrawl, Europarl,新闻评论,维基标题,Tilde模型语料库。。。在
- 如何提取文件:.tar。焦油gz,.tgz,.zip。。。在
- 如何解析.tmx、.sgm和这样的xml或.tsv。。。检查它们是否具有相同数量的段。在
- 并行数据是在一个.tsv文件中还是在两个sgm文件中。在
- 数据是用gz、xz压缩还是完全不压缩。在
- 源目标的顺序是否相同,或者是否与目标源顺序交换。在
- 如何将代码映射到ISO语言代码!使用iso639_3,它可以容纳7000多种语言。在
- 只下载一次并将文件保存在本地缓存中。在
- (随着时间的推移,还会有更多这样的小细节。)
MTData是为了:
- 通过人工干预自动创建机器翻译培训数据。受SacreBLEU的启发,在评估阶段进行了人为干预。在
- 一个可重用的工具,而不是分布在多个回购中的几十个一次性使用的shell脚本。在
限制条件:
- 只支持不需要登录的公共可用数据集。还没有最不发达国家。在
- 没有集成标记器。(将这些集成起来应该相当容易)
安装
# from the source code on github git clone https://github.com/thammegowda/mtdata cd mtdata pip install --editable . # from pypi pip install mtdata
当前状态:
这些是来自不同来源的数据集摘要(更新日期:2020年5月10日)。 这个列表是不完整的,应该被看作是开始。 在这里,我(/TG)选择了一些我在工作中使用的常用数据集-欢迎您添加更多!在
Source | # of datasets |
---|---|
Statmt | 355 |
Paracrawl | 30 |
Tilde | 519 |
OPUS$1 | 53,351 |
OPUS100v1 | 302 |
JW300$2 | 44,663 |
GlobalVoices 2018Q4 | 812 |
Joshua Indian Corpus | 29 |
UnitedNations$3 | 30 |
WikiMatrix | 1,617 |
Neulab_TEDTalksv1 | 4,455 |
Other | 7 |
---- | ---- |
Total | 106,140 |
- $1-OPUS包含来自其他列出来源的重复条目,但它们通常是旧版本的语料库。在
- $2-JW300也从OPUS中检索到,但是由于规模和内部格式的不同,处理方式有所不同。在
- $3-仅包含测试集
CLI使用
- 在安装pip之后,可以使用
mtdata
命令或python -m mtdata
调用CLI - 有两个子命令:
list
用于列出数据集,get
用于获取数据集
mtdata list
列出此工具已知的数据集。在
^{pr2}$# List everything mtdata list # List a lang pair mtdata list -l deu-eng # List a dataset by name(s) mtdata list -n europarl_v9 mtdata list -n europarl_v9 news_commentary_v14 # list by both language pair and dataset name mtdata list -l deu-eng -n europarl_v9 news_commentary_v14 newstest201{4,5,6,7,8,9}_deen # get citation of a dataset (if available in index.py) mtdata list -l deu-eng -n newstest2019_deen --full
mtdata get
此命令将由语言名称指定的数据集下载到一个目录中。
您必须为--train
和--test
参数做出明确的选择
mtdata get -h usage: mtdata get [-h] -l L1-L2 [-tr [NAME [NAME ...]]][-tt [NAME [NAME ...]]] -o OUT optional arguments: -h, --help show this help message and exit -l L1-L2, --langs L1-L2 Language pairs; e.g.: deu-eng (default: None) -tr [NAME [NAME ...]], --train [NAME [NAME ...]] Names of datasets separated by space, to be used for *training*. e.g. -tr news_commentary_v14 europarl_v9 . All these datasets gets concatenated into one big file. (default: None) -tt [NAME [NAME ...]], --test [NAME [NAME ...]] Names of datasets separated by space, to be used for *testing*. e.g. "-tt newstest2018_deen newstest2019_deen". You may also use shell expansion if your shell supports it. e.g. "-tt newstest201{8,9}_deen."(default: None) -o OUT, --out OUT Output directory name (default: None)
示例
查看deu-eng
有哪些数据集可用
$ mtdata list -l deu-eng # see available datasets europarl_v9 deu-eng http://www.statmt.org/europarl/v9/training/europarl-v9.deu-eng.tsv.gz news_commentary_v14 deu-eng http://data.statmt.org/news-commentary/v14/training/news-commentary-v14.deu-eng.tsv.gz wiki_titles_v1 deu-eng http://data.statmt.org/wikititles/v1/wikititles-v1.deu-eng.tsv.gz wiki_titles_v2 deu-eng http://data.statmt.org/wikititles/v2/wikititles-v2.deu-eng.tsv.gz newstest2014_deen deu-eng http://data.statmt.org/wmt20/translation-task/dev.tgz dev/newstest2014-deen-src.de.sgm,dev/newstest2014-deen-ref.en.sgm newstest2015_ende en-de http://data.statmt.org/wmt20/translation-task/dev.tgz dev/newstest2015-ende-src.en.sgm,dev/newstest2015-ende-ref.de.sgm newstest2015_deen deu-eng http://data.statmt.org/wmt20/translation-task/dev.tgz dev/newstest2015-deen-src.de.sgm,dev/newstest2015-deen-ref.en.sgm ...[truncated]
获取这些数据集并存储在目录deu-eng
$ mtdata get --langs deu-eng --train europarl_v10 wmt13_commoncrawl news_commentary_v14 --test newstest201{4,5,6,7,8,9}_deen --out deu-eng # ...[truncated] INFO:root:Train stats: {"total": 4565929, "parts": {"wmt13_commoncrawl": 2399123, "news_commentary_v14": 338285, "europarl_v10": 1828521}} INFO:root:Dataset is ready at deu-eng
要在将来或由其他人复制此数据集,请参阅<out-dir>>/mtdata.signature.txt
:
$ cat deu-eng/mtdata.signature.txt
mtdat get -l deu-eng -tr europarl_v10 wmt13_commoncrawl news_commentary_v14 -ts newstest2014_deen newstest2015_deen newstest2016_deen newstest2017_deen newstest2018_deen newstest2019_deen -o <out-dir>
mtdata version 0.1.1
看看上面的命令完成了什么:
$ find deu-eng -type f | sort | xargs wc -l 3003 deu-eng/tests/newstest2014_deen.deu 3003 deu-eng/tests/newstest2014_deen.eng 2169 deu-eng/tests/newstest2015_deen.deu 2169 deu-eng/tests/newstest2015_deen.eng 2999 deu-eng/tests/newstest2016_deen.deu 2999 deu-eng/tests/newstest2016_deen.eng 3004 deu-eng/tests/newstest2017_deen.deu 3004 deu-eng/tests/newstest2017_deen.eng 2998 deu-eng/tests/newstest2018_deen.deu 2998 deu-eng/tests/newstest2018_deen.eng 2000 deu-eng/tests/newstest2019_deen.deu 2000 deu-eng/tests/newstest2019_deen.eng 1828521 deu-eng/train-parts/europarl_v10.deu 1828521 deu-eng/train-parts/europarl_v10.eng 338285 deu-eng/train-parts/news_commentary_v14.deu 338285 deu-eng/train-parts/news_commentary_v14.eng 2399123 deu-eng/train-parts/wmt13_commoncrawl.deu 2399123 deu-eng/train-parts/wmt13_commoncrawl.eng 4565929 deu-eng/train.deu 4565929 deu-eng/train.eng
ISO 639 3标准
在内部,所有语言代码都映射到ISO-639 3代码。
可以使用python -m mtdata.iso
检查映射
$ python -m mtdata.iso -h usage: python -m mtdata.iso [-h][langs [langs ...]] ISO 639-3 lookup tool positional arguments: langs Language code or name that needs to be looked up. When no language code is given, all languages are listed. optional arguments: -h, --help show this help message and exit# list all 7000+ languages and their 3 letter codes $ python -m mtdata.iso ... # lookup codes for some languages $ python -m mtdata.iso ka kn en de xx english german Input ISO639_3 Name ka kat Georgian kn kan Kannada en eng English de deu German xx -none- -none- english eng English german deu German
如何扩展、修改或贡献:
请通过向^{de
en
等语言代码将在内部映射到3个字母的ISO代码deu
eng
frommtdata.indeximportINDEXasindex,EntryEUROPARL_v9='http://www.statmt.org/europarl/v9/training/europarl-v9.%s-%s.tsv.gz'forpairin['de en','cs en','cs pl','es pt','fi en','lt en']:l1,l2=pair.split()index.add_entry(Entry(langs=(l1,l2),name='europarl_v9',url=EUROPARL_v9%(l1,l2)))
如果数据集在归档文件中,例如zip
或{
frommtdata.indeximportINDEXasindex,Entrywmt_sets={'newstest2014':[('de','en'),('cs','en'),('fr','en'),('ru','en'),('hi','en')],'newsdev2015':[('fi','en'),('en','fi')]}forset_name,pairsinwmt_sets.items():forl1,l2inpairs:src=f'dev/{set_name}-{l1}{l2}-src.{l1}.sgm'ref=f'dev/{set_name}-{l1}{l2}-ref.{l2}.sgm'name=f'{set_name}_{l1}{l2}'index.add_entry(Entry((l1,l2),name=name,filename='wmt20dev.tgz',in_paths=[src,ref],url='http://data.statmt.org/wmt20/translation-task/dev.tgz'))# filename='wmt20dev.tgz' -- is manually set, because url has dev.gz that can be confusing# in_paths=[src, ref] -- listing two sgm files inside the tarball# in_ext='sgm' will be auto detected fropm path. set in_ext='txt' to explicitly set format as plain text
{a4,参考^或} statmt示例。在
如果数据集有引用,请含deu在
cite=r"""bib tex here""Entry(... cite=cite)
要添加自定义解析器或文件处理程序,请查看^{
开发商:
- 项目
标签: