File size: 3,389 Bytes
a192563 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | import time
import gradio as gr
from transformers import pipeline
MODEL_NAME = "cointegrated/rut5-base-absum"
summarizer = pipeline(
"summarization",
model=MODEL_NAME,
tokenizer=MODEL_NAME
)
def summarize_text(text: str):
if not text or not text.strip():
return "Введите текст для саммаризации.", ""
start_time = time.time()
result = summarizer(
text,
max_length=80,
min_length=20,
do_sample=False,
truncation=True
)
end_time = time.time()
summary = result[0]["summary_text"]
elapsed_time = round(end_time - start_time, 2)
return summary, f"Время обработки: {elapsed_time} сек."
example_text = """Клиент обратился сразу с несколькими проблемами: заказ был доставлен позже обещанного времени, один товар оказался повреждён,
а промокод, который должен был примениться при оплате, не сработал. Клиент просит вернуть деньги за повреждённый товар,
начислить компенсацию за опоздание и объяснить, почему промокод не применился."""
demo = gr.Interface(
fn=summarize_text,
inputs=gr.Textbox(
label="Исходный текст",
placeholder="Вставьте длинный текст обращения, диалога или описания проблемы...",
lines=10,
value=example_text
),
outputs=[
gr.Textbox(label="Краткое резюме", lines=4),
gr.Textbox(label="Скорость обработки", lines=1)
],
title="Демо: саммаризация клиентских обращений",
description=(
"Демо использует HuggingFace-модель cointegrated/rut5-base-absum "
"для краткого резюмирования русскоязычных текстов."
),
examples=[
[example_text],
["""Покупатель сообщил, что в заказе отсутствовало несколько позиций, хотя деньги за них были списаны.
Он уже обращался в поддержку ранее, но получил только обещание разобраться.
Клиент раздражён, потому что проблема повторяется второй раз за месяц, и просит оформить возврат как можно быстрее."""],
["""Компания внедряет новый процесс обработки возвратов. Теперь часть обращений клиентов будет переводиться из чата в отдельный раздел приложения.
Это позволит клиенту самостоятельно создать заявку, приложить фотографии товара и отслеживать статус рассмотрения.
Операторы поддержки будут подключаться только в сложных случаях."""]
]
)
if __name__ == "__main__":
demo.launch() |