语义分析-SDParser

# SDP_2018(语义分析/Pytorch) ## 1. 概述 此模型基于哈工大SCIR实验室王宇轩等人发表在AAAI2018上的论文[A Neural Transition-Based Approach for Semantic Dependency Graph Parsing](http://people.csail.mit.edu/jiang_guo/papers/aaai2018-nnsdp.pdf)实现。我们提供了预训练的模型(训练数据集:[SemEval-2016 Task 9 Datasets](https://github.com/HIT-SCIR/SemEval-2016)),可以接收用户提供的CoNLL格式文本数据进行推理预测。此外,我们也提供了训练代码和可用于训练的模型,用户可自行上传CoNLL格式训练数据进行定制化模型训练。训练后生成的模型可直接在ModelArts平台部署成在线服务。 根据原作者的论文,本模型使用的语义分析评测指标为:UF和LF,详情可参考论文。 本算法的完整信息如下表所示: | 项目 | 说明 | | -------------- | ------------------------------------------------------------ | | 参考论文 | [A Neural Transition-Based Approach for Semantic Dependency Graph Parsing](http://people.csail.mit.edu/jiang_guo/papers/aaai2018-nnsdp.pdf) | | 使用框架 | Pytorch-1.6.0 | | 训练集 | [SemEval-2016 Task 9 Datasets](https://github.com/HIT-SCIR/SemEval-2016)中的text训练集和news训练集 | | 训练总epoch数 | 30 | | 训练batch_size | 30 | | 训练硬件及耗时 | TEXT训练集 , 1 * nvidia-v100 32GiB , 4小时 | | 测试集 | [SemEval-2016 Task 9 Datasets](https://github.com/HIT-SCIR/SemEval-2016)中的text测试集和news测试集 | | 原论文性能 | text数据集:LF:72.92,UF:85.71;news数据集:LF:63.30,UF:81.14 | | 本算法性能 | text数据集:LF:75.29,UF:86.19;news数据集:LF:66.02,UF:81.28 | ## 2. 训练 ### 2.1 算法基本信息 - 任务类型:语义分析 - 支持的框架引擎:PyTorch-1.6.0-python3.6 - 算法输入: - 存储在OBS上的数据集,必须按照CoNLL格式进行存储。 - 存储在OBS上的预训练词向量、字向量文件(使用giga语料训练)。 - (**可选**)我们在 [SemEval-2016 Task 9 Datasets](https://github.com/HIT-SCIR/SemEval-2016)上预训练的模型(性能见第1节表格)。 - 算法输出: - 用于Pytorch推理的pth本地模型。 + 代码结构: ``` src |- code |- pip-requirements.txt |- stack_rnn_cell.py |- stack_rnn.py |- transition_sdp_metric.py |- transition_sdp_predictor.py |- config.json |- supar_config.py |- transition_sdp_reader.py |- customize_servce.py |- transition_parser_sdp.py |- train.py |- data |- SemEval-2016 |- train |- text.train.conll |- news.train.conll |- validation |- text.validation.conll |- news.validation.conll |- test |- text.test.conll |- news.test.conll |- allennlp |- allennlp-1.2.0-py3-none-any.whl |- allennlp-1.2.0.tar.gz |- giga |- giga.100.txt |- giga.chars.100.txt |- model |- SDP_Model.pt (可选) ``` ### 2.2. 可变训练参数说明 | 名称 | 默认值 | 类型 | 是否必填 | 描述 | | ------------------ | ------------------------------------------------------------ | ----- | -------- | :----------------------------------------------------------- | | train_dataset | /home/work/modelarts/inputs/SDP_data/SemEval-2016r/train/text.train.conll | str | 是 | 训练集数据的路径(eval=False时必需,eval=True时不必需) | | validation_dataset | /home/work/modelarts/inputs/SDP_data/SemEval-2016/validation/text.valid.conll | str | 是 | 验证集数据的路径(eval=False时必需,eval=True时不必需) | | test_dataset | /home/work/modelarts/inputs/SDP_data/SemEval-2016/test/text.test.conll | str | 是 | 测试集数据的路径(eval=False时不必需,eval=True时必需) | | data_url | ModelArts所需参数 | str | 是 | 在ModelArts中创建训练作业时,输入的映射路径 | | train_url | ModelArts所需参数 | str | 是 | 在ModelArts中创建训练作业时,输出的映射路径 | | word2vec_path | /home/work/modelarts/inputs/SDP_data/giga/giga.100.txt | str | 否 | 预训练词向量路径 | | char2vec_path | /home/work/modelarts/inputs/SDP_data/giga/giga.chars.100.txt | str | 否 | 预训练字向量路径 | | save_folder | /home/work/modelarts/outputs/SDP_output/ | str | 否 | 模型保存文件夹 | | lr | 1e-3 | float | 否 | 梯度下降算法的学习率 | | gpu_train | True | str | 否 | 是否使用GPU训练 | | ngpu | 1 | int | 否 | 用于训练的GPU数目 | | batch_size | 30 | int | 否 | batch规模 | | epoch | 30 | int | 否 | 训练最大轮数 | | shuffle | True | str | 否 | 是否打乱训练集 | | word_dim | 100 | int | 否 | 词向量维度 | | char_dim | 100 | int | 否 | 字向量维度 | | pos_tag_dim | 50 | int | 否 | 词性嵌入向量维度 | | action_dim | 50 | int | 否 | 动作嵌入向量维度 | | hidden_dim | 200 | int | 否 | MLP分类器隐藏层维度 | | num_layers | 2 | int | 否 | MLP分类器隐藏层层数 | | patience | 5 | int | 否 | 模型在验证集上多少轮没有提升后训练结束 | | validation_metric | +UF | str | 否 | 验证集评价参数,用于early-stopping | | load_weight | /home/work/modelarts/inputs/SDP_data/model/SDP_model.pt | str | 否 | pth模型文件路径,支持加载OBS上的pth模型进行训练,默认路径时支持加载我们预训练的模型作为初始化参数;支持设置为中间过程保存的模型进行断点续训;设置为None时直接进行训练。 | | eval | False | str | 否 | 是否进行模型评估,默认为False,如果设为True,则必须设定load_weight参数,加载指定的pth模型,在创建训练作业时指定的数据存储位置验证集上进行预测。 | |cuda_visiable|0|str|否|选择你用于训练的GPU| ### 2.3 模型评估 设置load_weight参数,加载指定的模型文件,并将eval参数设为True,可以对现有模型在测试集上进行评估。测试集文件内容示例如下: ``` 1 妈妈 妈妈 NN NN _ 5 Agt _ _ 2 把 把 P P _ 4 mPrep _ _ 3 旧 旧 JJ JJ _ 4 Desc _ _ 4 窗帘 窗帘 NN NN _ 5 Pat _ _ 5 撕成 撕成 VV VV _ 0 Root _ _ 6 了 了 AS AS _ 5 mTime _ _ 7 抹布 抹布 NN NN _ 5 Pat _ _ 8 。 。 PU PU _ 5 mPunc _ _ 1 叔叔 叔叔 NN NN _ 2 Agt _ _ 2 说 说 VV VV _ 0 Root _ _ 3 : : PU PU _ 2 mPunc _ _ 4 “ “ PU PU _ 5 mPunc _ _ 5 有 有 VE VE _ 2 dCont _ _ 6 。 。 PU PU _ 5 mPunc _ _ ``` 评估完成后,模型会以返回测试集预测结果以及性能指标,并保存到创建训练作业时指定的训练输出位置上。 ### 2.4 训练输出文件 训练完成后的输出文件如下: ``` |- pip-requirements.txt |- stack_rnn_cell.py |- stack_rnn.py |- transition_sdp_metric.py |- transition_sdp_predictor.py |- config.json |- supar_config.py |- transition_sdp_reader.py |- customize_servce.py |- transition_parser_sdp.py |- train.py |- SDP_Model.pt ``` 如果设置eval为True,输出文件如下: ``` |- test_result.txt ``` ## 3. 案例指导 本模型支持用户创建训练作业、导入模型、创建在线服务并且批量在线预测,详细案例指导可参考:https://marketplace.huaweicloud.com/markets/aihub/article/detail/?content_id=b3a4120d-0c49-4d43-ac5b-1ebf9cf75bc5
SDP_2018(语义分析/Pytorch)
1. 概述
此模型基于哈工大SCIR实验室王宇轩等人发表在AAAI2018上的论文A Neural Transition-Based Approach for Semantic Dependency Graph Parsing实现。我们提供了预训练的模型(训练数据集:SemEval-2016 Task 9 Datasets),可以接收用户提供的CoNLL格式文本数据进行推理预测。此外,我们也提供了训练代码和可用于训练的模型,用户可自行上传CoNLL格式训练数据进行定制化模型训练。训练后生成的模型可直接在ModelArts平台部署成在线服务。
根据原作者的论文,本模型使用的语义分析评测指标为:UF和LF,详情可参考论文。
本算法的完整信息如下表所示:
项目 | 说明 |
---|---|
参考论文 | A Neural Transition-Based Approach for Semantic Dependency Graph Parsing |
使用框架 | Pytorch-1.6.0 |
训练集 | SemEval-2016 Task 9 Datasets中的text训练集和news训练集 |
训练总epoch数 | 30 |
训练batch_size | 30 |
训练硬件及耗时 | TEXT训练集 , 1 * nvidia-v100 32GiB , 4小时 |
测试集 | SemEval-2016 Task 9 Datasets中的text测试集和news测试集 |
原论文性能 | text数据集:LF:72.92,UF:85.71;news数据集:LF:63.30,UF:81.14 |
本算法性能 | text数据集:LF:75.29,UF:86.19;news数据集:LF:66.02,UF:81.28 |
2. 训练
2.1 算法基本信息
-
任务类型:语义分析
-
支持的框架引擎:PyTorch-1.6.0-python3.6
-
算法输入:
- 存储在OBS上的数据集,必须按照CoNLL格式进行存储。
- 存储在OBS上的预训练词向量、字向量文件(使用giga语料训练)。
- (可选)我们在 SemEval-2016 Task 9 Datasets上预训练的模型(性能见第1节表格)。
-
算法输出:
- 用于Pytorch推理的pth本地模型。
- 代码结构:
src
|- code
|- pip-requirements.txt
|- stack_rnn_cell.py
|- stack_rnn.py
|- transition_sdp_metric.py
|- transition_sdp_predictor.py
|- config.json
|- supar_config.py
|- transition_sdp_reader.py
|- customize_servce.py
|- transition_parser_sdp.py
|- train.py
|- data
|- SemEval-2016
|- train
|- text.train.conll
|- news.train.conll
|- validation
|- text.validation.conll
|- news.validation.conll
|- test
|- text.test.conll
|- news.test.conll
|- allennlp
|- allennlp-1.2.0-py3-none-any.whl
|- allennlp-1.2.0.tar.gz
|- giga
|- giga.100.txt
|- giga.chars.100.txt
|- model
|- SDP_Model.pt (可选)
2.2. 可变训练参数说明
名称 | 默认值 | 类型 | 是否必填 | 描述 |
---|---|---|---|---|
train_dataset | /home/work/modelarts/inputs/SDP_data/SemEval-2016r/train/text.train.conll | str | 是 | 训练集数据的路径(eval=False时必需,eval=True时不必需) |
validation_dataset | /home/work/modelarts/inputs/SDP_data/SemEval-2016/validation/text.valid.conll | str | 是 | 验证集数据的路径(eval=False时必需,eval=True时不必需) |
test_dataset | /home/work/modelarts/inputs/SDP_data/SemEval-2016/test/text.test.conll | str | 是 | 测试集数据的路径(eval=False时不必需,eval=True时必需) |
data_url | ModelArts所需参数 | str | 是 | 在ModelArts中创建训练作业时,输入的映射路径 |
train_url | ModelArts所需参数 | str | 是 | 在ModelArts中创建训练作业时,输出的映射路径 |
word2vec_path | /home/work/modelarts/inputs/SDP_data/giga/giga.100.txt | str | 否 | 预训练词向量路径 |
char2vec_path | /home/work/modelarts/inputs/SDP_data/giga/giga.chars.100.txt | str | 否 | 预训练字向量路径 |
save_folder | /home/work/modelarts/outputs/SDP_output/ | str | 否 | 模型保存文件夹 |
lr | 1e-3 | float | 否 | 梯度下降算法的学习率 |
gpu_train | True | str | 否 | 是否使用GPU训练 |
ngpu | 1 | int | 否 | 用于训练的GPU数目 |
batch_size | 30 | int | 否 | batch规模 |
epoch | 30 | int | 否 | 训练最大轮数 |
shuffle | True | str | 否 | 是否打乱训练集 |
word_dim | 100 | int | 否 | 词向量维度 |
char_dim | 100 | int | 否 | 字向量维度 |
pos_tag_dim | 50 | int | 否 | 词性嵌入向量维度 |
action_dim | 50 | int | 否 | 动作嵌入向量维度 |
hidden_dim | 200 | int | 否 | MLP分类器隐藏层维度 |
num_layers | 2 | int | 否 | MLP分类器隐藏层层数 |
patience | 5 | int | 否 | 模型在验证集上多少轮没有提升后训练结束 |
validation_metric | +UF | str | 否 | 验证集评价参数,用于early-stopping |
load_weight | /home/work/modelarts/inputs/SDP_data/model/SDP_model.pt | str | 否 | pth模型文件路径,支持加载OBS上的pth模型进行训练,默认路径时支持加载我们预训练的模型作为初始化参数;支持设置为中间过程保存的模型进行断点续训;设置为None时直接进行训练。 |
eval | False | str | 否 | 是否进行模型评估,默认为False,如果设为True,则必须设定load_weight参数,加载指定的pth模型,在创建训练作业时指定的数据存储位置验证集上进行预测。 |
cuda_visiable | 0 | str | 否 | 选择你用于训练的GPU |
2.3 模型评估
设置load_weight参数,加载指定的模型文件,并将eval参数设为True,可以对现有模型在测试集上进行评估。测试集文件内容示例如下:
1 妈妈 妈妈 NN NN _ 5 Agt _ _
2 把 把 P P _ 4 mPrep _ _
3 旧 旧 JJ JJ _ 4 Desc _ _
4 窗帘 窗帘 NN NN _ 5 Pat _ _
5 撕成 撕成 VV VV _ 0 Root _ _
6 了 了 AS AS _ 5 mTime _ _
7 抹布 抹布 NN NN _ 5 Pat _ _
8 。 。 PU PU _ 5 mPunc _ _
1 叔叔 叔叔 NN NN _ 2 Agt _ _
2 说 说 VV VV _ 0 Root _ _
3 : : PU PU _ 2 mPunc _ _
4 “ “ PU PU _ 5 mPunc _ _
5 有 有 VE VE _ 2 dCont _ _
6 。 。 PU PU _ 5 mPunc _ _
评估完成后,模型会以返回测试集预测结果以及性能指标,并保存到创建训练作业时指定的训练输出位置上。
2.4 训练输出文件
训练完成后的输出文件如下:
|- pip-requirements.txt
|- stack_rnn_cell.py
|- stack_rnn.py
|- transition_sdp_metric.py
|- transition_sdp_predictor.py
|- config.json
|- supar_config.py
|- transition_sdp_reader.py
|- customize_servce.py
|- transition_parser_sdp.py
|- train.py
|- SDP_Model.pt
如果设置eval为True,输出文件如下:
|- test_result.txt
3. 案例指导
本模型支持用户创建训练作业、导入模型、创建在线服务并且批量在线预测,详细案例指导可参考:https://marketplace.huaweicloud.com/markets/aihub/article/detail/?content_id=b3a4120d-0c49-4d43-ac5b-1ebf9cf75bc5
SDP_2018(语义分析/Pytorch)
1. 概述
此模型基于哈工大SCIR实验室王宇轩等人发表在AAAI2018上的论文A Neural Transition-Based Approach for Semantic Dependency Graph Parsing实现。我们提供了预训练的模型(训练数据集:SemEval-2016 Task 9 Datasets),可以接收用户提供的CoNLL格式文本数据进行推理预测。此外,我们也提供了训练代码和可用于训练的模型,用户可自行上传CoNLL格式训练数据进行定制化模型训练。训练后生成的模型可直接在ModelArts平台部署成在线服务。
根据原作者的论文,本模型使用的语义分析评测指标为:UF和LF,详情可参考论文。
本算法的完整信息如下表所示:
项目 | 说明 |
---|---|
参考论文 | A Neural Transition-Based Approach for Semantic Dependency Graph Parsing |
使用框架 | Pytorch-1.6.0 |
训练集 | SemEval-2016 Task 9 Datasets中的text训练集和news训练集 |
训练总epoch数 | 30 |
训练batch_size | 30 |
训练硬件及耗时 | TEXT训练集 , 1 * nvidia-v100 32GiB , 4小时 |
测试集 | SemEval-2016 Task 9 Datasets中的text测试集和news测试集 |
原论文性能 | text数据集:LF:72.92,UF:85.71;news数据集:LF:63.30,UF:81.14 |
本算法性能 | text数据集:LF:75.29,UF:86.19;news数据集:LF:66.02,UF:81.28 |
2. 训练
2.1 算法基本信息
-
任务类型:语义分析
-
支持的框架引擎:PyTorch-1.6.0-python3.6
-
算法输入:
- 存储在OBS上的数据集,必须按照CoNLL格式进行存储。
- 存储在OBS上的预训练词向量、字向量文件(使用giga语料训练)。
- (可选)我们在 SemEval-2016 Task 9 Datasets上预训练的模型(性能见第1节表格)。
-
算法输出:
- 用于Pytorch推理的pth本地模型。
- 代码结构:
src
|- code
|- pip-requirements.txt
|- stack_rnn_cell.py
|- stack_rnn.py
|- transition_sdp_metric.py
|- transition_sdp_predictor.py
|- config.json
|- supar_config.py
|- transition_sdp_reader.py
|- customize_servce.py
|- transition_parser_sdp.py
|- train.py
|- data
|- SemEval-2016
|- train
|- text.train.conll
|- news.train.conll
|- validation
|- text.validation.conll
|- news.validation.conll
|- test
|- text.test.conll
|- news.test.conll
|- allennlp
|- allennlp-1.2.0-py3-none-any.whl
|- allennlp-1.2.0.tar.gz
|- giga
|- giga.100.txt
|- giga.chars.100.txt
|- model
|- SDP_Model.pt (可选)
2.2. 可变训练参数说明
名称 | 默认值 | 类型 | 是否必填 | 描述 |
---|---|---|---|---|
train_dataset | /home/work/modelarts/inputs/SDP_data/SemEval-2016r/train/text.train.conll | str | 是 | 训练集数据的路径(eval=False时必需,eval=True时不必需) |
validation_dataset | /home/work/modelarts/inputs/SDP_data/SemEval-2016/validation/text.valid.conll | str | 是 | 验证集数据的路径(eval=False时必需,eval=True时不必需) |
test_dataset | /home/work/modelarts/inputs/SDP_data/SemEval-2016/test/text.test.conll | str | 是 | 测试集数据的路径(eval=False时不必需,eval=True时必需) |
data_url | ModelArts所需参数 | str | 是 | 在ModelArts中创建训练作业时,输入的映射路径 |
train_url | ModelArts所需参数 | str | 是 | 在ModelArts中创建训练作业时,输出的映射路径 |
word2vec_path | /home/work/modelarts/inputs/SDP_data/giga/giga.100.txt | str | 否 | 预训练词向量路径 |
char2vec_path | /home/work/modelarts/inputs/SDP_data/giga/giga.chars.100.txt | str | 否 | 预训练字向量路径 |
save_folder | /home/work/modelarts/outputs/SDP_output/ | str | 否 | 模型保存文件夹 |
lr | 1e-3 | float | 否 | 梯度下降算法的学习率 |
gpu_train | True | str | 否 | 是否使用GPU训练 |
ngpu | 1 | int | 否 | 用于训练的GPU数目 |
batch_size | 30 | int | 否 | batch规模 |
epoch | 30 | int | 否 | 训练最大轮数 |
shuffle | True | str | 否 | 是否打乱训练集 |
word_dim | 100 | int | 否 | 词向量维度 |
char_dim | 100 | int | 否 | 字向量维度 |
pos_tag_dim | 50 | int | 否 | 词性嵌入向量维度 |
action_dim | 50 | int | 否 | 动作嵌入向量维度 |
hidden_dim | 200 | int | 否 | MLP分类器隐藏层维度 |
num_layers | 2 | int | 否 | MLP分类器隐藏层层数 |
patience | 5 | int | 否 | 模型在验证集上多少轮没有提升后训练结束 |
validation_metric | +UF | str | 否 | 验证集评价参数,用于early-stopping |
load_weight | /home/work/modelarts/inputs/SDP_data/model/SDP_model.pt | str | 否 | pth模型文件路径,支持加载OBS上的pth模型进行训练,默认路径时支持加载我们预训练的模型作为初始化参数;支持设置为中间过程保存的模型进行断点续训;设置为None时直接进行训练。 |
eval | False | str | 否 | 是否进行模型评估,默认为False,如果设为True,则必须设定load_weight参数,加载指定的pth模型,在创建训练作业时指定的数据存储位置验证集上进行预测。 |
cuda_visiable | 0 | str | 否 | 选择你用于训练的GPU |
2.3 模型评估
设置load_weight参数,加载指定的模型文件,并将eval参数设为True,可以对现有模型在测试集上进行评估。测试集文件内容示例如下:
1 妈妈 妈妈 NN NN _ 5 Agt _ _
2 把 把 P P _ 4 mPrep _ _
3 旧 旧 JJ JJ _ 4 Desc _ _
4 窗帘 窗帘 NN NN _ 5 Pat _ _
5 撕成 撕成 VV VV _ 0 Root _ _
6 了 了 AS AS _ 5 mTime _ _
7 抹布 抹布 NN NN _ 5 Pat _ _
8 。 。 PU PU _ 5 mPunc _ _
1 叔叔 叔叔 NN NN _ 2 Agt _ _
2 说 说 VV VV _ 0 Root _ _
3 : : PU PU _ 2 mPunc _ _
4 “ “ PU PU _ 5 mPunc _ _
5 有 有 VE VE _ 2 dCont _ _
6 。 。 PU PU _ 5 mPunc _ _
评估完成后,模型会以返回测试集预测结果以及性能指标,并保存到创建训练作业时指定的训练输出位置上。
2.4 训练输出文件
训练完成后的输出文件如下:
|- pip-requirements.txt
|- stack_rnn_cell.py
|- stack_rnn.py
|- transition_sdp_metric.py
|- transition_sdp_predictor.py
|- config.json
|- supar_config.py
|- transition_sdp_reader.py
|- customize_servce.py
|- transition_parser_sdp.py
|- train.py
|- SDP_Model.pt
如果设置eval为True,输出文件如下:
|- test_result.txt
3. 案例指导
本模型支持用户创建训练作业、导入模型、创建在线服务并且批量在线预测,详细案例指导可参考:https://marketplace.huaweicloud.com/markets/aihub/article/detail/?content_id=b3a4120d-0c49-4d43-ac5b-1ebf9cf75bc5