File size: 2,598 Bytes
1398925
c7717e6
1398925
6908aad
bf83ac1
 
d86acb9
 
bf83ac1
 
d86acb9
 
bf83ac1
3bc002c
 
 
 
 
 
bf83ac1
 
 
6908aad
 
 
 
 
 
 
c7717e6
 
 
 
 
 
 
 
 
 
 
 
 
6908aad
d86acb9
 
 
07a4801
13081ab
6908aad
c7717e6
6908aad
c7717e6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6908aad
 
af1aba9
07a4801
59e6f0a
6908aad
3bc002c
d86acb9
c7717e6
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
import gradio as gr
from transformers import MarianMTModel, MarianTokenizer, pipeline

def translate(text, target_language):
    language_codes = {
        "Spanish": "es",
        "French (European)": "fr",
        "French (Canadian)": "fr",
        "Italian": "it",
        "Ukrainian": "uk",
        "Portuguese (Brazilian)": "pt_BR",
        "Portuguese (European)": "pt",
        "Russian": "ru",
        "Chinese": "zh",
        "Dutch": "nl",
        "German": "de",
        "Arabic": "ar",
        "Hebrew": "he",
        "Greek": "el"
    }
    target_language_code = language_codes[target_language]
    model_name = f'helsinki-nlp/opus-mt-en-{target_language_code}'
    tokenizer = MarianTokenizer.from_pretrained(model_name)
    model = MarianMTModel.from_pretrained(model_name)
    inputs = tokenizer(text, return_tensors="pt")
    outputs = model.generate(**inputs)
    translation = tokenizer.decode(outputs[0], skip_special_tokens=True)
    return translation

def classify_text(text, labels):
    classifier = pipeline("zero-shot-classification")
    result = classifier(text, labels.split(','))
    scores = result["scores"]
    predictions = result["labels"]
    sorted_predictions = [pred for _, pred in sorted(zip(scores, predictions), reverse=True)]
    return sorted_predictions

def generate_text(prompt, max_length):
    text_gen = pipeline("text-generation", model="gpt2")
    generated_text = text_gen(prompt, max_length=max_length, do_sample=True)[0]["generated_text"]
    return generated_text

language_options = [
    "Spanish", "French (European)", "French (Canadian)", "Italian", "Ukrainian",
    "Portuguese (Brazilian)", "Portuguese (European)", "Russian", "Chinese",
    "Dutch", "German", "Arabic", "Hebrew", "Greek"
]

iface = gr.Interface(
    [translate, classify_text, generate_text],
    inputs=[
        [
            gr.inputs.Textbox(lines=5, label="Enter text to translate:"),
            gr.inputs.Dropdown(choices=language_options, label="Target Language"),
        ],
        [
            gr.inputs.Textbox(lines=5, label="Enter text to classify:"),
            gr.inputs.Textbox(lines=2, label="Enter comma-separated labels:"),
        ],
        [
            gr.inputs.Textbox(lines=5, label="Enter a prompt for text generation:"),
            gr.inputs.Slider(minimum=10, maximum=150, step=1, default=50, label="Max Length"),
        ],
    ],
    outputs=[
        gr.outputs.Textbox(label="Translated Text"),
        gr.outputs.Textbox(label="Classification"),
        gr.outputs.Textbox(label="Generated Text"),
    ],
)

iface.launch()