SPRING:文本到AMR与AMR到文本的序列到序列模型
项目介绍
SPRING(Symmetric ParsIng aNd Generation)是一种新颖的语义解析与生成方法,于AAAI 2021会议上发表。此项目提供了一个无需复杂管道就能实现领先状态的Text-to-AMR解析及AMR-to-Text生成的解决方案。若在研究中使用此代码,建议在论文中引用对应的文献。
引用文献
@inproceedings{bevilacqua-etal-2021-one,
title = "{O}ne [{SPRING}] to {Rule} {T}hem {B}oth: {S}ymmetric {AMR} Semantic Parsing and Generation without a Complex Pipeline",
author = "Bevilacqua, Michele and Blloshmi, Rexhina and Navigli, Roberto",
booktitle = "Proceedings of AAAI",
year = "2021"
}
项目快速启动
确保您已安装Git和Python环境。接下来,通过以下步骤快速启动SPRING:
克隆项目
git clone https://github.com/SapienzaNLP/spring.git
cd spring
安装依赖
创建一个虚拟环境并安装必要的库:
conda create --name spring_env python=3.8
conda activate spring_env
pip install -r requirements.txt
pip install -e .
注意:因为代码兼容性原因,应使用transformers版本小于3.0且torch版本为1.5。
训练模型
修改configs/config.yaml
以配置您的实验,并选择训练方向(Text-to-AMR 或 AMR-to-Text):
python bin/train.py --config configs/config.yaml --direction amr # 文本到AMR
python bin/train.py --config configs/config.yaml --direction text # AMR到文本
模型训练结果将会保存在runs/
目录下。
应用案例和最佳实践
对于具体的应用,例如训练好的模型进行预测,您需要首先下载预训练模型,然后执行相应的预测脚本。例如,对于Text-to-AMR的预测:
python bin/predict_amrs.py \
--datasets <PATH_TO_AMR_DATA>/split/test/*.txt \
--gold-path data/tmp/amr2.0/gold_amr.txt \
--pred-path data/tmp/amr2.0/pred_amr.txt \
--checkpoint runs/your_trained_checkpoint.pt \
--beam-size 5 \
--batch-size 500 \
--device cuda \
--penman-linearization --use-pointer-tokens
请注意,为了获得与论文相同的结果,还需要对预测结果运行实体链接系统(如BLINK),并对结果进行适当的评估处理。
典型生态项目
- BLINK:用于实体链接,提高预测的准确性。
- AMR-Evaluation:用于计算Smatch分数的工具集,确保了评价的一致性和公平性。
- JAMR Tokenizer:用于文本的正确分词,特别重要当计算BLEU,chrF++, 和 Meteor等评估指标时。
这些工具的集成是实现SPRING完整功能的关键部分,确保了从训练到评估的完整性。
以上就是基于SPRING项目的快速入门指南,它为文本和抽象意义表示(AMR)之间的双向转换提供了强大的技术支持。通过实践这些建议,您可以有效地利用SPRING解决相关的自然语言处理任务。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考