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()