语言:
- 俄语
标签:
- 摘要生成
- mbart
数据集:
- IlyaGusev/gazeta
许可证: apache-2.0
推理参数:
no_repeat_ngram_size: 4
示例:
- 文本: "埃菲尔铁塔高度为324米(1063英尺),约相当于81层楼高,是巴黎最高建筑。塔基呈正方形,每边长125米(410英尺)。建造期间,埃菲尔铁塔超越华盛顿纪念碑成为世界最高人造建筑,并保持这一称号长达41年,直至1930年纽约克莱斯勒大厦竣工。它是首个达到300米高度的建筑。1957年因塔顶加装广播天线,现比克莱斯勒大厦高出5.2米(17英尺)。除发射塔外,埃菲尔铁塔是法国第二高的独立建筑,仅次于米约高架桥。"
示例标题: "维基百科"
- 文本: "自9月1日起,俄罗斯《破产法》修正案生效——债务人若债务金额不低于5万卢布且不超过50万卢布(不含罚款、滞纳金、逾期利息及其他财产或金融制裁),可通过非司法程序免除无力偿还的债务。个人及个体经营者现可不经法院和财务管理人参与即申请破产,只需通过多功能中心提交申请。申请人需自行提供债务金额及已知债权人名单。若符合条件,信息将在3个工作日内录入统一联邦登记系统。申请时,针对申请人的执行程序必须已终结且执行文件已退还债权人,这意味着潜在破产者不应有可扣押财产。此外,公民不得有其他未结执行程序。整个程序期间,申请人不得借贷、提供担保或进行其他担保交易。非司法破产程序将持续6个月,期间对申请所列债权人债权偿付及强制付款实行暂停机制,同时停止计算违约金等金融制裁;财产追索(赡养费除外)也将中止。程序完成后,申请人可免除申请所列债权人的债务追偿,该债务将被视为坏账。上月数据显示,2020年上半年俄罗斯法院宣告4.27万公民(含个体经营者)破产,较2019年同期增长47.2%。第二季度个人破产增速较第一季度放缓——联邦资源项目负责人阿列克谢·尤赫宁解释,这种动态源于3月19日至5月11日限制期间法院较少审理公司破产案及个人破产案。他预测下半年随着法院审理限制期积压案件,指标将回升。据其数据,6月个人破产数已增至1.15万例,达2019年同期两倍。"
示例标题: "新闻"
- 文本: "问题背景:电子信息在现代社会各领域作用日益凸显。近年来电子版科技文本信息量激增,导致信息因检索困难面临贬值风险。互联网信息资源发展加剧了信息过载问题。在此背景下,文本信息自动摘要方法(即生成文本压缩表示——文摘的方法)尤为重要。文本自动摘要问题提出及解决尝试由来已久,研究者采用多种方法已逾50年,代表人物包括G.P. Lun、V.E. Berzon、I.P. Sevbo、E.F. Skorokhodko、D.G. Lakhuti、R.G. Piotrovsky等。期间形成了两大类方法:基于形式特征从原文抽取"最具信息量"语句(片段)形成摘录的自动摘要;基于专用信息语言从文本提取核心信息并生成概括原文的新文本(文摘)的自动摘要。"
示例标题: "学术论文"
MBARTRuSumGazeta俄语新闻摘要模型
模型说明
本模型为fairseq模型的移植版本。
更多细节详见论文Dataset for Automatic Summarization of Russian News。
使用范围与限制
使用方法
Colab链接: 点击访问
from transformers import MBartTokenizer, MBartForConditionalGeneration
model_name = "IlyaGusev/mbart_ru_sum_gazeta"
tokenizer = MBartTokenizer.from_pretrained(model_name)
model = MBartForConditionalGeneration.from_pretrained(model_name)
article_text = "..."
input_ids = tokenizer(
[article_text],
max_length=600,
padding="max_length",
truncation=True,
return_tensors="pt",
)["input_ids"]
output_ids = model.generate(
input_ids=input_ids,
no_repeat_ngram_size=4
)[0]
summary = tokenizer.decode(output_ids, skip_special_tokens=True)
print(summary)
局限性
- 模型对Gazeta.ru文章表现良好,但处理其他媒体内容可能受领域迁移影响
训练数据
训练流程
评估结果
- 训练集: Gazeta v1 训练集
- 测试集: Gazeta v1 测试集
- 原文最大长度: 600
- 摘要最大长度: 200
- no_repeat_ngram_size: 4
- num_beams: 5
- 训练集: Gazeta v1 训练集
- 测试集: Gazeta v2 测试集
- 原文最大长度: 600
- 摘要最大长度: 200
- no_repeat_ngram_size: 4
- num_beams: 5
批量生成摘要:
import json
import torch
from transformers import MBartTokenizer, MBartForConditionalGeneration
from datasets import load_dataset
def gen_batch(inputs, batch_size):
batch_start = 0
while batch_start < len(inputs):
yield inputs[batch_start: batch_start + batch_size]
batch_start += batch_size
def predict(
model_name,
input_records,
output_file,
max_source_tokens_count=600,
batch_size=4
):
device = "cuda" if torch.cuda.is_available() else "cpu"
tokenizer = MBartTokenizer.from_pretrained(model_name)
model = MBartForConditionalGeneration.from_pretrained(model_name).to(device)
predictions = []
for batch in gen_batch(inputs, batch_size):
texts = [r["text"] for r in batch]
input_ids = tokenizer(
batch,
return_tensors="pt",
padding="max_length",
truncation=True,
max_length=max_source_tokens_count
)["input_ids"].to(device)
output_ids = model.generate(
input_ids=input_ids,
no_repeat_ngram_size=4
)
summaries = tokenizer.batch_decode(output_ids, skip_special_tokens=True)
for s in summaries:
print(s)
predictions.extend(summaries)
with open(output_file, "w") as w:
for p in predictions:
w.write(p.strip().replace("\n", " ") + "\n")
gazeta_test = load_dataset('IlyaGusev/gazeta', script_version="v1.0")["test"]
predict("IlyaGusev/mbart_ru_sum_gazeta", list(gazeta_test), "mbart_predictions.txt")
评估脚本: https://github.com/IlyaGusev/summarus/blob/master/evaluate.py
参数: --language ru --tokenize-after --lower
文献引用
@InProceedings{10.1007/978-3-030-59082-6_9,
author="Gusev, Ilya",
editor="Filchenkov, Andrey and Kauttonen, Janne and Pivovarova, Lidia",
title="Dataset for Automatic Summarization of Russian News",
booktitle="Artificial Intelligence and Natural Language",
year="2020",
publisher="Springer International Publishing",
address="Cham",
pages="122--134",
isbn="978-3-030-59082-6"
}