| import json | |
| import gradio as gr | |
| from textblob import TextBlob | |
| from deep_translator import GoogleTranslator | |
| def sentiment_analysis(text: str) -> str: | |
| """ | |
| Türkçe metni İngilizce'ye çevirip, İngilizce metin üzerinden duygu analizi yapar. | |
| """ | |
| try: | |
| eng_text = GoogleTranslator(source='tr', target='en').translate(text) | |
| except Exception as e: | |
| return json.dumps({"hata": f"Çeviri hatası: {str(e)}"}) | |
| blob = TextBlob(eng_text) | |
| sentiment = blob.sentiment | |
| # Değerleri Türkçeleştir | |
| if sentiment.polarity > 0: | |
| assessment = "pozitif" | |
| elif sentiment.polarity < 0: | |
| assessment = "negatif" | |
| else: | |
| assessment = "nötr" | |
| sonuc = { | |
| "duygu_puani": round(sentiment.polarity, 2), # -1 (negatif) ile 1 (pozitif) arası | |
| "öznelik": round(sentiment.subjectivity, 2), # 0 (nesnel) ile 1 (öznel) arası | |
| "degerlendirme": assessment | |
| } | |
| return json.dumps(sonuc, ensure_ascii=False) | |
| # Create the Gradio interface | |
| demo = gr.Interface( | |
| fn=sentiment_analysis, | |
| inputs=gr.Textbox(placeholder="Türkçe metin girin..."), | |
| outputs=gr.Textbox(), | |
| title="Türkçe Metin Duygu Analizi", | |
| description="Türkçe metinlerde duygu analizi. MCP ile Cursor, VSCode gibi ortamlarda kullanılabilir." | |
| ) | |
| # Launch the interface and MCP server | |
| if __name__ == "__main__": | |
| demo.launch(mcp_server=True) |