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) # Convert sentiment label sentiment_label = sentiment_label.replace("LABEL_", "") translated_text = translate_text(icelandic_text) toxicity_results = analyze_toxicity(translated_text) if isinstance(toxicity_results, list): toxicity_results = toxicity_results[0] # Determine toxicity label based on score toxicity_label = '1' if toxicity_results['score'] >= 0.5 else '0' politeness_label, politeness_score = analyze_politeness(translated_text) # Convert politeness label to binary politeness_label = '1' if politeness_label.lower() == 'polite' else '0' analysis_results = ( f"Translated Text: {translated_text}\n\n" f"Sentiment: Label: {sentiment_label}, Score: {round(sentiment_score, 2)}\n" f"Formality: Label: {round(formality_score, 2)}, Score: {round(formality_score, 2)}\n" f"Toxicity: Label: {toxicity_label}, Score: {round(toxicity_results['score'], 2)}\n" f"Politeness: 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="Analysis Results"), 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()