语言:
- 俄语
标签:
- 摘要生成
- T5模型
数据集:
- 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个工作日内录入联邦统一登记系统。申请时需确保针对申请人的执行程序已终结且执行文件已退还债权人,这意味着潜在破产人应无可执行财产。此外,不得有其他针对该公民的执行程序。整个程序期间,申请人不得借贷、提供担保或进行其他担保交易。非诉讼破产程序为期六个月,期间对申请所列债权人债权实现及强制支付义务实行暂停,同时停止计算违约金等金融制裁;财产执行(赡养费除外)也将中止。程序完成后,申请人可免除申请所列债权人的债务追偿,该债务将被视为坏账。上月数据显示,2020年上半年俄罗斯法院宣告4.27万公民(含个体经营者)破产,据联邦统一登记系统"Fedresurs"统计,同比增加47.2%。第二季度破产公民增速较第一季度放缓——项目负责人阿列克谢·尤赫宁解释,这种动态源于3月19日至5月11日限制措施期间,法院较少审理企业破产案件,公民破产案件也少于往常。他预测下半年随着法院审理限制期间积压案件,指标将回升。数据显示,仅6月份个人破产数就达1.15万例,同比翻番。"
标题: "新闻"
- 文本: "问题背景:电子信息在现代社会各领域作用日益凸显。近年来电子版科技文本信息量激增,导致在海量文本中检索所需信息困难,存在信息贬值风险。互联网信息资源的发展使信息过载问题成倍加剧。在此背景下,文本信息自动摘要方法(即生成文本压缩表示——文摘的方法)尤为重要。文本自动摘要的问题提出及相应解决尝试已有众多研究者采用不同方法探索。计算机应用于摘要的历史已超50年,相关研究者包括G.P. Lun、V.E. Berzon、I.P. Sevbo、E.F. Skorokhodko、D.G. Lakhuti、R.G. Piotrovsky等。这些年间形成了两大类解决方法:基于形式特征从原文档抽取"最具信息量"语句(片段)形成摘要的自动摘要;基于专用信息语言从文本提取核心信息并生成概括原文档内容的新文本(文摘)的自动摘要。"
标题: "学术论文"
RuT5SumGazeta摘要模型
模型说明
本模型是基于rut5-base的俄语抽象摘要生成模型。
使用范围与限制
使用方法
Colab链接:点击访问
from transformers import AutoTokenizer, T5ForConditionalGeneration
model_name = "IlyaGusev/rut5_base_sum_gazeta"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = T5ForConditionalGeneration.from_pretrained(model_name)
article_text = "..."
input_ids = tokenizer(
[article_text],
max_length=600,
add_special_tokens=True,
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 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 AutoTokenizer, T5ForConditionalGeneration
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=8
):
device = "cuda" if torch.cuda.is_available() else "cpu"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = T5ForConditionalGeneration.from_pretrained(model_name).to(device)
predictions = []
for batch in gen_batch(input_records, batch_size):
texts = [r["text"] for r in batch]
input_ids = tokenizer(
texts,
add_special_tokens=True,
max_length=max_source_tokens_count,
padding="max_length",
truncation=True,
return_tensors="pt"
)["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/rut5_base_sum_gazeta", list(gazeta_test), "t5_predictions.txt")
评估脚本:evaluate.py
参数:--language ru --tokenize-after --lower