SRL S2S

2025-12-10 0 574

语义角色标签编码器模型

该存储库包含:

  • 论文:翻译和标签!用于语义角色标签的编码器解码器方法(EMNLP 2019介绍)
  • 作者:Angel Daza,Anette Frank

该代码在Allennlp工具包上运行。

要求

  • Python 3.6
  • Pytorch 1.0
  • Allennlp 0.8.2
  • Flair 0.4.3(用于谓词预测)

入门

设置环境

  1. 使用Anaconda创建SRL-S2S环境
 conda create -n SRL-S2S python=3.6
  1. 激活环境
 source activate SRL-S2S
  1. 在环境中安装要求:

安装Pytorch 1.0(建议使用CUDA 8的GPU版本):

 conda install pytorch torchvision cuda80 -c pytorch

安装进一步的依赖…

 bash scripts/install_requirements.sh

注意:在Mac OS X 10.14 [Mojave]上安装AllennLP时,有一些报告的问题(尤其是JSONNET模块错误)。如果安装失败,请运行以下命令:

 xcode-select --install
open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

然后再次运行install_requirlements脚本。如果问题持续存在,请尝试以下解决方法之一:

Allenai/Allennlp#1938

Google/jsonnet#573

简短教程

我们以玩具示例显示:

  • 我们的模型可以阅读的预处理和构建数据集
  • 训练模型
  • 使用训练有素的模型预测新输出

预处理

所有模型都需要JSON文件作为输入。在pre-processing文件夹中,我们包括脚本CoNLL_to_JSON.py ,以按照conll-U数据格式将文件转换为合适的输入JSON数据集。

也可以使用Text_to_JSON.py脚本将任何文本文件转换为我们的JSON格式(包括并行机器翻译文件)。

最简单的情况是将conll文件转换为json,其中源序列是句子(仅词),而目标序列是标记的句子。构建一个单语数据集以进行培训:

 python pre_processing/CoNLL_to_JSON.py \\
	--source_file datasets/raw/CoNLL2009-ST-English-trial.txt \\
	--output_file datasets/json/EN_conll09_trial.json \\
	--dataset_type mono \\
	--src_lang \"<EN>\" \\
	--token_type CoNLL09

JSON文件中的每一行EN_conll09_trial.json看起来像这样:

 {
   \"seq_words\": [\"The\", \"economy\", \"\'s\", \"temperature\", \"will\", \"be\", \"taken\", \"from\", \"several\", \"vantage\", \"points\", \"this\", \"week\", \",\", \"with\", \"readings\", \"on\", \"trade\", \",\", \"output\", \",\", \"housing\", \"and\", \"inflation\", \".\"], 
   \"BIO\": [\"O\", \"O\", \"O\", \"B-A1\", \"B-AM-MOD\", \"O\", \"B-V\", \"B-A2\", \"O\", \"O\", \"O\", \"O\", \"B-AM-TMP\", \"O\", \"B-AM-ADV\", \"O\", \"O\", \"O\", \"O\", \"O\", \"O\", \"O\", \"O\", \"O\", \"O\"], 
   \"pred_sense\": [6, \"taken\", \"take.01\", \"VBN\"], 
   \"seq_tag_tokens\": [\"The\", \"economy\", \"\'s\", \"(#\", \"temperature\", \"A1)\", \"(#\", \"will\", \"AM-MOD)\", \"be\", \"(#\", \"taken\", \"V)\", \"(#\", \"from\", \"A2)\", \"several\", \"vantage\", \"points\", \"this\", \"(#\", \"week\", \"AM-TMP)\", \",\", \"(#\", \"with\", \"AM-ADV)\", \"readings\", \"on\", \"trade\", \",\", \"output\", \",\", \"housing\", \"and\", \"inflation\", \".\"], 
   \"src_lang\": \"<EN>\", 
   \"tgt_lang\": \"<EN-SRL>\", 
   \"seq_marked\": [\"The\", \"economy\", \"\'s\", \"temperature\", \"will\", \"be\", \"<PRED>\", \"taken\", \"from\", \"several\", \"vantage\", \"points\", \"this\", \"week\", \",\", \"with\", \"readings\", \"on\", \"trade\", \",\", \"output\", \",\", \"housing\", \"and\", \"inflation\", \".\"]

}

要构建一个跨语言数据集(例如,在目标侧的英语句子作为源和德语标记的序列)运行:

 python pre_processing/CoNLL_to_JSON.py \\
	--source_file datasets/raw/CrossLang_ENDE_EN_trial.txt \\
	--target_file datasets/raw/CrossLang_ENDE_DE_trial.conll09 \\
	--output_file datasets/json/En2DeSRL.json \\
	--dataset_type cross \\
	--src_lang \"<EN>\" \\
	--tgt_lang \"<DE-SRL>\"

