mbart_ru_sum_gazeta / README.md
IlyaGusev's picture
Update README.md
6e42cab
|
raw
history blame
14.4 kB
metadata
language:
  - ru
  - ru-RU
tags:
  - summarization
  - mbart
datasets:
  - IlyaGusev/gazeta
license: apache-2.0
inference:
  parameters:
    repetition_penalty: 2.9
    do_sample: false
widget:
  - text: >-
      Высота башни составляет 324 метра (1063 фута), примерно такая же высота,
      как у 81-этажного здания, и самое высокое сооружение в Париже. Его
      основание квадратно, размером 125 метров (410 футов) с любой стороны. Во
      время строительства Эйфелева башня превзошла монумент Вашингтона, став
      самым высоким искусственным сооружением в мире, и этот титул она
      удерживала в течение 41 года до завершения строительство здания Крайслер в
      Нью-Йорке в 1930 году. Это первое сооружение которое достигло высоты 300
      метров. Из-за добавления вещательной антенны на вершине башни в 1957 году
      она сейчас выше здания Крайслер на 5,2 метра (17 футов). За исключением
      передатчиков, Эйфелева башня является второй самой высокой отдельно
      стоящей структурой во Франции после виадука Мийо.
    example_title: Википедия
  - text: >-
      С 1 сентября в России вступают в силу поправки в закон «О банкротстве» —
      теперь должники смогут освобождаться от непосильных обязательств во
      внесудебном порядке, если сумма задолженности составляет не менее 50 тыс.
      рублей и не превышает 500 тыс. рублей без учета штрафов, пени, процентов
      за просрочку платежа и прочих имущественных или финансовых санкций. У
      физлиц и индивидуальных предпринимателей появилась возможность пройти
      процедуру банкротства без участия суда и финансового управляющего —
      достаточно подать соответствующее заявление через МФЦ. Сумму задолженности
      и список всех известных заявителю кредиторов нужно предоставить
      самостоятельно. Если все условия соблюдены, сведения внесут в Единый
      федеральный реестр в течение трех рабочих дней. При этом на момент подачи
      заявления в отношении заявителя должно быть окончено исполнительное
      производство с возвращением исполнительного документа взыскателю. Это
      значит, что у потенциального банкрота не должно быть имущества, которое
      можно взыскать. Кроме того, в отношении гражданина не должно быть
      возбуждено другое исполнительное производство. В период всей процедуры
      заявитель не сможет брать займы, кредиты, выдавать поручительства,
      совершать иные обеспечительные сделки. Внесудебное банкротство будет
      длиться шесть месяцев, в течение которых также будет действовать мораторий
      на удовлетворение требований кредиторов, отмеченных в заявлении должника,
      и мораторий об уплате обязательных платежей. Кроме того, прекращается
      начисление неустоек и иных финансовых санкций; имущественные взыскания
      (кроме алиментов) также будут приостановлены. По завершению процедуры
      заявителя освободят от дальнейшего выполнения требований кредиторов,
      указанных в заявлении о признании его банкротом, а эта задолженность
      признается безнадежной. В прошлом месяце стало известно, что за первое
      полугодие 2020 года российские суды признали банкротами 42,7 тыс. граждан
      (в том числе индивидуальных предпринимателей) — по данным единого реестра
      «Федресурс», это на 47,2% больше показателя аналогичного периода 2019
      года. Рост числа обанкротившихся граждан во втором квартале по сравнению с
      первым замедлился — такая динамика обусловлена тем, что в период
      ограничений с 19 марта по 11 мая суды редко рассматривали банкротные дела
      компаний и меньше, чем обычно, в отношении граждан, объяснял руководитель
      проекта «Федресурс» Алексей Юхнин. Он прогнозирует, что во втором
      полугодии мы увидим рост показателя, когда суды рассмотрят все дела, что
      не смогли ранее в режиме ограничений. По его данным, уже в июне число
      личных банкротств выросло до 11,5 тыс., что в два раза превышает
      показатель аналогичного периода 2019 года.
    example_title: Новости
  - text: >-
      Актуальность проблемы. Электронная информация играет все большую  роль во
      всех сферах жизни современного общества. В последние годы объем
      научно-технической текстовой информации в электронном виде возрос
      настолько, что возникает угроза обесценивания этой информации в связи с
      трудностями поиска необходимых сведений среди множества доступных текстов.
      Развитие информационных ресурсов Интернет многократно усугубило проблему
      информационной перегрузки. В этой ситуации особенно актуальными становятся
      методы автоматизации реферирования текстовой информации, то есть методы
      получения сжатого представления текстовых документов–рефератов
      (аннотаций). Постановка  проблемы  автоматического реферирования текста и
      соответственно попытки ее решения с использованием различных подходов
      предпринимались многими исследователями. История применения вычислительной
      техники для реферирования  насчитывает уже более 50 лет и связана с
      именами таких исследователей, как Г.П. Лун, В.Е. Берзон, И.П. Cевбо, Э.Ф.
      Скороходько, Д.Г. Лахути, Р.Г. Пиотровский и др. За эти годы  выработаны 
      многочисленные подходы к решению данной проблемы, которые достаточно четко
      подразделяются на два направления: автоматическое реферирование,
      основанное на экстрагировании из первичных документов с помощью
      определенных формальных признаков «наиболее информативных» фраз
      (фрагментов), совокупность которых образует некоторый экстракт;
      автоматическое реферирование, основанное на выделении из текстов с помощью
      специальных информационных языков наиболее существенной информации и
      порождении новых текстов (рефератов), содержательно обобщающих первичные 
      документы.
    example_title: Научная статья

