模型简介
模型特点
模型能力
使用案例
language:
- es license: apache-2.0 library_name: transformers tags:
- clickbait
- noticia
- spanish
- summary
- summarization base_model: openchat/openchat-3.5-0106 datasets:
- somosnlp/NoticIA-it metrics:
- rouge pipeline_tag: text-generation widget:
- example_title: Summary Example
messages:
- role: user content: '现在你是一个擅长拆解耸动或标题党新闻的人工智能专家。你的任务是分析带有耸动标题的新闻,并用一句话总结出标题背后的真相。\n这是新闻标题:给97岁祖母买外套后她的反应堪称梦幻\n标题提出了问题或提供了不完整信息。你需要在新闻正文中找出回应标题暗示内容的句子。尽可能引用原文,特别是人物原话。若引用他人话语,请使用引号标注。用最简练的语言回答,无需完整句子,只需聚焦核心问题。请始终用西班牙语回答。\n这是新闻正文:\nX用户@Kokreta1讲述了给97岁祖母送生日礼物外套时的对话。考虑到老人高龄,孙女特意选了符合年龄的外套,但祖母并不认同。"这外套是老奶奶款",看到礼物后老人评价道。孙女笑着表示:"明天我们一起去Bershka重买"。该品牌目标客群是追逐潮流的年轻人,因此这件礼物引发了网友热议,获得超千次点赞和近百转发。'
NoticIA-7B:西班牙语标题党新闻摘要模型
- 📖 西班牙语数据集卡片: https://huggingface.co/somosnlp/NoticIA-7B/blob/main/README_es.md
模型详情
模型描述
我们将标题党新闻定义为通过激发好奇心吸引读者点击的内容。这类标题通常采用疑问句或不完整、夸张、误导性的陈述,关键信息往往隐藏在大量无关内容之后,迫使用户浏览全文时接触更多广告。这种现象不仅降低新闻质量,还损害公众对媒体的信任,影响优质内容创造者的广告收益。
我们基于NoticIA-it数据集训练了这个70亿参数模型,能够为西班牙语标题党新闻生成简洁高质量摘要。
- 开发团队: Iker García-Ferrero, Begoña Altuna
- 资助方: SomosNLP, HuggingFace, HiTZ Zentroa
- 模型类型: 指令微调语言模型
- 语言: 西班牙语(西班牙)
- 许可协议: apache-2.0
- 基础模型: openchat/openchat-3.5-0106
- 训练数据集: https://huggingface.co/datasets/somosnlp/NoticIA-it
模型资源
- 💻 代码库: https://github.com/ikergarcia1996/NoticIA
- 📖 论文: NoticIA: 西班牙语标题党新闻摘要数据集
- 🤖 数据集与预训练模型 https://huggingface.co/collections/Iker/noticia-and-clickbaitfighter-65fdb2f80c34d7c063d3e48e
- 🔌 演示平台: https://huggingface.co/spaces/somosnlp/NoticIA-demo
- ▶️ 西班牙语演示视频: https://youtu.be/xc60K_NzUgk?si=QMqk6OzQZfKP1EUS
- 🐱💻 Somos600M黑客松: https://somosnlp.org/hackathon
使用场景
本模型专为科研设计,可用于评估特定任务模型与零样本指令模型的性能对比,也支持个人用户用于标题党新闻摘要。
直接用途
- 📖 标题党新闻摘要
- 📈 西班牙语语言模型评估
- 📚 学术资源开发(如合成数据生成)
- 🎓 其他科研用途
非适用场景
禁止使用本模型损害正规新闻机构的公信力或经济利益。
偏差、风险与局限
模型主要基于西班牙本土新闻数据训练,注释者均为西班牙人。虽在西班牙西班牙语场景表现良好,但对拉美新闻或其他语言的支持效果未经充分验证。
快速开始
网页标题党新闻摘要
以下代码展示如何从网页URL生成新闻摘要:
import torch # pip install torch
from newspaper import Article #pip3 install newspaper3k
from transformers import AutoTokenizer, AutoModelForCausalLM, GenerationConfig # pip install transformers
from transformers import BitsAndBytesConfig # pip install bitsandbytes
article_url ="https://www.huffingtonpost.es/virales/le-compra-abrigo-abuela-97nos-reaccion-fantasia.html"
article = Article(article_url)
article.download()
article.parse()
headline=article.title
body = article.text
def prompt(
headline: str,
body: str,
) -> str:
"""
生成模型提示模板
参数:
headline (`str`):
新闻标题
body (`str`):
新闻正文
返回:
`str`: 格式化提示模板
"""
return (
f"现在你是一个擅长拆解耸动或标题党新闻的人工智能专家。"
f"你的任务是分析带有耸动标题的新闻,"
f"并用一句话总结出标题背后的真相。\n"
f"这是新闻标题:{headline}\n"
f"标题提出了问题或提供了不完整信息。"
f"你需要在新闻正文中找出回应标题暗示内容的句子。"
f"尽可能引用原文,特别是人物原话。"
f"若引用他人话语,请使用引号标注。"
f"用最简练的语言回答,无需完整句子,只需聚焦核心问题。"
f"请始终用西班牙语回答。\n"
f"这是新闻正文:\n"
f"{body}\n"
)
prompt = prompt(headline=headline, body=body)
tokenizer = AutoTokenizer.from_pretrained("somosnlp/NoticIA-7B")
quantization_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_compute_dtype=torch.bfloat16,
bnb_4bit_use_double_quant=True,
)
model = AutoModelForCausalLM.from_pretrained(
"somosnlp/NoticIA-7B", torch_dtype=torch.bfloat16, device_map="auto", quantization_config=quantization_config,
)
formatted_prompt = tokenizer.apply_chat_template(
[{"role": "user", "content": prompt}],
tokenize=False,
add_generation_prompt=True,
)
model_inputs = tokenizer(
[formatted_prompt], return_tensors="pt", add_special_tokens=False
)
model_output = model.generate(**model_inputs.to(model.device), generation_config=GenerationConfig(
max_new_tokens=64,
min_new_tokens=1,
do_sample=False,
num_beams=1,
use_cache=True
))
summary = tokenizer.batch_decode(model_output,skip_special_tokens=True)[0]
print(summary.strip().split("\n")[-1]) # 仅输出摘要内容,不含提示模板
在NoticIA数据集上推理
以下代码展示如何在我们的数据集样本上进行推理:
import torch # pip install torch
from datasets import load_dataset # pip install datasets
from transformers import AutoTokenizer, AutoModelForCausalLM, GenerationConfig # pip install transformers
from transformers import BitsAndBytesConfig # pip install bitsandbytes
dataset = load_dataset("somosnlp/NoticIA-it",split="test")
tokenizer = AutoTokenizer.from_pretrained("somosnlp/NoticIA-7B")
quantization_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_compute_dtype=torch.bfloat16,
bnb_4bit_use_double_quant=True,
)
model = AutoModelForCausalLM.from_pretrained(
"somosnlp/NoticIA-7B", torch_dtype=torch.bfloat16, device_map="auto", quantization_config=quantization_config,
)
formatted_prompt = tokenizer.apply_chat_template(
[{"role": "user", "content": dataset[0]["pregunta"]}],
tokenize=False,
add_generation_prompt=True,
)
model_inputs = tokenizer(
[formatted_prompt], return_tensors="pt", add_special_tokens=False
)
model_output = model.generate(**model_inputs.to(model.device), generation_config=GenerationConfig(
max_new_tokens=64,
min_new_tokens=1,
do_sample=False,
num_beams=1,
use_cache=True
))
summary = tokenizer.batch_decode(model_output,skip_special_tokens=True)[0]
print(summary.strip().split("\n")[-1]) # 仅输出摘要内容,不含提示模板
训练详情
训练数据
我们使用NoticIA-it数据集进行训练,该数据集包含850篇西班牙语标题党新闻,每篇都配有专业人员撰写的高质量单句摘要。这项任务需要高级文本理解和摘要能力,挑战模型从标题党内容中推断关键信息的能力。
训练流程
我们开发了专属训练标注工具库:https://github.com/ikergarcia1996/NoticIA,整合了🤗 Transformers、🤗 PEFT、Bitsandbytes和Deepspeed技术栈。
在黑客松期间,我们选择训练70亿参数模型,通过4位量化技术可在消费级硬件运行。经综合评估后选用openchat-3.5-0106作为基础模型,并采用低秩自适应(LoRA)技术进行微调以保留模型原有能力。
训练超参数
- 训练精度: bfloat16
- 训练方法: LoRA + Deepspeed Zero3
- 批大小: 64
- 序列长度: 8192
- 训练轮次: 3
- 优化器: AdamW
- 软件栈: Huggingface, Peft, Pytorch, Deepspeed
完整训练配置见:https://huggingface.co/somosnlp/NoticIA-7B/blob/main/openchat-3.5-0106_LoRA.yaml
评估
测试数据与指标
测试数据
使用NoticIA-it测试集:https://huggingface.co/datasets/somosnlp/NoticIA-it
提示模板
训练提示模板与数据集定义一致:https://huggingface.co/datasets/somosnlp/NoticIA-it,并转换为各模型专属的对话模板格式。
评估指标
采用摘要任务标准ROUGE评分体系,主要考察ROUGE-1指标(以整词为基本单元)。计算时统一转为小写并去除标点。除ROUGE值外,我们还考量摘要平均长度,追求在保证质量前提下实现最简摘要。
结果
我们评估了当前最优的指令微调模型,并包含人工标注者表现作为参照。复现代码见:https://github.com/ikergarcia1996/NoticIA
经训练后,模型摘要能力接近人类水平,显著超越零样本设置下的各类模型,同时生成更简练的摘要。
环境影响
碳排放估算基于单卡400W功耗和0.083 kg/kWh碳强度:https://app.electricitymaps.com/map
- 硬件类型: 4张Nvidia A100 80GB
- 训练时长: 2小时
- 计算区域: 西班牙巴斯克自治区圣塞巴斯蒂安
- 碳排放量: 0.3984千克二氧化碳
模型架构与目标
仅解码器架构的指令预训练模型。采用标准的下个词预测(NTP)损失函数,为避免新闻正文token损失淹没摘要token损失,我们仅计算摘要token部分的损失。
计算基础设施
所有实验在配备四块NVIDIA A100 80GB显卡(通过NVLink互联)的服务器完成,该服务器配置双AMD EPYC 7513 32核处理器和1TB内存。
软件依赖
- Huggingface Transformers: https://github.com/huggingface/transformers
- PEFT: https://github.com/huggingface/peft
- Deepspeed: https://github.com/microsoft/DeepSpeed
- Pytorch: https://pytorch.org/
项目代码见 https://github.com/ikergarcia1996/NoticIA
许可协议
采用Apache 2.0许可证发布。
引用
若使用本数据集,请引用论文:NoticIA: 西班牙语标题党新闻摘要数据集
BibTeX格式:
@misc{garcíaferrero2024noticia,
title={NoticIA: A Clickbait Article Summarization Dataset in Spanish},
author={Iker García-Ferrero and Begoña Altuna},
year={2024},
eprint={2404.07611},
archivePrefix={arXiv},
primaryClass={cs.CL}
}








