Spaces:
Sleeping
Sleeping
import subprocess | |
import sys | |
from transformers import T5ForConditionalGeneration, T5Tokenizer | |
import gradio as gr | |
# Install required packages | |
def install(package): | |
subprocess.check_call([sys.executable, "-m", "pip", "install", package]) | |
install('transformers') | |
install('sentencepiece') | |
install('torch') | |
install('gradio') | |
# Translation setup | |
try: | |
install('translate') | |
from translate import Translator | |
translation_available = True | |
except: | |
print("Translation package not available - continuing without translation support") | |
translation_available = False | |
class GOTSummarizer: | |
def __init__(self): | |
self.tokenizer = T5Tokenizer.from_pretrained("t5-small") | |
self.model = T5ForConditionalGeneration.from_pretrained("t5-small") | |
self.translation_available = translation_available | |
def summarize(self, text, max_length=150): | |
inputs = self.tokenizer("summarize: " + text, | |
return_tensors="pt", | |
truncation=True, | |
max_length=512) | |
outputs = self.model.generate( | |
**inputs, | |
max_length=max_length, | |
num_beams=4, | |
early_stopping=True | |
) | |
return self.tokenizer.decode(outputs[0], skip_special_tokens=True) | |
def translate(self, text, lang='hi'): | |
if not self.translation_available: | |
return "[Translation unavailable] " + text | |
try: | |
translator = Translator(to_lang=lang) # Initialize with target language | |
return translator.translate(text) | |
except Exception as e: | |
print(f"Translation error: {e}") | |
return text | |
# Initialize summarizer | |
summarizer = GOTSummarizer() | |
def process(text, lang='en'): | |
if not text.strip(): | |
return "Please enter text to summarize" | |
summary = summarizer.summarize(text) | |
return summary if lang == 'en' else summarizer.translate(summary, lang) | |
# Create Gradio interface | |
interface = gr.Interface( | |
fn=process, | |
inputs=[ | |
gr.Textbox(label="Game of Thrones Text", lines=10, | |
placeholder="Paste book chapter text here..."), | |
gr.Dropdown( | |
label="Language", | |
choices=['en', 'hi', 'pa', 'ta', 'bn'], | |
value='en' | |
) | |
], | |
outputs=gr.Textbox(label="Summary"), | |
title="ASOIAF Chapter Summarizer", | |
description="Summarizes Game of Thrones chapters with optional translation" | |
) | |
# Launch the interface | |
if __name__ == "__main__": | |
interface.launch() |