cptcrk commited on
Commit
b8aad66
Β·
verified Β·
1 Parent(s): f18fa95

Update app.py

Browse files

Multilingual sentiment analysis for multiple sentences.
Output in graph

Files changed (1) hide show
  1. app.py +57 -28
app.py CHANGED
@@ -1,42 +1,72 @@
1
  import gradio as gr
 
2
  from transformers import pipeline
3
 
4
- # Laad het vertaalmodel (meertalig β†’ Engels) en het sentimentanalyse-model (Engels)
5
  translator = pipeline("translation", model="Helsinki-NLP/opus-mt-mul-en")
6
- classifier = pipeline("sentiment-analysis")
7
 
8
- # Functie om tekst te vertalen en sentimentanalyse uit te voeren
9
- def analyze_multilingual_sentiment(text):
10
  if not text.strip():
11
- return "⚠️ Voer een tekst in voor analyse."
12
 
13
- # Stap 1: Vertaal de tekst naar Engels
14
- translated_text = translator(text)[0]['translation_text']
 
 
 
15
 
16
- # Stap 2: Voer sentimentanalyse uit op de vertaalde tekst
17
- result = classifier(translated_text)[0]
18
 
19
- # Stap 3: Geef de output terug met oorspronkelijke tekst, vertaling en sentimentanalyse
20
- output = f"""
21
- 🌍 **Originele tekst:** {text}
22
- πŸ”„ **Vertaling (Engels):** {translated_text}
23
- πŸ“Š **Sentimentanalyse:** {result['label']} ({result['score']:.2f})
24
- """
25
- return output
26
 
27
- # Maak een Gradio-interface
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
  demo = gr.Interface(
29
- fn=analyze_multilingual_sentiment,
30
- inputs=gr.Textbox(lines=3, placeholder="Voer hier een tekst in in elke taal..."),
31
- outputs="text",
32
- title="🌍 Meertalige Sentimentanalyse",
33
- description="Voer een tekst in in elke taal. De app vertaalt de tekst naar Engels en voert sentimentanalyse uit.",
34
  examples=[
35
- ["Ik hou van programmeren!"],
36
- ["Je suis très fatigué aujourd'hui."],
37
- ["Hoy hace mucho frΓ­o y estoy triste."],
38
- ["这部甡影ε€ͺ棒了!"],
39
- ["Das Wetter ist schrecklich, ich hasse es."]
40
  ]
41
  )
42
 
@@ -44,4 +74,3 @@ demo = gr.Interface(
44
  demo.launch()
45
 
46
 
47
-
 
1
  import gradio as gr
2
+ import matplotlib.pyplot as plt
3
  from transformers import pipeline
4
 
5
+ # Laad de modellen
6
  translator = pipeline("translation", model="Helsinki-NLP/opus-mt-mul-en")
7
+ classifier = pipeline("sentiment-analysis", model="cardiffnlp/twitter-roberta-base-sentiment")
8
 
9
+ # Functie om meerdere zinnen te vertalen en analyseren
10
+ def analyze_multilingual_sentences(text):
11
  if not text.strip():
12
+ return "⚠️ Voer een tekst in voor analyse.", None
13
 
14
+ # Splits de input op nieuwe regels (elke regel is een aparte zin)
15
+ sentences = [s.strip() for s in text.split("\n") if s.strip()]
16
+
17
+ # Vertaal elke zin naar Engels
18
+ translated_sentences = [translator(sentence)[0]['translation_text'] for sentence in sentences]
19
 
20
+ # Voer sentimentanalyse uit op elke vertaalde zin
21
+ results = classifier(translated_sentences)
22
 
23
+ # Tel het aantal positieve, negatieve en neutrale resultaten
24
+ positive_count = sum(1 for r in results if r['label'] == "LABEL_2") # POSITIVE
25
+ negative_count = sum(1 for r in results if r['label'] == "LABEL_0") # NEGATIVE
26
+ neutral_count = len(results) - (positive_count + negative_count) # NEUTRAL
 
 
 
27
 
28
+ # Maak een overzichtelijke output
29
+ output = "**🌍 Meertalige Sentimentanalyse Resultaten:**\n\n"
30
+ for original, translated, result in zip(sentences, translated_sentences, results):
31
+ sentiment_label = result['label']
32
+ score = result['score']
33
+
34
+ # Bepaal sentiment en emoji
35
+ if sentiment_label == "LABEL_2":
36
+ sentiment = "POSITIVE"
37
+ emoji = "😊"
38
+ elif sentiment_label == "LABEL_0":
39
+ sentiment = "NEGATIVE"
40
+ emoji = "😑"
41
+ else:
42
+ sentiment = "NEUTRAL"
43
+ emoji = "🟦"
44
+
45
+ output += f"πŸ“Œ **'{original}'**\nπŸ”„ **Vertaling:** {translated}\nπŸ“Š **Sentiment:** {emoji} {sentiment} ({score:.2f})\n\n"
46
+
47
+ # Maak een grafiek met de sentimentverdeling
48
+ labels = ["Positief", "Neutraal", "Negatief"]
49
+ values = [positive_count, neutral_count, negative_count]
50
+ colors = ["#4CAF50", "#2196F3", "#F44336"] # Groen, Blauw, Rood
51
+
52
+ fig, ax = plt.subplots()
53
+ ax.pie(values, labels=labels, autopct='%1.1f%%', startangle=90, colors=colors)
54
+ ax.axis("equal") # Gelijke assen voor een ronde taartdiagram
55
+
56
+ return output, fig
57
+
58
+ # Gradio-interface met tekstanalyse en een grafiek
59
  demo = gr.Interface(
60
+ fn=analyze_multilingual_sentences,
61
+ inputs=gr.Textbox(lines=5, placeholder="Voer meerdere zinnen in, gescheiden door een nieuwe regel..."),
62
+ outputs=["text", "plot"],
63
+ title="🌍 Meertalige Sentimentanalyse (Met Neutraal Sentiment en Grafiek)",
64
+ description="Voer meerdere zinnen in in elke taal. De app vertaalt elke zin naar Engels en voert sentimentanalyse uit. Het resultaat wordt weergegeven met een overzicht en een grafiek.",
65
  examples=[
66
+ ["Ik hou van programmeren!\nHet is vandaag een moeilijke dag.\nDeze film was okΓ©."],
67
+ ["Je suis fatiguΓ© aujourd'hui.\nLe temps est magnifique!\nC'Γ©tait une expΓ©rience moyenne."],
68
+ ["Hoy hace mucho frΓ­o.\nEstoy muy feliz con mi nuevo trabajo.\nNo estoy seguro de cΓ³mo me siento hoy."],
69
+ ["Das Essen war fantastisch!\nIch habe slecht geslapen.\nDer Film war ganz normal."]
 
70
  ]
71
  )
72
 
 
74
  demo.launch()
75
 
76