File size: 3,037 Bytes
34475ca
3c8522e
 
 
 
 
 
9254b4c
318e9b0
 
1a6e1ca
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
318e9b0
1a6e1ca
318e9b0
1a6e1ca
0e88fea
 
 
 
 
 
 
 
318e9b0
 
9254b4c
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
import pkg_resources
from transformers import pipeline
import gradio as gr

translator = pipeline("translation", model="Helsinki-NLP/opus-mt-is-en")
sentiment_classifier = pipeline("text-classification", model="Birkir/electra-base-igc-is-sentiment-analysis")
formality_classifier = pipeline("text-classification", model="svanhvit/formality-classification-icebert")
detoxify_pipeline = pipeline('text-classification', model='unitary/toxic-bert', tokenizer='bert-base-uncased', function_to_apply='sigmoid', top_k=None)
politeness_classifier = pipeline("text-classification", model="Genius1237/xlm-roberta-large-tydip")

def translate_text(text):
    translation = translator(text, max_length=512)
    return translation[0]['translation_text']

def analyze_toxicity(text):
    toxicity_results = detoxify_pipeline(text)
    return toxicity_results[0]

def analyze_politeness(text):
    politeness_result = politeness_classifier(text)
    return politeness_result[0]['label'], politeness_result[0]['score']

def analyze_formality(text):
    formality_result = formality_classifier(text)
    formality_label = formality_result[0]['label']
    formality_score = formality_result[0]['score']
    return formality_label, formality_score

def analyze_sentiment(text):
    sentiment_result = sentiment_classifier(text)
    sentiment_label = sentiment_result[0]['label']
    sentiment_score = sentiment_result[0]['score']
    return sentiment_label, sentiment_score

def analyze_text(icelandic_text):
    formality_label, formality_score = analyze_formality(icelandic_text)
    sentiment_label, sentiment_score = analyze_sentiment(icelandic_text)

    translated_text = translate_text(icelandic_text)

    toxicity_results = analyze_toxicity(translated_text)
    if isinstance(toxicity_results, list):
        toxicity_results = toxicity_results[0]

    politeness_label, politeness_score = analyze_politeness(translated_text)

    analysis_results = {
        "Translated Text": translated_text,
        "Sentiment": f"Label: {sentiment_label}, Score: {round(sentiment_score, 2)}",
        "Formality": f"Label: {formality_label}, Score: {round(formality_score, 2)}",
        "Toxicity": f"Score: {round(toxicity_results['score'], 2)}",
        "Politeness": f"Label: {politeness_label}, Score: {round(politeness_score, 2)}"
    }
    return analysis_results

demo = gr.Interface(fn=analyze_text, 
                    inputs=gr.Textbox(lines=2, placeholder="Enter Icelandic Text Here..."), 
                    outputs=[gr.Textbox(label="Translated Text"),
                             gr.Textbox(label="Sentiment"),
                             gr.Textbox(label="Formality"),
                             gr.Textbox(label="Toxicity"),
                             gr.Textbox(label="Politeness")],
                    title="Icelandic Text Analysis",
                    description="This app translates Icelandic text to English and performs sentiment, formality, toxicity, and politeness analysis.")

if __name__ == "__main__":
    demo.launch()