MBARTRuSumGazeta

Model description

This is a ported version of fairseq model.

For more details, please see Dataset for Automatic Summarization of Russian News.

Intended uses & limitations

How to use

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,
    repetition_penalty=3.0
)[0]

summary = tokenizer.decode(output_ids, skip_special_tokens=True)
print(summary)

Limitations and bias

  • The model should work well with Gazeta.ru articles, but for any other agencies it can suffer from domain shift

Training data

Training procedure

Eval results

Gazeta v1 train -> Gazeta v1 test

Model R-1-f R-2-f R-L-f chrF METEOR BLEU
mbart_ru_sum_gazeta 32.1 14.3 27.9 39.7 25.7 12.4
rut5_base_sum_gazeta 32.3 14.5 27.9 39.6 25.1 11.5

Gazeta v1 train -> Gazeta v2 test

Model R-1-f R-2-f R-L-f chrF METEOR BLEU
mbart_ru_sum_gazeta 28.8 11.1 24.5 37.4 22.7 9.5
rut5_base_sum_gazeta 28.5 11.0 24.2 36.8 21.2 8.6

Predicting all summaries:

import json
import torch
from transformers import MBartTokenizer, MBartForConditionalGeneration


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,
    test_file,
    predictions_file,
    targets_file,
    max_source_tokens_count=600,
    use_cuda=True,
    batch_size=4
):
    inputs = []
    targets = []
    with open(test_file, "r") as r:
        for line in r:
            record = json.loads(line)
            inputs.append(record["text"])
            targets.append(record["summary"].replace("\n", " "))

    tokenizer = MBartTokenizer.from_pretrained(model_name)
    device = torch.device("cuda:0") if use_cuda else torch.device("cpu")
    model = MBartForConditionalGeneration.from_pretrained(model_name).to(device)
    predictions = []
    for batch in gen_batch(inputs, batch_size):
        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,
            repetition_penalty=3.0
        )
        summaries = tokenizer.batch_decode(output_ids, skip_special_tokens=True)
        for s in summaries:
            print(s)
        predictions.extend(summaries)
    with open(predictions_file, "w") as w:
        for p in predictions:
            w.write(p.strip().replace("\n", " ") + "\n")
    with open(targets_file, "w") as w:
        for t in targets:
            w.write(t.strip().replace("\n", " ") + "\n")

predict("IlyaGusev/mbart_ru_sum_gazeta", "gazeta_test.jsonl", "predictions.txt", "targets.txt")

Evaluation: https://github.com/IlyaGusev/summarus/blob/master/evaluate.py

Flags: --language ru --tokenize-after --lower

BibTeX entry and citation info

@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"
}