File size: 2,581 Bytes
e97c343
 
08c59a2
 
35a8dfb
71f7ef1
66c4f4c
71f7ef1
a369500
66c4f4c
 
 
 
a369500
71f7ef1
66c4f4c
 
71f7ef1
 
66c4f4c
71f7ef1
 
08c59a2
 
 
0d80d73
 
71f7ef1
08c59a2
 
a369500
 
 
 
08c59a2
 
 
 
 
 
 
 
 
71f7ef1
66c4f4c
 
08c59a2
71f7ef1
 
08c59a2
 
 
 
a369500
35a8dfb
 
 
08c59a2
0d80d73
a369500
35a8dfb
0d80d73
35a8dfb
a369500
 
35a8dfb
08c59a2
71f7ef1
 
a369500
66c4f4c
 
a369500
 
08c59a2
a369500
 
66c4f4c
a369500
 
 
 
66c4f4c
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
73
74
75
76
77
78
79
80
81
82
83
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()