Skip to content

Halil3509/TEKNOFEST-Dilbazlar

Repository files navigation

Dilbazlar Ekibi Kimdir?

Dilbazlar ekibi Teknofest Türkçe Doğal Dil İşleme yarışmasında yarışmak için kurulan 4 üyeden oluşan bir takımdır. Bilgisayar mühendisleri Halil İbrahim Hatun ve Muhammed Ensar Çıtak, Bilgisayar mühendisliği 4. sınıf öğrencisi Büşra Kurun ve lise öğrencisi Ahmet Akay'dan oluşmaktadır. Ekipte herkes veri kazıma ve veri temizleme aşamasında yer almıştır. Model eğitimi kısmında takım kaptanı Halil ve ekip üyesi Ensar çalışmalarını yürütürken Büşra ve Ahmet de dokümantasyon ve test aşamalarını gerçekleştirmiştir.

Proje Nedir?

Bu proje, DSM-5'e dayalı olarak Anksiyete ve Depresyon bozukluklarını ele almaktadır. Projede, anksiyete ve depresyon gibi rahatsızlıklar; Distimi, PMDD (Prementrüel Disforik Bozukluk), Agorafobi, Seçici Dilsizlik, Panik Bozukluk, Sosyal Anksiyete ve Fobi gibi alt kategorilere ayrılmaktadır.

Proje Aşamaları

Proje Aşamaları

  1. Veri Kazıma ve Önişleme
  2. Model Eğitimi
  3. Test ve Optimizasyon
  4. Chatbot Seneryolarının Oluşturulması

1. Veri Kazıma ve Önişleme Aşaması

1.1. Veri Toplama

image Veri kazıma aşamasında, X (Twitter) ve Reddit sosyal medya platformlarından etiketli veriler toplanmış ve İngilizce bir veri seti oluşturulmuştur. Ardından, bu veriler HuggingFace'den Helsinki-NLP/opus-mt-tc-big-en-tr modeli kullanılarak Türkçeye çevrilmiştir.

Buna ek olarak, Youtube yorumları ve Ekşi Sözlük verileri de kullanılarak organik Türkçe veri elde edilmiştir. Bu veriler, çevrilmiş veri seti ile birleştirilmiştir.

Elde edilen tüm veri seti, LLM modeli olan Gemini 1.5 Flash (ücretsiz versiyonu kullanılmıştır) ile augmentasyon işlemi uygulanarak genişletilmiştir.

Bu işlemler sonucunda elde edilen Türkçe veri setlerimiz:

Bu çalışma, Türkiye literatüründe bu alanda yapılan ilk çalışma olma özelliğini taşımaktadır.

Kullanılan Kod Parçaları:

2. Model Eğitimi

image

Model eğitimi sürecinde, BERT tabanlı önceden eğitilmiş modeller olan dbmdz/bert-base-turkish-cased ve dbmdz/bert-base-turkish-128k-uncased modelleri kullanılmıştır.

Model eğitiminde, ilk olarak bir içeriğin "hasta" olup olmadığını belirlemek amacıyla bir model geliştirilmiştir. Eğer hastalık tespiti yapılırsa, sistem anksiyete ve depresyon için iki ayrı ikili modele yönlendirilir. Anksiyete veya depresyon modelinin çıktısı belirlenen eşik değerini aşarsa, sistem bu hastalıklar üzerine çalışan detaylı modellere yönlendirilir.

Anksiyete tarafında Agorafobi, Fobi, Sosyal Anksiyete, Seçici Dilsizlik ve Panik Bozukluk; depresyon tarafında ise Distimi ve PMDD gibi hastalıklar detaylı modellerde ele alınmaktadır. Eğer anksiyete veya depresyon tarafında ağırlıklı sonuçlar eşik değerini aşamazsa, sonuçlar yalın olarak "Anksiyete" veya "Depresyon" olarak hesaplanır.

Kullanılan kod parçaları:

3. Test ve Optimizasyon

Screenshot 2024-08-09 122555


Model çıktıları:

Model Adı F1 Skoru Doğruluk (Acc)
Hastalık mı değil mi Modeli %97,4 %98,1
Anksiyete İkili (Binary) Modeli %98,9 %98,7
Depresyon İkili (Binary) Modeli %98,5 %98,3
Anksiyete Spesifik Modeli %90,1 %92,7
Depresyon Spesifik Modeli %84,2 %84

Test ve değerlendirme tarafında tranformers-interpret kütüphanesi kullanılmıştır. Bu sayede çıktıdaki kelimelerin hedef etiket ile nasıl çekinlendiği görülmektedir.

Depresyon spesifik modelinden çıkan Agorafobi çıktısının cümleyi çekimleme şekli: image

Test olarak F1 ve Doğruluk metriklerinin yanı sıra günlük hayat örnek personalarıyla ürünün uygulanabilirliği test edilmiştir. (Diğer aşamada detaylara erişebilirsiniz.)

Kullanılan kod parçaları: Tranformers-interpreting

4. Chatbot Seneryolarının Oluşturulması 🤖

WhatsApp Image 2024-08-09 at 1 34 14 PM

Web arayüz olarak Streamlit kütüphanesi kullanılmıştır. Ana ekranda kullanıcı sol taraftan geçmiş konuşmalarına erişebilir veya yeni bir konuşma oluşturabilmektedir. Sol tarafta verilen grafik, 10 adet verilmiş etiketlerin girdiye bağlı olarak dağılımını canlık olarak göstermektedir.

Chatbot olarak Gemini 1.5 flash modeli ücretsiz olarak kullanılmıştır. Kişinin hastalık bağlamlı içerik bulundurma oranı verilen eşik değerini geçiyorsa Gemini'a rahatsızlık model sonuçları ifade edilir ve gemini da bunlar düzenli bir şekilde ifade eder.

Kullanılan kod parçaları: Chatbot Dosyası

Chatbot'un örnek bir seneryoya verdiği çıktı WhatsApp Image 2024-08-09 at 1 52 10 PM

Nasıl Çalıştırılır? 🚀

Sistem streamlit kütüphanesi kullanılarak ayağı kaldırılmaktadır.

  1. Öncelikle yukarıda verilen linklerdeki veri setlerine erişim hakkı sağlamalısınız.

  2. Projenin ana yoluna gidiniz. (Projeyi pycharm veya vs code gibi IDE'lerden açarsanız, konsolda otomatik olarak gelecektir.)

  3. Sonraki süreçte kendi API keylerinizi .env dosyası içerisinde aşağıda belirtilen yerlere yapıştırız:

GOOGLE_API_KEY=<google_api_key>
HG_ACCESS_TOKEN=<hugging_face_access_token>
  1. Aşağıdaki kod parçasını çalıştırarak gerekli olan bütün kütüphaneleri indirin
pip install -r requirements.txt
  1. Bu işlemden sonra aşağıdaki kod satırlarını sırayla çalıştırarak ürünü kullanabilirsiniz.

Not: İlk çalıştırma sırasında HuggingFace modellerinin indirilmesi zaman alacaktır.

cd Chatbot

streamlit run streamlit.py

Demo Videosu

Dilbazlar.Final.Demo.Videosu.mp4