|
@@ -0,0 +1,73 @@
|
|
|
+**AllenNLP简介**
|
|
|
+
|
|
|
+* 超模块化和轻量化。你可以使用自己喜欢的组件与 PyTorch 无缝连接。
|
|
|
+
|
|
|
+* 经过广泛测试,易于扩展。测试覆盖率超过 90%,示例模型为你提供了很好的模板。
|
|
|
+
|
|
|
+* 真正的填充和覆盖,让你可以毫无痛苦地轻松实现正确的模型。
|
|
|
+
|
|
|
+* 易于实验。可以通过符合 json 规范的全面记录重现实验过程。
|
|
|
+
|
|
|
+AllenNLP包含的高质量模型有 Semantic Role Labelling、Question and Answering \(BiDAF\)、Entailment(可分注意力)等等。AllenNLP主要由 Allen 人工智能实验室构建和维护,该项目也与华盛顿大学等机构共同合作。AllenNLP是一个基于Apache 2.0的NLP研究库,构建于PyTorch之上,可为开发者提供语言任务中的各种业内最佳训练模型。AllenNLP可以让你轻松地设计和评估几乎所有NLP问题上最新的深度学习模型,并同基础设施一起让这些模型自由运行在云端和你的笔记本电脑上。
|
|
|
+
|
|
|
+链接:[http://allennlp.org](http://allennlp.org)
|
|
|
+
|
|
|
+GitHub:[https://github.com/allenai/allennlp](https://github.com/allenai/allennlp)
|
|
|
+
|
|
|
+
|
|
|
+**设置 CONDA 开发环境**
|
|
|
+
|
|
|
+Conda可为特定版本的 Python 设置所有为运行 AllenNLP 的依赖环境。
|
|
|
+
|
|
|
+1. 下载与安装Conda
|
|
|
+
|
|
|
+2. 下载安装allennlp
|
|
|
+```
|
|
|
+cd allennlp
|
|
|
+conda create -n allennlp python=3.6
|
|
|
+source activate allennlp
|
|
|
+INSTALL\_TEST\_REQUIREMENTS="true" ./scripts/install\_requirements.sh
|
|
|
+```
|
|
|
+
|
|
|
+6.访问 [http://pytorch.org/,安装相关的](http://pytorch.org/,安装相关的) pytorch 包。
|
|
|
+
|
|
|
+7.为重复实验设置 PYTHONHASHSEED。你可能会在.bashrc 中需要这样做。
|
|
|
+
|
|
|
+1.export PYTHONHASHSEED=2157
|
|
|
+
|
|
|
+现在,你应该可以用 pytest -v 来测试安装结果了。
|
|
|
+
|
|
|
+**构建 Docker 开发环境**
|
|
|
+```
|
|
|
+docker pull allennlp/allennlp:latest
|
|
|
+docker build --tag allennlp/allennlp .
|
|
|
+docker images allennlp
|
|
|
+docker run --rm -it allennlp/allennlp
|
|
|
+```
|
|
|
+· 通过 `allennlp/run bulk` 运行示例句子
|
|
|
+· 通过 `allennlp/run serve` 启动 web 服务来托管模型
|
|
|
+· 通过 python 从 Python 解释器与 AllenNLP 之间交互编码
|
|
|
+
|
|
|
+**设置 Kubernetes 开发环境**
|
|
|
+
|
|
|
+1. 设置 kubectl 连接到你的 Kubernetes 集群中。
|
|
|
+2. 运行` kubectl create -f /path/to/kubernetes-dev-environment.yaml`。这会在集群上创建一个「job」,随后可以使用 bash 连接。请注意,你将使用将推送的最后一个 Docker 文件,因此源代码可能与本地内容不符。
|
|
|
+3. 检索使用` kubectl describe job <JOBNAME> --namespace=allennlp` 创建的 pod 名称。pod 名称将会是你的 job 名之后加上一些其他字符。
|
|
|
+4. 使用 `kubectl exec -it <PODNAME> bash` 获取容器内的 shell。
|
|
|
+5. 完成后,不要忘记使用 `kubectl delete -f /path/to/kubernetes-dev-environment.yaml `来关闭 job。
|
|
|
+
|
|
|
+**模型**
|
|
|
+
|
|
|
+借助易于运行的基础设施,AllenNLP 在合理的运行时间内展现了强大性能。
|
|
|
+
|
|
|
+**机器理解**
|
|
|
+
|
|
|
+机器理解(MC)模型通过选择证据文本中的答案范围回答自然语言问题。AllenNLP MC 模型是 BiDAF 或者双向注意力流的再实现 \(参见 Seo et al, 2017\),后者是一个广泛应用的 MC 基线并在 SQuAD 数据集上获得了几近当前最佳的精确度。AllenNLP BIDAF 模型在 SQuAD 开发套件上实现了 68.7 的 EM 得分,略高于原始 BIDAF 系统 67.7 的分值,尽管后者也在 10x 的提速上做了训练(p2.xlarge 上 4 个小时)。
|
|
|
+
|
|
|
+**语义角色标注**
|
|
|
+
|
|
|
+语义角色标注(SRL)模型恢复了语句的潜在谓词参数结构。SRL 构建了回答语义基本问题的表征,包括「谁」对「谁」做了「什么」等等。AllenNLP SRL 模型是深度 BiLSTM 模型 \(He et al, 2017\) 的再实现,它非常匹配已公开的模型,在 CoNLL 2012 取得了 78.9 的 F1 分数。
|
|
|
+
|
|
|
+**文本蕴涵**
|
|
|
+
|
|
|
+文本蕴涵(TE)模型使用一对语句预测第一句中的事实是否蕴含着第二句的事实。AllenNLP TE 模型是可分解式注意力模型的再实现(Parikh et al, 2017),后者是一个广泛使用的 TE 基线,它相对简单,并在 SNLI 数据集取得了几近当前最佳的性能。AllenNLP TE 模型在 SNLI 测试数据集上的精确度高达 84.7,相比之下原始系统的分值是 86.3。
|