NLP模型
NLP研究实验,建立在AllenNLP框架内的Pytorch。
该项目的目的是提供一个高质量的个人研究库的示例。它提供了模块化,连续的集成,高测试覆盖范围,强调可读性的代码库以及许多脚本,这些脚本使得在这里重现任何实验都像运行一些make一样容易。我还努力通过实现扩展AllennLP的实用模块和模型来使nlp-models有用。有时,在经过彻底测试之后,我会贡献我在这里工作的作品。
概述
在高级,该项目的结构模仿了Allennlp的结构。也就是说,NLPETE中的子模型的组织方式与AllennLP完全相同。但是我还提供了一组脚本,这些脚本可以自动使用经常使用的命令序列,例如运行测试或实验。 Makefile用作这些脚本的常见接口:
-
make train:火车一个模型。这基本上是围绕allennlp train包装器,但提供了一个默认的序列化目录,并自动为同一实验的不同运行序列创建了序列化目录的子目录。 -
make tensorboard:本地运行张板实例。 -
make test:相当于跑步make typecheck,make lint,make unit-test并make check-scripts。 -
make typecheck:运行mypy typechecker。 -
make lint:运行PydocStyle,Flake8和Black。 -
make unit-test:使用Pytest进行所有单位测试。 -
make check-scripts:运行其他一些脚本,以检查其他测试未涵盖的其他内容。 -
make create-branch:围绕GIT功能的包装器,以创建一个新的分支并将其推向上游。您可以在发行编号后命名一个分支,其中make create-branch issue=NUM,也可以给它一个任意名称,并带有make create-branch name="my-branch"。 -
make data/DATASETNAME.tar.gz:在data/目录中提取数据集。只需用该目录中的.tar.gz文件之一的Basename替换DATASETNAME即可。
入门
设置Python环境的推荐方法是使用Pipenv 。安装Pipenv后,只需运行
pipenv install --pre --dev --python 3.6
从该存储库的克隆的根部内。
如果您想使用Python 3.7,将3.6换成3.6。
设置环境后,您可以使用Allennlp模型配置文件定义自己的实验,然后运行
make train
# ... follow the prompts to specify the path to your model config and serialization directory.
作为您应该能够立即运行的一个示例,我提供了一个库存和人工数据集的实现。要训练此模型,请运行以下内容:
# Extract data. make data/greetings.tar.gz # Train model. When prompted for the model file, enter \"experiments/greetings/copynet.json\". # This took (~3-5 minutes on a single GTX 1070). make train
注意:
experiments/文件夹中的所有模型配置都定义为在GPU#0上运行。因此,如果您没有可用的GPU或想使用其他GPU,则需要在实验配置文件中修改trainer.cuda_device字段。
实施的模型
CAUPERNET:一个结合复制机制的顺序到序列模型,该模型即使这些模型不属于目标词汇,该模型即使它们不属于目标句子。该体系结构显示了机器翻译和语义解析任务的有希望的结果。有关使用的示例,请参见
- 实验/问候/唱片
- 实验/nl2bash/courdernet.json
可用数据集
为了方便起见,该项目提供了一些准备就绪的培训数据集和脚本,以吸引和prepocoress其他一些有用的数据集。这是到目前为止的清单:
问候:一个简单的问候数据集(源句子)和答复(目标句子)。问候是“嗨,我叫乔恩·斯诺(Jon Snow)”,而答复的格式是“很高兴认识你,乔恩·斯诺(Jon Snow)!”。这是完全人造的,只是为了显示copynet中复制机制的有用性。
# Extract data.
make data/greetings.tar.gz
NL2Bash:一个具有挑战性的数据集,由BASH单线组成,以及相应的专家描述。目标是将自然语言描述转换为bash命令。
# Extract data.
make data/nl2bash.tar.gz
WMT 2015:由Fast.ai主持,这是一个数据集,该数据集为2250万英文 /法语句子对,可用于训练英语,以向法语或法语训练英语机器翻译系统。
# Download, extract, and preprocess data (big file, may take around 10 minutes).
./scripts/data/pull_wmt.sh
问题和改进
如果您找到了错误或有任何疑问,请随时在Github上提交问题。我也总是很感谢拉力请求。
