谷歌的注意力机制模型:Attention is all you need

基于注意力机制的总结

这个项目包含Abs。神经抽象概括系统从论文

     抽象概括的神经注意模型。
     亚历山大·拉什,Sumit Chopra,Jason Weston。

该版本包括以下代码:

*提取汇总数据集
*训练神经摘要模型
*用ROUGE构建评估集
*调优提取功能

建立

要运行系统,您将需要[Torch7](http://torch.ch/)
安装。您还将需要Python 2.7,NLTK和
GNU并行运行数据处理脚本。另外
代码目前需要一个CUDA GPU进行训练和解码。

最后脚本要求您设置$ ABS环境变量。

    >export ABS = $ PWD
    > export LUA_PATH =“$ LUA_PATH; $ ABS / ?. lua”

构建数据集

该模型被训练从第一行执行标题生成
的报纸文章。由于系统是完全数据驱动的
需要一大批对齐的输入标题对进行培训。

为了提供这些对,我们使用[注释Gigaword
语料库](https://catalog.ldc.upenn.edu/LDC2012T21)作为我们的主要数据
组。语料库适用于最不发达国家,但需要成员资格。一旦
获得注释的千兆字,您可以简单地运行提供的
脚本以文本格式提取数据集。

生成数据

要构建数据集,运行以下脚本来生成working_dir /
其中`working_dir /'是要存储的目录的路径
处理数据。脚本“construct_data.sh”利用“parallel”
实用程序,所以请确保它在您的路径。
警告:这可能需要几个小时才能运行。

     > ./construct_data.sh agiga / working_dir /

数据文件的格式

上述命令构建了分割形式为split.type.txt的对齐文件
是火车/有效/测试,类型是标题/文章。

脚本的输出是几个对齐的纯文本文件。
每行每行有一个标题或文章。

     > head train.title.txt
     澳大利亚经常账户赤字大幅收窄
     南菲律宾至少有两人死亡
     澳大利亚股市收盘下跌#%
     特使敦促北韩重新启动核残疾
     斯洛伐克宣布减税刺激经济

这些文件可用于训练ABS系统或由其他基准模型使用。

训练模型

一旦构建了数据集,我们提供了一个简单的脚本来训练
该模型。

   > ./train_model.sh working_dir / model.th

培训过程分为两个阶段。首先我们转换文本
文件转换成通用输入标题矩阵,然后我们训练一个
条件NNLM对此表示。

一旦模型经过充分的训练(这可能需要3-4天),
您可以使用测试脚本来生成任何纯文本文件的摘要

   > ./test_model.sh working_dir / valid.article.filter.txt model.th length_of_summary

培训选项

这些脚本使用$ ABS / summary /中提供的Torch代码

有两个主要的Torch进入点。一个用于训练模型
从数据矩阵,另一个用于在纯文本上评估模型。

     总结/ train.lua -help

     训练一个总结模型。

       -articleDir目录包含文章训练矩阵。 []
       -titleDir目录包含标题训练矩阵。 []
       -validArticleDir目录包含用于验证的文章。 []
       -validTitleDir目录包含用于验证的标题矩阵。 []
       -auxModel要使用的编码器型号。 [弓]
       -bowDim文章嵌入大小。 [50]
       -attenPool注意模型池大小。 [5]
       -hiddenUnits Conv网络编码器隐藏单位。 [1000]
       -kernelWidth Conv网络编码器内核宽度。 [5]
       -epochs训练的时代数[5]
       -miniBatchSize培训小批量的大小。 [64]
       -printEvery在培训期间打印多久。 [1000]
       -modelFilename保存加载/模型的文件。 []
       -window NNLM窗口的大小。 [5]
       -embeddingDim NNLM嵌入的大小。 [50]
       -hiddenSize NNLM隐藏层的大小。 [100]
       -learningRate SGD学习率。 [0.1]

测试选项

运行脚本用于训练有素的波束搜索解码
模型。请参阅论文,了解提取物的描述
功能在解码时使用。

    > th summary / run.lua -help

    -blockRepeatWords不允许生成重复的单词。 [假]
    -allowUNK允许生成。 [假]
    -fixedLength产生正确的长度字。 [真正]
    -1mW重量为主模型。 [1]
    -beamSize光束的大小。 [100]
     - 全力提取摘要。 [假]
    -lmWeight神经模型的特征权重。 [1]
    -unigramBonus单位抽取的特征权重。 [0]
    -bigramBonu单位抽取的特征权重。 [0]
    -bigramBonus二聚体提取的特征重量。 [0]
    -trigramBonus三元组提取的特征权重。 [0]
    -lengthBonus长度的特征权重。 [0]
    -unorderBonus无序提取的特征权重。 [0]
    -modelFilename要测试的模型。 []
    -inputf输入文章文件。 []
    -nbest以ZMert格式写出nbest列表。 [假]
    长度最大长度总结.. [5]

评估数据集

我们使用文件理解会议(DUC)的共享任务来评估ABS模型。

此版本还包括与DUC共享交互的代码
标题生成任务用于处理和评估的脚本
该数据集位于DUC /目录中。

[DUC数据集](http://duc.nist.gov/duc2004/tasks.html)是
在线可用,不幸的是您必须手动填写表单
请求NIST的数据。发送请求到
[Angela Ellis](mailto:angela.ellis@nist.gov)。

处理DUC

收到凭证后,您应该获得一系列
包含用作此共享任务的一部分的数据的tar文件。

1.创建一个目录DUC_data /应该包含给定的文件

       > DUC2003 \ _Summarization \ _Documents.tgz
       > DUC2004 \ _Summarization \ _Documents.tgz
       > duc2004 \ _results.tgz
       > detagged.duc2003.abstracts.tar.gz

2.运行安装脚本(这需要python和NLTK进行标记化)

      > ./DUC/setup.sh DUC_data /

运行脚本后应该有目录

       DUC_data / clean_2003 /
       DUC_data / clean_2004 /

每个文件都包含一个文件input.txt,其中每一行都是文章的标记化第一行。

     >头DUC_data / clean_2003 / input.txt
     精神分裂症患者的药物不能阻止他们头脑中的虚构声音,在研究人员重复将磁场传送到他们大脑的小区域后,获得了一些缓解。
     两位国立大学的研究人员说,科学家试图揭示精神分裂症的神秘面纱,他们发现迄今为止最强大的证据显示,精神障碍是由基因异常引起的。
     耶鲁医学研究学院正在扩大科学家对精神分裂症与尼古丁成瘾之间联系的认识。
     探索乱序寻找秩序,研究现实的精神病精神分裂症的科学家正在变得着迷于受感染调节的大脑区域的化学环境。

以及一组参考文献:

    >头DUC_data / clean_2003 / references / task1_ref0.txt
    磁疗可缓解或减轻精神分裂症声音的发生。
    证据显示,由染色体1的基因异常引起的精神分裂症。
    研究人员检查精神分裂症与尼古丁成瘾之间联系的证据。
    科学家专注于大脑的化学环境来了解精神分裂症。
    精神分裂症研究显示了已知的和提供给患者的差异。

系统输出应添加到目录系统/ task1_ {name} .txt中。例如,该脚本包括基线PREFIX系统。

    DUC_data / clean_2003 /引用/ task1_prefix.txt

ROUGE for Eval

要评估总结,您将需要[ROUGE eval system](http://research.microsoft.com/~cyl/download/ROUGE-1.5.5.tgz)。

ROUGE脚本需要输出非常复杂的HTML表单。
为了简化这个过程,我们包括一个脚本来转换
简单的输出到ROUGE可以处理的一个。

导出ROUGE目录export ROUGE = {path_to_rouge},然后运行eval脚本

    > ./DUC/eval.sh DUC_data / clean_2003 /
    总长度
       ---------------------------------------------
       前缀ROUGE-1 Average_R:0.17831(95%-conf.int。0.16916 - 0.18736)
       前缀ROUGE-1 Average_P:0.15445(95%-conf.int。0.14683 - 0.16220)
       前缀ROUGE-1 Average_F:0.16482(95%-conf.int。0.15662 - 0.17318)
       ---------------------------------------------
       前缀ROUGE-2 Average_R:0.04936(95%-conf.int。0.04420 - 0.05452)
       前缀ROUGE-2 Average_P:0.04257(95%-conf.int。0.03794 - 0.04710)
       前缀ROUGE-2 Average_F:0.04550(95%-conf.int。0.04060 - 0.05026)

调整特征权重

对于我们的系统ABS +我们另外调整DUC的提取功能
汇总数据。我们获得了我们分发的最终功能
系统为tuning / params.best.txt

MERT调优代码本身位于tune /目录下。我们的设置
使用[ZMert](http://cs.jhu.edu/~ozaidan/zmert/)进行此过程。

应该直接调整系统的任何发展
汇总数据。采取以下步骤来运行调优
DUC-2003数据集。

首先将参考文件复制到调谐directoy。例如调整DUC-2003:

    ln -s DUC_data / clean_2003 / references / task1_ref0.txt tuning / ref.0
    ln -s DUC_data

Leave A Comment?