iamomtiwari commited on
Commit
66c4f4c
·
verified ·
1 Parent(s): a369500

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +45 -31
app.py CHANGED
@@ -1,33 +1,48 @@
1
  import subprocess
2
  import sys
3
  from transformers import T5ForConditionalGeneration, T5Tokenizer
4
- from translate import Translator as LibreTranslator
5
  import gradio as gr
6
 
7
- # Install required packages (without conflicts)
8
- required_packages = [
9
- 'transformers>=4.30.0',
10
- 'sentencepiece',
11
- 'translate>=3.6.1', # Alternative to googletrans
12
- 'torch',
13
- 'gradio'
14
- ]
15
 
16
- def install_packages():
17
- for package in required_packages:
18
- try:
19
- subprocess.check_call([sys.executable, "-m", "pip", "install", package])
20
- except subprocess.CalledProcessError:
21
- print(f"Failed to install {package}, trying with --user flag")
22
- subprocess.check_call([sys.executable, "-m", "pip", "install", "--user", package])
23
 
24
- install_packages()
 
 
 
 
 
 
 
 
 
 
 
 
25
 
26
  class GOTSummarizer:
27
  def __init__(self):
28
  self.tokenizer = T5Tokenizer.from_pretrained("t5-small")
29
  self.model = T5ForConditionalGeneration.from_pretrained("t5-small")
30
- self.translator = LibreTranslator()
 
 
 
 
 
 
 
31
 
32
  def summarize(self, text, max_length=150):
33
  inputs = self.tokenizer("summarize: " + text,
@@ -43,8 +58,14 @@ class GOTSummarizer:
43
  return self.tokenizer.decode(outputs[0], skip_special_tokens=True)
44
 
45
  def translate(self, text, lang='hi'):
 
 
 
46
  try:
47
- return self.translator.translate(text, to_lang=lang)
 
 
 
48
  except Exception as e:
49
  print(f"Translation error: {e}")
50
  return text
@@ -63,25 +84,18 @@ def process(text, lang='en'):
63
  interface = gr.Interface(
64
  fn=process,
65
  inputs=[
66
- gr.Textbox(label="Game of Thrones Text", lines=10,
67
- placeholder="Paste book chapter text here..."),
68
  gr.Dropdown(
69
- label="Translation Language",
70
- choices=[
71
- ('English', 'en'),
72
- ('Hindi', 'hi'),
73
- ('Punjabi', 'pa'),
74
- ('Tamil', 'ta'),
75
- ('Bengali', 'bn')
76
- ],
77
  value='en'
78
  )
79
  ],
80
  outputs=gr.Textbox(label="Summary"),
81
  title="ASOIAF Chapter Summarizer",
82
- description="Summarizes Game of Thrones chapters with translation support"
83
  )
84
 
85
  # Launch the interface
86
  if __name__ == "__main__":
87
- interface.launch(server_port=7860, share=True)
 
1
  import subprocess
2
  import sys
3
  from transformers import T5ForConditionalGeneration, T5Tokenizer
 
4
  import gradio as gr
5
 
6
+ # Install required packages with error handling
7
+ def install(package):
8
+ try:
9
+ subprocess.check_call([sys.executable, "-m", "pip", "install", package])
10
+ except subprocess.CalledProcessError:
11
+ print(f"Failed to install {package}, trying with --user flag")
12
+ subprocess.check_call([sys.executable, "-m", "pip", "install", "--user", package])
 
13
 
14
+ # Install all dependencies
15
+ install('transformers')
16
+ install('sentencepiece')
17
+ install('torch')
18
+ install('gradio')
 
 
19
 
20
+ # Try multiple translation backends
21
+ translation_backend = None
22
+ try:
23
+ install('translate')
24
+ from translate import Translator as LibreTranslator
25
+ translation_backend = "libretrans"
26
+ except:
27
+ try:
28
+ install('googletrans==3.1.0a0')
29
+ from googletrans import Translator
30
+ translation_backend = "googletrans"
31
+ except:
32
+ print("Warning: No translation backend available")
33
 
34
  class GOTSummarizer:
35
  def __init__(self):
36
  self.tokenizer = T5Tokenizer.from_pretrained("t5-small")
37
  self.model = T5ForConditionalGeneration.from_pretrained("t5-small")
38
+
39
+ # Initialize translator based on available backend
40
+ if translation_backend == "libretrans":
41
+ self.translator = LibreTranslator()
42
+ elif translation_backend == "googletrans":
43
+ self.translator = Translator()
44
+ else:
45
+ self.translator = None
46
 
47
  def summarize(self, text, max_length=150):
48
  inputs = self.tokenizer("summarize: " + text,
 
58
  return self.tokenizer.decode(outputs[0], skip_special_tokens=True)
59
 
60
  def translate(self, text, lang='hi'):
61
+ if not self.translator:
62
+ return "[Translation unavailable] " + text
63
+
64
  try:
65
+ if translation_backend == "libretrans":
66
+ return self.translator.translate(text, to_lang=lang)
67
+ else: # googletrans
68
+ return self.translator.translate(text, dest=lang).text
69
  except Exception as e:
70
  print(f"Translation error: {e}")
71
  return text
 
84
  interface = gr.Interface(
85
  fn=process,
86
  inputs=[
87
+ gr.Textbox(label="Game of Thrones Text", lines=10),
 
88
  gr.Dropdown(
89
+ label="Language",
90
+ choices=['en', 'hi', 'pa', 'ta', 'bn'],
 
 
 
 
 
 
91
  value='en'
92
  )
93
  ],
94
  outputs=gr.Textbox(label="Summary"),
95
  title="ASOIAF Chapter Summarizer",
96
+ description="Summarizes Game of Thrones chapters with optional translation"
97
  )
98
 
99
  # Launch the interface
100
  if __name__ == "__main__":
101
+ interface.launch()