🚀 对抗性数据生成的定向释义模型
本仓库提供了**(非)定向释义模型**,该模型是论文《Finding a Needle in the Adversarial Haystack: A Targeted Paraphrasing Approach For Uncovering Edge Cases with Minimal Distribution Distortion》研究的一部分。
该模型旨在生成高质量的释义,具有更高的流畅性、多样性和相关性,适用于对抗性数据生成应用。
🚀 快速开始
本模型可用于生成高质量的释义,尤其适用于对抗性数据生成。以下将详细介绍模型的相关信息,包括数据集、模型描述、应用等内容。
✨ 主要特性
- 高质量释义生成:能够生成具有高流畅性、多样性和相关性的高质量释义。
- 任务特定性:针对相关释义对进行训练,确保输出符合特定任务需求。
- 增强生成能力:生成的释义能够引入关于实体或对象的新信息,提升整体生成质量。
📦 安装指南
若要使用该模型与Parrot库进行集成,需先安装Parrot库,可运行以下命令:
pip install git+https://github.com/PrithivirajDamodaran/Parrot_Paraphraser.git
💻 使用示例
基础用法
在Transformers库中使用
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
model_name = "alykassem/FLAN-T5-Paraphraser"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSeq2SeqLM.from_pretrained(model_name)
input_text = "Paraphrase: How are you?"
inputs = tokenizer(input_text, return_tensors="pt")
outputs = model.generate(**inputs)
decoded_output = tokenizer.decode(outputs[0], skip_special_tokens=True)
print("Generated text:", decoded_output)
高级用法
在Parrot库中使用
from parrot import Parrot
import torch
import warnings
warnings.filterwarnings("ignore")
parrot = Parrot(model_tag="alykassem/FLAN-T5-Paraphraser", use_gpu=True)
phrases = [
"Can you recommend some upscale restaurants in New York?",
"What are the famous places we should not miss in Russia?"
]
for phrase in phrases:
print("-" * 100)
print("Input Phrase: ", phrase)
print("-" * 100)
para_phrases = parrot.augment(input_phrase=phrase)
for para_phrase in para_phrases:
print(para_phrase)
📚 详细文档
释义数据集
训练过程使用了精心策划的数据集,该数据集包含来自七个高质量来源的560,550个释义对:
- APT数据集(Nighojkar和Licato,2021)
- 微软研究释义语料库(MSRP)(Dolan和Brockett,2005)
- PARANMT - 50M(Wieting和Gimpel,2018)
- TwitterPPDB(Lan等人,2017)
- PIT - 2015(Xu等人,2015)
- PARADE(He等人,2020)
- Quora问题对(QQP)(Iyer等人,2017)
为确保数据的高质量和多样性,采取了以下过滤步骤:
- 移除单字重叠率超过50%的释义对,以提高词汇多样性。
- 消除共享词重排率低于50%的释义对,以保证句法多样性。
- 利用“all - MiniLM - L12 - v2”模型的余弦相似度得分,过滤掉语义相似度低于50%的释义对。
- 丢弃三元组重叠率超过70%的释义对,以增强多样性。
经过筛选后的数据集包含96,073个样本,分为训练集(76,857个)、验证集(9,608个)和测试集(9,608个)。
模型描述
释义模型基于FLAN - T5 - large构建,并在过滤后的数据集上进行了九个周期的微调。主要特点包括:
- 性能:F1 BERT得分达到75.925%,体现了卓越的流畅性和释义能力。
- 任务特定性:针对相关释义对进行训练,确保输出符合特定任务的高质量要求。
- 增强生成:生成的释义能够引入关于实体或对象的新信息,提升整体生成质量。
应用
本模型主要用于创建对抗性训练样本,能够在保持最小分布失真的同时,有效发现机器学习模型中的边缘情况。
此外,该模型还适用于一般释义目的,是一个可在各种上下文中生成高质量释义的多功能工具。它与Parrot释义库兼容,可实现无缝集成和使用。
🔧 技术细节
- 训练数据:使用了来自七个高质量来源的释义对数据集,并经过严格的过滤步骤,以确保数据的高质量和多样性。
- 模型架构:基于FLAN - T5 - large模型进行微调。
- 评估指标:使用BERT得分(F1)来评估模型的性能。
📄 许可证
本项目采用Apache - 2.0许可证。
🔖 引用
如果您发现本工作或模型有用,请引用以下论文:
@inproceedings{kassem-saad-2024-finding,
title = "Finding a Needle in the Adversarial Haystack: A Targeted Paraphrasing Approach For Uncovering Edge Cases with Minimal Distribution Distortion",
author = "Kassem, Aly and
Saad, Sherif",
editor = "Graham, Yvette and
Purver, Matthew",
booktitle = "Proceedings of the 18th Conference of the European Chapter of the Association for Computational Linguistics (Volume 1: Long Papers)",
month = mar,
year = "2024",
address = "St. Julian{'}s, Malta",
publisher = "Association for Computational Linguistics",
url = "https://aclanthology.org/2024.eacl-long.33/",
pages = "552--572",
}