Git Product home page Git Product logo

🐊 G4T0R2 - Türkçe Doğal Dil İşleme Ekibi

Bu çalışma, Teknofest 2024 Türkçe Doğal Dil İşleme yarışması "Senaryo" kategorisinde "Entity Bazlı Duygu Analizi" problemi için geliştirilmiştir.

🐊 Amaç


Bu proje, "Entity Bazlı Duygu Analizi Yarışması" kapsamında müşteri geri bildirimlerini analiz ederek belirli hizmet yönleri veya ürün özellikleri ile ilgili duyguları sınıflandırmayı hedeflemektedir. Katılımcılar, farklı sektörlerden ve çeşitli firmalardan veya kurumlardan gelen müşteri yorumlarını inceleyeceklerdir. İlk aşamada, verilen yorumları doğru entity'lere atfetmek için bir yöntem geliştirilmiştir. İkinci aşamada ise bu entity'lere ait hizmet veya ürün özelliklerine yönelik yorumlardaki duyguları (olumlu, olumsuz veya nötr) doğru bir şekilde sınıflandırılmıştır. Bu proje, metin madenciliği ve doğal dil işleme (NLP) tekniklerini kullanarak müşteri geri bildirimlerinden anlamlı içgörüler çıkarma becerilerini test etmeyi amaçlamaktadır. Proje, firmaların müşteri memnuniyetini artırmalarına ve ürün/hizmet geliştirme süreçlerini optimize etmelerine yardımcı olmayı hedeflemektedir.

🐊 Takım Üyeleri


Danışman: Şengül BAYRAK HAYTA - LinkedIn
Kaptan: Alper KARACA - LinkedIn, Github
Üye: Ferhat TOSON - LinkedIn, Github
Üye: Selçuk YAVAŞ - LinkedIn, Github
Üye: Mehmet Emin Tayfur - LinkedIn, Github

🐊 Gereksinimler


Bu proje, Entity Bazlı Duygu Analizi gerçekleştirmek için çeşitli Python kütüphanelerini kullanmaktadır. Aşağıda, kullanılan kütüphaneler ve bunların nasıl kurulacağını gösteren adımlar bulunmaktadır.

app-store-scraper
beautifulsoup4
catboost
fasttext
emoji
gensim
google-play-scraper
lightgbm
matplotlib
mlxtend
numpy
pandas
re
scikit-learn
sklearn-crfsuite
spacy
torch
transformers
tqdm
urllib3
xgboost

Çalışmaların hepsi Kaggle ortamında yapılmıştır. Kullanılan donanımlar;

  • GPU: 2x8 GB VRAM NVIDIA T4 Ekran kartı
  • Processor: Intel(R) Xeon(R) CPU @ 2.20GHz
  • RAM: 32 GB

🐊 Veri Seti


Yarışma için Kaggle ve HuggingFace platformundaki X, Y veri setleri; SikayetVar, Google Play Store ve App Store sitelerinden web kazıma ile veri seti oluşturulmuştur. Veri setine ait dağılımlar aşağıda verilmiştir.

  • RID Sütunu: Çekilen metine ait eşsiz anahtarı (primary key) belirtir.
  • SID Sütunu: RID'e ait metindeki kaçıncı cümle olduğunu belirtir.
  • App Sütunu: Çekilen metinin kaynağını belirtir.
  • Review Sütunu: Yapılan yorumdaki cümleyi belirtir.
  • Aspect Sütunu: Cümledeki "Entity" belirtir.
  • Sentiment Sütunu: Cümledeki "Entity" ait duyguyu belirtir.
RID SID Review Aspect Sentiment
1 1 Uygulamada kartlarda Troy kart geçmiyor. Troy Negatif
1 2 Tam 10 yıldır Turkcell kullanıyorum. Turkcell Nötr
1 3 Türk Telekom çekim kalitesi çok iyi, tavsiye ederim. Türk Telekom Pozitif

"Entity Extraction" için oluşturulan veri setine ait özellikler aşağıda verilmiştir.

Sınıf Veri Sayısı Açıklama
O 2.085.057 Entity olmayan kelimeleri temsil eder.
B-A 155.754 Entity olan kelimeleri temsil eder.
I-A 6.466 Entity önünde bulunan kelimeleri (sıfatlar, belirteçler vb.) temsil eder.

"Sentiment Analysis" için oluşturulan veri setine ait özellikler aşağıda verilmiştir.

Sınıf Veri Sayısı Açıklama
Negatif 85.690 Belirtilen entity'nin duygusunun "Negatif" olduğunu gösterir.
Nötr 8.185 Belirtilen entity'nin duygusunun "Nötr" olduğunu gösterir.
Pozitif 61.489 Belirtilen entity'nin duygusunun "Pozitif" olduğunu gösterir.

🐊 Uygulama


Birinci Uygulama: Girdi olarak verilen metni sınıflandırır.

Bu uygulamada ön yüz geliştirme için JavaScript ile "React JS"; arka uç geliştirme için "Axios" kullanılmıştır. API için Python ile "FastAPI" kütüphanesi kullanılmıştır. Bu API, Docker konteyneri haline getirilip HuggingFace platformu üzerinde yayınlanmıştır.

İkinci Uygulama: İnternet üzerinde son girilen yorumları sınıflandırır.

Belirtilen Entity'e ait yorumları, seçilen platform (Google Play Store, App Store, SikayetVar) üzerinden yapılan son yorumları çekerek bu cümlelerdeki Entity'leri bulup duygularını sınıflandırır.

🐊 Modeller


Her bir problem için eğitilen modeller ve bu modellere ait skorlar aşağıda verilmiştir.

