File size: 811 Bytes
743c53a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
from transformers import pipeline
from functools import lru_cache

class SummarizerService:
    _instance = None
    
    def __new__(cls):
        if cls._instance is None:
            cls._instance = super().__new__(cls)
            # Initialize the summarizer only once
            cls._instance.summarizer = pipeline("summarization", model="google/flan-t5-small")
        return cls._instance
    
    def summarize(self, text, ratio=0.5, min_length=30):
        # Calculate dynamic max_length based on input length
        input_length = len(text.split())
        max_length = max(int(input_length * ratio), min_length)
        
        return self.summarizer(
            text,
            max_length=max_length,
            min_length=min_length,
            do_sample=False
        )[0]['summary_text']