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()