--- license: apache-2.0 language: - tr metrics: - f1 - accuracy library_name: sklearn pipeline_tag: tabular-classification --- # kitapmetre-AbraMuhara ## Bu proje TEKNOFEST Doğal Dil İşleme Yarışması için yapılmıştır. (https://www.teknofest.org/tr/yarismalar/turkce-dogal-dil-isleme-yarismasi/) ## Takım Bilgileri: ![Takım logosu](https://github.com/Abra-Muhara/kitapmetre-2024AcikHackTDDI/blob/main/additionalImages/ABRA%20MUHARA.png) Takım Adı: Abra Muhara Takım ID: #561838 Başvuru ID: #2290264 Hugging Face: https://huggingface.co/AbraMuhara Github: https://github.com/Abra-Muhara Demo Videonun Linki: https://youtu.be/9p1tD68zZGM?si=8WPXhtJwMStNfqwl ## Takım üyeleri: Fatih Kürşat Cansu(Danışman) Şuayp Talha Kocabay(Kaptan): https://github.com/suayptalha Mehmet Kağan Albayrak(Üye): https://github.com/TFLkedimestan ## Projemizin Aşamaları: Projemizin hedefi: Sisteme atılan kitabın yaş aralığını **0-8, 8-12, 12-15, 15-18 ve 18+** olarak sınıflandırması ve kullanıcıya kitap hakkında birçok veriyi bildirmesi. Projemizin Aşamaları: 1. Uygulama aracılığıyla kullanıcıdan kitap PDF'inin alınması ve bu PDF'in metine çevrilmesi. 2. İnce ayar yapılmış **BERTURK** ile cümleleri uygunsuzluklarına göre sınıflandırması. 3. **Kendi yazdığımız kelime listesi** ile kelimeleri uygunsuzluklarına göre sınıflandırması. 4. İlk 2 aşamada elde ettiğimiz verilerin yanı sıra kitapların cümle sayısı, hece sayısı, cümle başına ortalama kelime sayısı, cümle başına ortalama hece sayısı, Ateşman OP(Okunabilirlik Puanı), uygunsuz cümle sayısı, uygunsuz cümle sayısının toplam cümle sayısına oranı, uygunsuz cümle yüzdesi, uygunsuz kelime sayısı, uygunsuz kelime sayısının toplam kelime sayısına oranı, uygunsuz kelime sayısının uygunsuz olmayan kelime sayısına oranı, FRES puanı, Çetinkaya Uzun okunulabilirlik puanı ve ortalama cümle uygunsuzluk değeri ile yaş aralığı sınıflandırması yapılması. 5. Uygulama aracılığıyla kullanıcıya kitap hakkında elde edilen verilerin bildirilmesi. ## Veri Seti ve Araçlar ### Yaş Aralığı Modeli Veri Seti Bir diğer veri seti, kelime listesi ve bir önceki veri setiyle oluşturan model ile sıfırdan oluşturulmuştur. İçerisindeki veriler şunlardır: •Cümle, kelime ve hece sayısı; •Cümle başına ortalama kelime ve hece sayısı; •Ofansif cümle sayısı, oranı ve yüzdesi; •Ofansif kelime sayısı ve oranı; •Ofansif kelime sayısının ofansif olmayan kelime sayısına oranı; •Ortalama cümle ofansifliği; •FRES, COE ve Ateşman okunulabilirlik puanları; •Önerilen yaş aralığı. İçerisinde toplam 113 adet kitabın verisi bulunmaktadır. ![Veri Seti Yaş Aralığı Dağılımı](https://github.com/Abra-Muhara/kitapmetre-2024AcikHackTDDI/blob/main/additionalImages/yas_araligi_dagilim.png) Veri Seti Yaş Aralığı Dağılımı ![enter image description here](https://github.com/Abra-Muhara/kitapmetre-2024AcikHackTDDI/blob/main/additionalImages/yas_veri_ornek.png) Veri Setinden Bir Örnek ### Yaş Aralığı Modeli Yaş aralığı modeli için oluşturulmuş olan veri seti kullanılmıştır. Modeli oluşturmak için çeşitli makine öğrenmesi ve sinir ağı algoritmaları denenmiştir ve aralarında %95,65 ile en yüksek doğruluğa sahip olan Optuna ile optimize edilmiş CatBoost algoritması seçilmiştir. CatBoost, özellikle kategorik verileri otomatik olarak işleyebilmesi sayesinde veri ön işleme sürecini büyük ölçüde kolaylaştıran bir makine öğrenmesi algoritmasıdır. Optuna ise modellerin performansını artırmak için gereken hiperparametrelerin en iyi şekilde ayarlanmasını sağlar. ![Modelin Değerlendirmesi](https://github.com/Abra-Muhara/kitapmetre-2024AcikHackTDDI/blob/main/additionalImages/catboost-accuracy.jpg) ![Modelin Hiperparametreleri](https://github.com/Abra-Muhara/kitapmetre-2024AcikHackTDDI/blob/main/additionalImages/catboost-param.jpg) Ayrıca diğer makine öğrenmesi algoritmalarının yüzde kaç doğruluk verdiği aşağıdadır. ![Farklı Model Mimarilerinde Uygunsuzluk Modelinin Doğruluk Değerleri](https://github.com/Abra-Muhara/kitapmetre-2024AcikHackTDDI/blob/main/additionalImages/accuracies.png) ## Okunulabilirlik Puanları Okunulabilirlik puanları, yapılan araştırmalar sonucu bir metnin farklı dillerde okunulabilirlik endeksini ve farklı yaş aralıkları için okunulabilirlik düzeylerini tespit etmek için oluşturulmuş formüllerdir. Bunlardan en popüler olanları şunlardır: •COE (Çetinkaya Okunulabilirlik Endeksi): $118,823 -(25,987 ∗ASW )-(0,971 ∗AWS)$ (Çetinkaya, 2008) •Ateşman Puanı: $198,825 -40,175 ∗ASW -2,610 ∗AWS$ (Ateşman, 1997) •FRES (Flesch Okunulabilirlik Skoru): $206,835 -(AWS ∗1,015)+(ASW ∗8,46)$ (Flesch, 1948) *$AWS$ = Cümle başına ortalama kelime sayısı *$ASW$ = Kelime başına ortalama hece sayısı ## Fast-API Projenin sonunda elde ettiğimiz modelin kullanıcıların daha kolay erişilmesi adına modelimizi Fast-API ile Hugging Face Space ortamına yükledik. Modelleri indirmenize gerek kalmadan (https://abramuhara-fast-api.hf.space) üzerinden istedikleri verileri alabilirler. Sonuçları alma sırasında yapmaları gereken: 1. Uygunsuzluğunu ölçmek istediğiniz bir cümle var ise tek yapmanız gereken (https://abramuhara-fast-api.hf.space/predict/) sayfasına parametreniz {'text': cümle} şeklinde post yapmanızdır. Cevap olarak {'prediction': 0 ise uygun, 1 ise uygun değil} döndürecek. 2. Tabular verilerini elde ettiğiniz kitabınızın yaş aralığını bulmak isterseniz tek yapmanız gereken verilerinizi örnek veri setindeki sütunlar şeklinde sıralamanız ve (https://abramuhara-fast-api.hf.space/predict-age/) sayfasına parametreniz {'features': list[Float]} olacak şekilde göndermenizdir. Cevap olarak {"age_group": yazı şeklinde yaş kategorisi} gönderilecektir. ## Kaynakçalar: ATEŞMAN, Ender. (1997). Türkçe’de okunabilirliğin Ölçülmesi. A.Ü. Tömer Dil Dergisi, sayı:58,s.171-174. Cetinkaya, B. (2008). Türkçe Metinlerde Okunabilirlik Analizi. Flesch, R. (1948). A New Readability Yardstick. Journal of Applied Psychology, 32(3), 221-233. https://doi.org/10.1037/h0057532