|
|
from summarizer import INPUT_MIN_SIZE |
|
|
from summarizer.models import summarizer_fr, summarizer_en |
|
|
from summarizer.utils import detect_language, read_file |
|
|
|
|
|
|
|
|
def generate_summary(text=None, file=None, min_length=30, max_length=100, do_sample=False): |
|
|
content = text or "" |
|
|
if file: |
|
|
content = read_file(file) |
|
|
content = content.strip() |
|
|
|
|
|
if not content or len(content.split()) < INPUT_MIN_SIZE: |
|
|
return "β οΈ Input too short or empty." |
|
|
|
|
|
|
|
|
min_length = min_length or 30 |
|
|
max_length = max_length or 100 |
|
|
|
|
|
|
|
|
lang = detect_language(content) |
|
|
if lang == "fr": |
|
|
summarizer = summarizer_fr |
|
|
elif lang == "en": |
|
|
summarizer = summarizer_en |
|
|
else: |
|
|
return f"β Unsupported language: {lang}" |
|
|
|
|
|
try: |
|
|
summary = summarizer(content, min_length=min_length, max_length=max_length, do_sample=do_sample) |
|
|
return summary[0]["summary_text"] |
|
|
except Exception as e: |
|
|
return f"β Error: {str(e)}" |
|
|
|