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.
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.
- Veri Kazıma ve Önişleme
- Model Eğitimi
- Test ve Optimizasyon
- Chatbot Seneryolarının Oluşturulması
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:
- 89,900 adet hasta veya normal olarak etiketlenmiş veri,
- 43,400 adet anksiyete veya normal olarak etiketlenmiş veri,
- 57,600 adet depresyon veya normal olarak etiketlenmiş veri,
- 27,600 adet distimi veya PMDD (premenstrüel disforik bozukluk) olarak etiketlenmiş veri,
- 15,700 adet Agorafobi, Panik, Fobi, Seçici Dilsizlik, Sosyal Anksiyete olarak etiketlenmiş veriden oluşmaktadır
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ı:
- Çeviri İşlemi
- Youtube Scraping İşlemi
- Reddit Scraping Dosyası
- Eksi Scraping Dosyası
- LLM-based Augmentation
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ı:
- Anksiyete Verisinin Oluşturulması
- Augmente Edilmiş Verinin Oluşturulması
- Depresyon Verisinin Oluşturulması
- Hasta mı değil mi modeli verisinin oluşturulması
- Hasta mı değil mi modeli Eğitimi
- Depresyon Binary Model Eğitimi
- Anksiyete Binary Model Eğitimi
- Depresyon Hastalıkları Model Eğitimi
- Anksiyete Hastalıkları Model Eğitimi
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:
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
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ı
Sistem streamlit kütüphanesi kullanılarak ayağı kaldırılmaktadır.
-
Öncelikle yukarıda verilen linklerdeki veri setlerine erişim hakkı sağlamalısınız.
-
Projenin ana yoluna gidiniz. (Projeyi pycharm veya vs code gibi IDE'lerden açarsanız, konsolda otomatik olarak gelecektir.)
-
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>
- Aşağıdaki kod parçasını çalıştırarak gerekli olan bütün kütüphaneleri indirin
pip install -r requirements.txt
- 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