PipelineSpace / app.py
karalif's picture
Update app.py
0e88fea verified
raw
history blame
3.04 kB
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()