Sentify, film yorumlarının ardındaki duyguyu (Pozitif, Negatif, Nötr) keşfeden, yerel dil kısıtlarını aşmak için çeviri katmanıyla güçlendirilmiş dağıtık bir yapay zeka sistemidir. Geleneksel Makine Öğrenmesi yöntemlerinden modern Transformer mimarilerine uzanan model karşılaştırmalarını ve bu modellerin Microservice mimarisiyle canlıya alınmasını kapsar.
Uygulamayı tarayıcınızda test edin:
👉 Sentify: AI Duygu Analizi
Bu proje, bir NLP modelinin sadece eğitilmesini değil, gerçek dünya kısıtları (RAM, Dil bariyeri, Sınıf dengesizliği) altında nasıl yüksek performanslı bir ürüne dönüştürüleceğini odak noktasına alır.
Öne Çıkan Mühendislik Adımları:
- Hybrid Inference: Türkçe morfolojik karmaşıklığı aşmak için
Translation + RoBERTamimarisi. - 3-Class Sentiment: Pozitif ve Negatifin yanısıra "Nötr" duyguları da ayırt edebilen
twitter-roberta-base-sentimententegrasyonu. - Microservice Architecture: Frontend (Render) ve Backend (Hugging Face) birimlerinin birbirinden bağımsız ölçeklenmesi.
- Containerization: Tüm sistemin Dockerize edilerek ortam bağımsız hale getirilmesi.
- API Optimization: FastAPI ile asenkron istek yönetimi ve "Lazy Loading" model yükleme stratejisi.
- Resource Optimization: Kısıtlı bulut kaynaklarında (512MB RAM) büyük modelleri çalıştırmak için mimari çözümler.
Proje, yüksek bellek gereksinimi duyan derin öğrenme modellerini optimize etmek amacıyla Distributed (Dağıtık) bir yapıda kurgulanmıştır:
- Frontend (UI): Render üzerinde koşan Streamlit uygulaması. Kullanıcı dostu arayüz ve asenkron API istek yönetimi sağlar.
- Backend (API): Hugging Face Spaces üzerinde Docker konteynerında koşan FastAPI. 16GB RAM desteği ile BERT modelini saniyeler içinde yükler ve tahmin üretir.
- Model Serving: Model, API tarafında "Lazy Loading" stratejisiyle yüklenerek sunucu başlangıç hızı optimize edilmiştir.
graph LR
A[Kullanıcı Input: 'Harikaydı'] --> B[Streamlit UI - Render]
B -- JSON Post --> C[FastAPI - HF Spaces]
C -- Translation Layer --> D[GoogleTrans: 'It was great']
D -- Inference --> E[RoBERTa Model]
E -- Result: Positive --> C
C -- Response --> B
B -- UI Output: Pozitif 😊 + Konfeti --> A
Bu projede, duygu analizi için dünya çapında standart kabul edilen IMDB Movie Reviews Dataset kullanılmıştır.
Veri Seti Özellikleri:
- 50.000 film yorumu.
- İkili (binary) duygu etiketleri (pozitif / negatif).
- Dengeli dağılım: 25.000 eğitim, 25.000 test örneği.
Veri seti üzerinde yapılan ilk incelemeler, modelin öğrenme sürecini optimize etmek için kullanılmıştır.
| Sınıf Dağılımı | Metin Uzunluğu Dağılımı |
|---|---|
![]() |
![]() |
En sık geçen kelimeler ile pozitif ve negatif kelime bulutları incelenmiştir.
| Positive Word Cloud | Negative Word Cloud |
|---|---|
![]() |
!![]() |
Geleneksel bir yaklaşım olan Lojistik Regresyon ile %88.74 doğruluk elde edilmiştir.
| En Pozitif Kelimeler | En Negatif Kelimeler |
|---|---|
![]() |
![]() |
Metinlerin ardışık yapısını kavramak için çift yönlü LSTM mimarisi kullanılmıştır. Stanford GloVe önceden eğitilmiş kelime vektörleri ile transfer learning uygulanmıştır.
Proje sürecinde iki temel Transformer yaklaşımı uygulanmıştır:
- BERT Fine-Tuning:
bert-base-uncasedmodeli IMDB verisiyle %92.4 doğruluk vermiştir. - Translation-Augmented RoBERTa: Canlı sistemde, yerel dil (Türkçe) desteği ve 3 sınıflı (P/N/Nötr) analiz yeteneği için
cardiffnlp/twitter-roberta-base-sentimentmodeli tercih edilmiştir.
Proje kapsamında eğitilen tüm modellerin başarı oranları aşağıda karşılaştırılmıştır. Modern Transformer mimarilerinin (BERT) klasik ve LSTM tabanlı yöntemlere üstünlüğü net bir şekilde gözlenmektedir.
| Model | Doğruluk (Accuracy) | Dil Desteği | Duygu Sınıfları |
|---|---|---|---|
| Lojistik Regresyon | %88.7 | İngilizce | 2 (P/N) |
| Bi-LSTM (GloVe) | %88.1 | İngilizce | 2 (P/N) |
| BERT (Fine-tuned) | %92.4 | İngilizce | 2 (P/N) |
| RoBERTa (Hybrid) | %90.2+ | TR / EN | 3 (P/N/Nötr) |
| Kategori | Araçlar |
|---|---|
| Dil ve ML | Python 3.12, PyTorch, Transformers |
| NLP & Çeviri | NLTK, Googletrans API |
| Backend API | FastAPI, Uvicorn |
| Frontend UI | Streamlit |
| DevOps | Docker, Docker Compose, Hugging Face Spaces, Render |
Sistem, iki aşamalı bir mikroservis mimarisiyle ayağa kaldırılmıştır:
- Backend (FastAPI): Model,
/predictendpoint'i üzerinden JSON tabanlı tahminler sunar. Hugging Face Spaces üzerinde Docker konteynerında koşturulur. - Frontend (Streamlit): Kullanıcı etkileşimini sağlayan, asenkron yapıda çalışan şık arayüz. Render üzerinde host edilmektedir.
| Pozitif Sonuç | Negatif Sonuç | Nötr Sonuç |
|---|---|---|
![]() |
![]() |
![]() |
1. Bellek Yönetimi (RAM Management): Ücretsiz bulut servislerindeki 512MB RAM limiti nedeniyle model yükleme sorunları aşılmak için Backend ve Frontend ayrıştırılmış (Decoupling), model API birimi yüksek RAM sunan HF Spaces'e taşınmıştır.
2. Dil Bariyeri ve Morfoloji: Türkçe'deki karmaşık çekim eklerini (örn: "harikaydı") doğrudan işlemekte zorlanan modeller yerine, metinleri İngilizceye normalize eden bir Çeviri Katmanı eklenerek sistemin dilden bağımsız çalışması sağlanmıştır.
3. 3-Sınıflı Analiz:
İkili (P/N) modellerin kararsız kaldığı durumları yönetmek için 3 sınıflı Twitter-RoBERTa mimarisine geçilerek "Nötr" alanı tanımlanmıştır.
Projeyi yerelinizde Docker ile saniyeler içinde çalıştırabilirsiniz:
- Depoyu klonlayın:
git clone [https://github.com/beyzahiz/sentiment-analysis-nlp.git](https://github.com/beyzahiz/sentiment-analysis-nlp.git)
cd sentiment-analysis-nlp- Docker Compose ile ayağa kaldırın:
docker-compose up --buildLinkedin: linkedin.com/in/beyzahiz