Aspect Extraction

Model Model Tipi Eğitim Süresi F1-Macro Skoru
ConvBERT (dbmdz/convbert-base-turkish-cased) Cümle Tabanlı 37 dakika 1 saniye %99.87
BERT (dbmdz/bert-base-turkish-cased) Cümle Tabanlı 30 dakika 10 saniye %99.71
BERT (dbmdz/bert-base-turkish-128k-cased) Cümle Tabanlı 34 dakika 16 saniye %99.57
DeBERTa (microsoft/mdeberta-v3-base) Cümle Tabanlı 49 dakika 13 saniye %97.39
ELECTRA (dbmdz/electra-base-turkish-cased-discriminator) Cümle Tabanlı 36 dakika 17 saniye %97.28
DistilBERT (dbmdz/distilbert-base-turkish-cased) Cümle Tabanlı 17 dakika 46 saniye %97.22
CRF Cümle Tabanlı 1 dakika 16 saniye %96.36
ELECTRA (dbmdz/electra-small-turkish-cased-discriminator) Cümle Tabanlı 6 dakika 35 saniye %94.54
Bi-GRU + CRF Cümle Tabanlı 9 dakika 55 saniye %91.21
Bi-LSTM + CRF Cümle Tabanlı 10 dakika 1 saniye %74.75
Bi-LSTM Cümle Tabanlı 9 dakika 23 saniye %72.97
Bi-GRU Cümle Tabanlı 9 dakika 33 saniye %59.00

Sentiment Analysis

Model Veri Tabanı Süre F1 Macro Skoru
BERT (dbmdz/bert-base-turkish-cased) Kelime Tabanlı 80 dakika 10 saniye %84.90
MultinomialNaiveBayes + CountVectorizer Cümle Tabanlı 0 dakika 1 saniye %79.52
MultinomialNaiveBayes + TFIDF Cümle Tabanlı 0 dakika 1 saniye %76.61
BERT (dbmdz/bert-base-turkish-128k-cased) Kelime Tabanlı 94 dakika 36 saniye %76.39
Bi-LSTM (Two Input) Kelime Tabanlı 26 dakika 46 saniye %76.25
LSTM Cümle Tabanlı 10 dakika 21 saniye %75.02
Bi-GRU (Two Input) Kelime Tabanlı 16 dakika 57 saniye %74.98
Bi-GRU Cümle Tabanlı 16 dakika 35 saniye %74.85
Attention Cümle Tabanlı 35 dakika 5 saniye %74.84
GRU (Two Input) Kelime Tabanlı 24 dakika 12 saniye %74.84
LSTM (Two Input) Kelime Tabanlı 23 dakika 2 saniye %74.56
GRU Cümle Tabanlı 9 dakika 37 saniye %74.42
RNN Cümle Tabanlı 6 dakika 46 saniye %74.30
Bi-LSTM Cümle Tabanlı 14 dakika 55 saniye %73.99
FastText Cümle Tabanlı 0 dakika 13 saniye %73.03
RNN (Two Input) Kelime Tabanlı 11 dakika 48 saniye %73.16
Bi-LSTM + Word2Vec Cümle Tabanlı 12 dakika 58 saniye %71.33
LSTM + Word2Vec Cümle Tabanlı 9 dakika 13 saniye %69.69
Bi-GRU + Word2Vec Cümle Tabanlı 11 dakika 13 saniye %69.65
LogisticRegression + CountVectorizer Cümle Tabanlı 0 dakika 9 saniye %69.34
GRU + Word2Vec Cümle Tabanlı 8 dakika 5 saniye %68.13
ELECTRA (dbmdz/electra-base-turkish-cased-discriminator) Kelime Tabanlı 48 dakika 36 saniye %65.43
DistilBERT (dbmdz/distilbert-base-turkish-cased) Kelime Tabanlı 47 dakika 36 saniye %64.91
LSTM + GloVe Cümle Tabanlı 8 dakika 47 saniye %64.41
GRU + GloVe Cümle Tabanlı 8 dakika 5 saniye %64.18
LogisticRegression + TFIDF Cümle Tabanlı 0 dakika 9 saniye %59.39
ELECTRA (dbmdz/electra-small-turkish-cased-discriminator) Kelime Tabanlı 15 dakika 10 saniye %56.15
LGBM + CountVectorizer Cümle Tabanlı 0 dakika 10 saniye %55.06
RNN + Word2Vec Cümle Tabanlı 2 dakika 29 saniye %53.42
XGB + CountVectorizer Cümle Tabanlı 0 dakika 11 saniye %53.89
XGB + TFIDF Cümle Tabanlı 1 dakika 30 saniye %52.97
CatBoost + CountVectorizer Cümle Tabanlı 3 dakika 27 saniye %52.08
LGBM + TFIDF Cümle Tabanlı 0 dakika 26 saniye %53.99
ConvBERT (dbmdz/convbert-base-turkish-cased) Kelime Tabanlı 56 dakika 34 saniye %47.76
RNN + GloVe Cümle Tabanlı 1 dakika 14 saniye %47.44
CatBoost + TFIDF Cümle Tabanlı 14 dakika 15 saniye %51.68

🐊 Lisans


Uygulamanın lisansına buradan ulaşabilirsiniz.

🐊 Kaynaklar


G4T0R2 - Teknofest 2024 TDDİ's Projects

g4t0r2-nlp icon g4t0r2-nlp

G4T0R2 - TEKNOFEST 2024 Türkçe Doğal Dil İşleme - Senaryo Ekibi #Acıkhack2024TDDİ

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.