File size: 1,533 Bytes
d03bc9b
2a3c4ce
3207602
 
d03bc9b
2a3c4ce
 
 
 
 
 
d03bc9b
3207602
2a3c4ce
 
 
 
3207602
 
2a3c4ce
 
 
3207602
 
 
 
 
 
 
 
2a3c4ce
 
 
 
d03bc9b
2a3c4ce
d03bc9b
 
 
 
 
 
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
import gradio as gr
from transformers import pipeline
from loguru import logger
# from pydantic import BaseModel

# RU_SUMMARY_MODEL = "IlyaGusev/rubart-large-sum"
RU_SUMMARY_MODEL = "IlyaGusev/mbart_ru_sum_gazeta"
# RU_SENTIMENT_MODEL = "IlyaGusev/rubart-large-sentiment"
RU_SENTIMENT_MODEL = "seara/rubert-tiny2-russian-sentiment"
EN_SUMMARY_MODEL = "sshleifer/distilbart-cnn-12-6"
EN_SENTIMENT_MODEL = "ProsusAI/finbert"

class Summarizer():
    ru_summary_pipe: pipeline
    ru_sentiment_pipe: pipeline
    
    def __init__(self) -> None:
        self.ru_summary_pipe = pipeline("summarization", model=RU_SUMMARY_MODEL, max_length=100, truncation=True)
        self.ru_sentiment_pipe = pipeline("sentiment-analysis", model=RU_SENTIMENT_MODEL)
        
    def summarize(self, text: str) -> str:
        result = {}
        response_summary = self.ru_summary_pipe(text)
        logger.info(response_summary)
        result["summary"] = response_summary[0]["summary_text"]
        
        response_sentiment = self.ru_sentiment_pipe(text)
        logger.info(response_sentiment)
        result["sentiment"] = response_sentiment[0]["label"]
        
        return f"Summary: {result['summary']}\n Sentiment:{result['sentiment']}"

pipe = Summarizer()
    
demo = gr.Interface(
    fn=pipe.summarize, 
    inputs=gr.Textbox(lines=5, placeholder="Write your text here..."), 
    outputs=gr.Textbox(lines=5, placeholder="Summary and Sentiment would be here..."), 
)
    
if __name__ == "__main__":
    demo.launch(show_api=False)