JSON文件En2DeSRL.json中的每一行都会像这样:

 {
	\"seq_words\": [\"We\", \"need\", \"to\", \"take\", \"this\", \"responsibility\", \"seriously\", \".\"], 
	\"BIO\": [\"O\", \"B-V\", \"O\", \"O\", \"O\", \"O\", \"O\", \"O\"], 
	\"pred_sense_origin\": [1, \"need\", \"need.01\", \"V\"], 
	\"pred_sense\": [1, \"m\\u00fcssen\", \"need.01\", \"VMFIN\"], 
	\"seq_tag_tokens\": [\"(#\", \"Wir\", \"A0)\", \"(#\", \"m\\u00fcssen\", \"V)\", \"diese\", \"Verantwortung\", \"ernst\", \"nehmen\", \".\"], 
	\"src_lang\": \"<EN>\", 
	\"tgt_lang\": \"<DE-SRL>\"
}

最后,要创建一个并行MT数据的JSON数据集文件(例如,具有英语 – 及格翻译的Europarl文件)可以运行:

 python pre_processing/Text_to_JSON.py --path datasets/raw/ \\
            --source_file mini_europarl-v7.de-en.en \\
            --target_file mini_europarl-v7.de-en.de \\
            --output datasets/json/MiniEuroparl.en_to_de.json \\
            --src_key \"<EN>\" --tgt_key \"<DE>\"

脚本pre-processing/make_all_trial.py嵌入所有预处理选项和可用数据集类型。

训练模型

  • 模型配置可在training_config文件夹和子文件夹中找到。请注意,在此配置文件中,可以操纵模型超参数,并指向所需的数据集。
  • 要训练模型,请选择一个实验配置文件(例如training_config/test/en_copynet-srl-conll09.json ),然后在主目录中运行以下命令:
 allennlp train training_config/test/en_copynet-srl-conll09.json -s saved_models/example-srl-en/ --include-package src

  • 结果和培训信息将存储在saved_models/example-srl-en目录中。
  • 注意: training_config内部包含用于纸的实验的模型超参数,应以相同的方式进行培训。

使用训练有素的模型

将txt文件转换为json

在推理时,只需要提供一个file.txt ,每行一个句子。这样,我们可以使用天赋来预测句子内部的谓词,然后使用我们的模型来预测每个谓词的SRL标签。

首先,我们需要将输入转换为JSON格式并给出所需的目标语言(例如,如果我们想要标记为德语,我们应该指示tgt_key as):

 python pre_processing/Text_to_JSON.py --source_file datasets/raw/mini_europarl-v7.de-en.en \\
             --output datasets/test/MiniEuroparl.PREDICT.json \\
             --src_key \"<EN>\" --tgt_key \"<DE-SRL>\" \\
             --predict_frames True \\
             --sense_dict datasets/aux/En_De_TopSenses.tsv

得到预测

使用训练有素的模型进行预测(使用开发集中最佳BLEU得分的检查点)运行:

 allennlp predict saved_models/example-srl-en/model.tar.gz datasets/test/MiniEuroparl.PREDICT.json \\
	--output-file saved_models/example-srl-en/output_trial.json \\
	--include-package src \\
	--predictor seq2seq-srl

其中EN_conll09_trial_to_predict.json包含要预测的源序列。

请注意,提供这些文件只是为了提供工作流程的示例,因此使用这些设置的预测将是随机的!

再现结果

为了重现本文中的结果,有必要拥有CONLL-2005和CONLL-2009共享任务数据集的许可证:

  • CONLL-2005共享任务,这是Penn Treebank数据集的一部分
  • CONLL-2009共享任务:第1部分和第2部分是LDC目录的一部分

在这里,需要公开提供法语的SRL数据(需要注册)。

使用的机器翻译公司是:

  • Europarl(英语 – 德国)
  • 联合国(英语法国)

向我们的培训的跨语言SRL数据要求:

为多语种语义角色标签生成高质量的命题银行(Akbik等,2015)。

我们在此存储库的training_config文件夹中包括了每个实验设置(单语,多语言和跨语义)的配置文件。他们必须以与上一个教程相似的方式运行。

下载源码

通过命令行克隆项目:

git clone https://github.com/Heidelberg-NLP/SRL-S2S.git

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

左子网 编程相关 SRL S2S https://www.zuozi.net/33135.html

dialogue reinforce
上一篇: dialogue reinforce
ai program translation
下一篇: ai program translation
常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、描述:源码描述(含标题)与实际源码不一致的(例:货不对板); 2、演示:有演示站时,与实际源码小于95%一致的(但描述中有”不保证完全一样、有变化的可能性”类似显著声明的除外); 3、发货:不发货可无理由退款; 4、安装:免费提供安装服务的源码但卖家不履行的; 5、收费:价格虚标,额外收取其他费用的(但描述中有显著声明或双方交易前有商定的除外); 6、其他:如质量方面的硬性常规问题BUG等。 注:经核实符合上述任一,均支持退款,但卖家予以积极解决问题则除外。
查看详情
  • 1、左子会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、左子无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在左子上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于左子介入快速处理。
查看详情

相关文章

猜你喜欢
发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务