该存储库包含用于培训的代码,并使用:深:深:深:
如果您使用我们的代码,请引用我们的论文如下:
@inproceedings {He2017deep,
title = {深层语义角色标签:什么有效和下一步有效},
作者= {He,Luheng和Lee,Kenton和Lewis,Mike和Zettlemoyer,Luke},
BookTitle = {计算语言学协会年会的会议录},
年= {2017}
}
./scripts/fetch_required_data.sh在Neural_SRL目录下解压缩模型(资源)。例如,在代码库目录下:
tar -zxvf resources/conll05_model.tar.gz
以下是预算模型的清单:
conll05_model.tar.gz :在Conll-2005数据集上训练的单型模型。conll05_ensemble.tar.gz :5型在Conll-2005数据集上训练的模型集合。conll05_propid_model.tar.gz :CONLL-2005上的谓词识别模型训练。conll2012_model.tar.gz :在Conll-2012数据集上训练的单型模型。conll2012_ensemble.tar.gz :5模型集合在Conll-2012数据集上进行了训练。conll2012_propid_model.tar.gz :CONLL-2012上的谓词识别模型。 python python/interactive.py --model conll05_model/ --pidmodel conll05_propid_model
跑步:
./scripts/run_end2end.sh sample_data/sentences_with_predicates.txt temp/sample.out (在cpu上)或:
./scripts/run_end2end.sh sample_data/sentences_with_predicates.txt temp/sample.out ${gpu_id} (on GPU)
请注意,该脚本将/usr/local/cuda/...添加到PATH和CUDA_LD_LIBRARY_PATH ,并从./conll05_propid_model和./conll05_ensemble加载预处理的模型,请根据自己的设置调整配置。
输入文件包含令牌化句子,每行句子。
输出文件将包含类似的内容:
约翰告诉帕特切掉树。
谓词:告诉(1)
A0:约翰
V:告诉
A2:帕特
A1:切断树
约翰告诉帕特切掉树。
谓词:剪切(4)
A0:帕特
V:切断
A1:树
predict.py将整个输入文件加载到内存中,因此最好将每个文件中的句子数量保持在50,000以下。 要在CONLL-2005和CONLL-2012数据集上复制结果,请按照以下步骤操作。
数据提供:Conll-2005共享任务,但原始单词来自Penn Treebank数据集,该数据集尚不公开。如果您有PTB语料库,则可以运行:
./scripts/fetch_and_make_conll05_data.sh /path/to/ptb/
您必须按照以下说明获取Conll-2012 Data Conll-2012,这将导致一个称为/path/to/conll-formatted-ontonotes-5.0的目录。跑步:
./scripts/make_conll2012_data.sh /path/to/conll-formatted-ontonotes-5.0
请参阅python/train.py的使用:
python python/predict.py -h
或作为快速启动,运行训练的模型(需要Conll05_ensemble):
./scripts/run_predict_conll05.sh ${gpu_id}或:
./scripts/run_predict_conll05.sh用于在CPU上运行。
用预测运行模型端到端(需要conll05_ensemble和conll05_propid_model):
./scripts/run_end_to_end_conll05.sh ${gpu_id}
运行Conll-2012型号的运行类似。
请参阅python/train.py的使用:
python python/train.py -h
使用预定义的配置文件训练SRL模型(带有金谓词): ./scripts/run_train.sh ${gpu_id}
训练谓词标识者: ./scripts/run_propid_train.sh ${gpu_id}
请注意,在训练时, train.py在FAST_RUN模型中运行,这将导致巨大的模型汇编开销。 2层型号可能需要多达几分钟,而8层型号最多需要8小时。
请参阅sample_data中的文件以及下面的说明,以了解如何格式化模型输入。
每行包含一个恰好具有谓词信息(句子中的索引,从0开始),令牌化句子和一系列标签的训练样本。如果不存在黄金标签,只需使用OS序列即可。句子和标签序列用|||分开象征。我们使用IOB2格式。所有令牌和符号都被任意的空格分开。
示例行:
2我的猫喜欢帽子。 ||| B-A0 I-A0 BV B-A1 O
格式类似于上述定义,只是每行都对应于输入句子,并且没有提供谓词信息。谓词对应于V标签,所有其他单词都标有O标签。
示例行:
他们说,我的猫喜欢帽子。 ||| Oovooovo
config包含一些用于训练SRL模型( srl_config.json和srl_small_config.json )的配置文件,以及训练predicate-iD模型( propid_config.json )
如果您有任何疑问,请联系Luheng他!