kedimestan commited on
Commit
7c2e5c6
1 Parent(s): d1dc762

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +0 -277
README.md CHANGED
@@ -45,71 +45,6 @@ Fatih Kürşat Cansu(Danışman)
45
 
46
  Mehmet Kağan Albayrak(Üye): https://github.com/TFLkedimestan
47
 
48
- ## Problem:
49
-
50
- Ele alınan problem, özellikle çocuk ve genç okurlar için uygun kitapların seçilmesi sürecindeki eğitimcilerin ve yetişkinlerin yaşadıkları belirsizliktir.
51
-
52
-
53
-
54
- Kitapların içerdiği dil, temalar ve uygunsuz öğeler, yaş gruplarına göre farklı etkiler yaratmaktadır.
55
-
56
-
57
-
58
- Bu bağlamda, öğretmenler, kütüphaneciler, ebeveynler ve okurlar için kitapların içeriklerinin değerlendirilmesi ve uygunluk derecelerinin belirlenmesi oldukça önem arz etmektedir
59
-
60
-
61
-
62
- ## Projenin Tanımı:
63
-
64
- Bu proje, kullanıcıların sisteme yükledikleri Türkçe kitapların PDF dosyalarını analiz ederek kitapların uygun yaş aralıklarını, içerilerinde kaç uygunsuz cümle ve kelime geçtiği vb. bilgileri belirlemeyi ve bunları kullanıcıya bildirmeyi amaçlayan bir uygulamadır.
65
-
66
-
67
-
68
- Bu projenin ana teması, kitapların içerdiği dil ve temaların uygunluğunu değerlendirerek okurların ve eğitimcilerin doğru seçimler yapmasını sağlamaktır. Elde edilen bulgular doğrultusunda proje bu amaca yüksek bir doğrulukla ulaşmaktadır.
69
-
70
-
71
-
72
- ## Projenin Sağladığı Çözüm ve Hedef Kitlesi
73
-
74
- Bu proje kitapların içeriğini analiz ederek kitaplar hakkında çeşitli bilgiler ve sonuçlar çıkartıp bunları kullanıcıya vermektedir. Bu sayede kullanıcı okuyacağı veya önereceği kitap hakkında derinlemesine bilgi sahibi olmaktadır. Uygulamanın verdiği yaş aralığı sayesinde uygun kitapları önerebilecek veya okuyabilecektir.
75
-
76
-
77
-
78
- Proje, kitap bulma ve önerme bakımında zorluk yaşayan kişilere yöneliktir.
79
-
80
-
81
-
82
- Bu projenin hedef kitlesi şunlardır:
83
-
84
-
85
-
86
- •Kültür ve Turizm Bakanlığına bağlı halk kütüphanelerinde çalışan kütüphaneciler,
87
-
88
-
89
-
90
- •Milli Eğitim Bakanlığına bağlı öğretmenler,
91
-
92
-
93
-
94
- •Eğitimciler,
95
-
96
-
97
-
98
- •Çocuklarına kitap önerecek olan ebeveynler,
99
-
100
-
101
-
102
- •Okurlar.
103
-
104
-
105
-
106
- ## Proje İş Akışı
107
-
108
-
109
-
110
- ![Projenin başarıyla tamamlanması için gereken görevlerin ve süreçler](https://github.com/Abra-Muhara/kitapmetre-2024AcikHackTDDI/blob/main/additionalImages/workflow.png)
111
-
112
-
113
 
114
  ## Projemizin Aşamaları:
115
 
@@ -131,65 +66,6 @@ Projemizin Aşamaları:
131
 
132
  ## Veri Seti ve Araçlar
133
 
134
- ### Uygunsuzluk Modeli Veri Seti
135
-
136
- **kaggle.com/datasets/toygarr/turkish-offensive-language-detection**
137
-
138
- Bu proje için 2 adet veri seti kullanılmıştır. Bunlardan biri Kaggle’dan alınmış olup kullanıcıların Twitter üzerinde paylaştığı ve ‘‘ofansif’’ veya ‘‘ofansif değil’’ olarak sınıflandırılan gönderilerin bulunduğu bir veri setidir. Bu veri setiyle metinlerin ofansif olup olmadığını bulan bir model oluşturulmuştur.
139
-
140
-
141
-
142
- İçerisinde;
143
-
144
-
145
-
146
- •42.398 adet eğitim verisi,
147
-
148
-
149
-
150
- •8.851 adet test verisi,
151
-
152
-
153
-
154
- •1.756 adet doğrulama verisi bulunmaktadır.
155
-
156
-
157
-
158
- ![Veri Seti Veri Dağılımı](https://github.com/Abra-Muhara/kitapmetre-2024AcikHackTDDI/blob/main/additionalImages/set-dagilim.png)
159
-
160
-
161
-
162
- Veri Seti Veri Dağılımı
163
-
164
-
165
-
166
-
167
- ![Eğitim Seti Veri Dağılımı](https://github.com/Abra-Muhara/kitapmetre-2024AcikHackTDDI/blob/main/additionalImages/egitim_set.png)
168
-
169
-
170
-
171
- Eğitim Seti Veri Dağılımı
172
-
173
-
174
-
175
-
176
- ![Test Seti Veri Dağılımı](https://github.com/Abra-Muhara/kitapmetre-2024AcikHackTDDI/blob/main/additionalImages/test_set.png)
177
-
178
-
179
-
180
- Test Seti Veri Dağılımı
181
-
182
-
183
-
184
-
185
- ![Doğrulama Seti Veri Dağılımı](https://github.com/Abra-Muhara/kitapmetre-2024AcikHackTDDI/blob/main/additionalImages/valid_set.png)
186
-
187
-
188
-
189
- Doğrulama Seti Veri Dağılımı
190
-
191
-
192
-
193
  ### Yaş Aralığı Modeli Veri Seti
194
 
195
  Bir diğer veri seti, kelime listesi ve bir önceki veri setiyle oluşturan model ile sıfırdan oluşturulmuştur.
@@ -253,98 +129,6 @@ Veri Setinden Bir Örnek
253
 
254
 
255
 
256
- ## Modellerin Oluşturulması
257
-
258
- ### Modellerin Linkleri
259
-
260
- Yaş Aralığı Sınıflandırma: https://huggingface.co/AbraMuhara/AgeClassificationTDDI2024
261
-
262
-
263
-
264
- Uygunsuz Cümle Sınıflandırma: https://huggingface.co/AbraMuhara/Fine-TunedBERTURKOfansifTespit
265
-
266
-
267
-
268
- ### Uygunsuzluk Modelleri
269
-
270
- Metinlerin uygunsuzluğunu ölçen model için çeşitli mimariler kullanılmıştır.
271
-
272
- Bunlar:
273
-
274
-
275
-
276
- •ANN:
277
-
278
- Bahsi geçen modellerden ilki olan ve metinlerin uygunsuzluk düzeylerini ölçen model için farklı mimariler kullanan 4 model oluşturulmuştur. Bunlar BERT, BERT-Turkish, RNN ve kendimizin oluşturduğu bir ANN modelidir.
279
-
280
-
281
-
282
- İlk olarak deneme amaçlı bir ANN oluşturup eğiterek %89,42 doğrulukla ve 0.3972 loss ile çalıştığına ulaşıldı. Fakat büyük veya karmaşık bağlamlı metinlerde sorun çıkarttığı için bu model kullanılmamıştır.
283
-
284
-
285
-
286
- ![Modelin Hiperparametreleri](https://github.com/Abra-Muhara/kitapmetre-2024AcikHackTDDI/blob/main/additionalImages/ann.png)
287
-
288
-
289
-
290
- •RNN:
291
-
292
- Ardından 4 GRU (Geçitli Tekrarlayan Birim) katmanlı bir RNN (Yinelemeli Sinir Ağı) oluşturulmuştur. Optimizasyon algoritması olarak aşırı öğrenmeyi azaltıp daha hızlı ve kararlı öğrenme sağlayan AdamW kullanılmıştır. İlk olarak 4 epoch’a kadar eğitilmiştir. Ardından Early Stopping kullanılmış ve 6. epoch’ta loss arttığı için eğitim durdurulmuştur. Model %89,83 doğrulukla çalışmaktadır. Ancak BERT ile yapılan model daha yüksek doğrulukla çalıştığı için bu modeli kullanılmamıştır.
293
-
294
-
295
-
296
- ![Modelin Hiperparametreleri](https://github.com/Abra-Muhara/kitapmetre-2024AcikHackTDDI/blob/main/additionalImages/rnn.png)
297
-
298
-
299
-
300
- ![Çeşitli Epoch Değerlerinde RNN Modelinin Doğruluk Değerleri](https://github.com/Abra-Muhara/kitapmetre-2024AcikHackTDDI/blob/main/additionalImages/accuracy.png)
301
-
302
-
303
-
304
- ![Çeşitli Epoch Değerlerinde RNN Modelinin Kayıp Değerleri](https://github.com/Abra-Muhara/kitapmetre-2024AcikHackTDDI/blob/main/additionalImages/loss.png)
305
-
306
-
307
-
308
- •BERT:
309
-
310
- **"bert-base-uncased"**
311
-
312
- Ardından BERT ile fine-tuning kullanarak yeni bir model oluşturulmuştur. Bu model ilk olarak 3 epoch ile ardından 5 epoch ile eğitilmiş fakat doğruluğun artmamasından dolayı 3 epoch kullanan model tercih edilmiştir. Optimizasyon algoritması olarak tekrardan AdamW kullanılmıştır. Model’in f1 doğruluğu %91’dir. Fakat BERT-Turkish ile yapılan modelin doğruluğu daha yüksek olduğu için tercih edilmemiştir.
313
-
314
-
315
-
316
- ![Modelin Değerlendirmesi](https://github.com/Abra-Muhara/kitapmetre-2024AcikHackTDDI/blob/main/additionalImages/bert-accuracy.png)
317
-
318
-
319
-
320
- ![Modelin Hiperparametreleri](https://github.com/Abra-Muhara/kitapmetre-2024AcikHackTDDI/blob/main/additionalImages/bert-param.png)
321
-
322
-
323
-
324
- •BERT-Turkish:
325
-
326
- **"dbmdz/bert-base-turkish-128k-uncased"**
327
-
328
- Ardından BERT-Turkish ile fine-tuning kullanarak yeni bir model oluşturuldu. BERT-Turkish, Kemal Oflazer tarafından 128k’lık bir kelime haznesi ile BERT’in üzerine eğitilen bir modeldir. Optimizasyon algoritması olarak tekrardan AdamW kullanılmıştır. Model’in f1 doğruluğu %93’dir. En yüksek doğruluğa sahip model olmasından dolayı uygunsuzluk modeli olarak bu model kullanılmıştır.
329
-
330
-
331
-
332
- ![Modelin Değerlendirmesi](https://github.com/Abra-Muhara/kitapmetre-2024AcikHackTDDI/blob/main/additionalImages/bert-tr-accuracy.png)
333
-
334
-
335
-
336
- ![Modelin Hiperparametreleri](https://github.com/Abra-Muhara/kitapmetre-2024AcikHackTDDI/blob/main/additionalImages/bert-tr-params.png)
337
-
338
-
339
-
340
- Bu modellerin doğrulukları aşağıdadır.
341
-
342
-
343
-
344
- ![Farklı Model Mimarilerinde Uygunsuzluk Modelinin Doğruluk Değerleri](https://github.com/Abra-Muhara/kitapmetre-2024AcikHackTDDI/blob/main/additionalImages/offensive-accuracies.png)
345
-
346
-
347
-
348
  ### Yaş Aralığı Modeli
349
 
350
  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.
@@ -407,61 +191,6 @@ $206,835 -(AWS ∗1,015)+(ASW ∗8,46)$ (Flesch, 1948)
407
 
408
  *$ASW$ = Kelime başına ortalama hece sayısı
409
 
410
- ## GUI
411
-
412
- customtkinter: Uygulamamıza modern bir görüntü katan özelleştirilmiş tkinter
413
-
414
-
415
-
416
- Uygulamamızın iki modu vardır: Gece ve Gündüz modu.
417
-
418
- Bu iki modun yaptığı arkaplan ve butonların rengini ayarlamasıdır.
419
-
420
- Uygulamamızın sağ alt köşesinde bulunan bilgilendirme butonu, kullanıcının uygulamayı nasıl kullanması gerektiğini ve yapımcısı olan Abra Muhara ekibindeki üyeleri gösterir.
421
-
422
- Uygulama ilk açıldığında ortadaki 'Dosya yükle' yazan butona basıldığında bilgisayarımızdan ölçmek istediğimiz kitabı (pdf'yi) seçmemiz istenir.
423
- ![Dosya yükleme merkezi](https://github.com/Abra-Muhara/kitapmetre-2024AcikHackTDDI/blob/main/additionalImages/dosya_yukle.jpg)
424
-
425
- ![Kitap Analizi](https://github.com/Abra-Muhara/kitapmetre-2024AcikHackTDDI/blob/main/additionalImages/kitap_analiz.jpg)
426
-
427
- Dosya seçildikten sonra kitabın gerekli bilgileri toplanır ve bir tablo haline getirilir.
428
-
429
- Tablo kullanıcıya sunulur ve önerilen yaş aralığı buna göre bildirilir.
430
-
431
- ## Proje Yol Haritası
432
-
433
- Projede oluşturulan modeller FastAPI, Hugging Face ve Github platformlarına yüklenmiştir. İlerleyen süreçte açık kaynak kodlu olan bu platformlar üzerinden kullanıcılar tarafından geliştirilebilir. Ayrıca proje halk kütüphanelerinde kullanıma sunulabilir.
434
-
435
-
436
-
437
- Projede geliştirilebilecek konular şunlardır:
438
-
439
-
440
-
441
- •Veri setinde kullanılan kitap sayısı artırılabilir ve daha yüksek doğruluk elde edilebilir.
442
-
443
-
444
-
445
- •Ofansif kelime listesindeki kelime sayısı artırılabilir ve daha yüksek doğruluk elde edilebilir.
446
-
447
-
448
-
449
- •Uygunsuzluğu ölçen model daha büyük NLP modelleri ile eğitilip daha tutarlı sonuçlar alınabilir.
450
-
451
-
452
-
453
- Veri setinde kullanılan kitap sayısının artırılabilmesi için kullanıcıların veri setinde kullanılabilmesi için kitap yükleyebileceği demo bir web sitesi oluşturulmuştur. Bu web sitesinden kullanıcılar farklı kitapları ve bu kitapların yaş aralıklarını yükleyerek veri setini büyütebilir ve daha yüksek doğruluk elde edilmesini sağlayabilir.
454
-
455
-
456
-
457
- Web sitesi linki:
458
-
459
- https://kitapmetre-veri-seti-araci.glitch.me
460
-
461
-
462
-
463
- ![KitapMetre Veri Seti Aracı](https://github.com/Abra-Muhara/kitapmetre-2024AcikHackTDDI/blob/main/additionalImages/veri-seti-arac.png)
464
-
465
  ## Fast-API
466
 
467
  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:
@@ -471,12 +200,6 @@ Projenin sonunda elde ettiğimiz modelin kullanıcıların daha kolay erişilmes
471
  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]}
472
  olacak şekilde göndermenizdir. Cevap olarak {"age_group": yazı şeklinde yaş kategorisi} gönderilecektir.
473
 
474
- ## Kurulum Rehberi
475
- Çalıştırmanız tek gereken kod:
476
- ```python
477
- pip install -r requirements.txt
478
- ```
479
- Sonrasında gui klasöründeki main.py dosyasını çalıştırın
480
 
481
  ## Kaynakçalar:
482
 
 
45
 
46
  Mehmet Kağan Albayrak(Üye): https://github.com/TFLkedimestan
47
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48
 
49
  ## Projemizin Aşamaları:
50
 
 
66
 
67
  ## Veri Seti ve Araçlar
68
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
69
  ### Yaş Aralığı Modeli Veri Seti
70
 
71
  Bir diğer veri seti, kelime listesi ve bir önceki veri setiyle oluşturan model ile sıfırdan oluşturulmuştur.
 
129
 
130
 
131
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
132
  ### Yaş Aralığı Modeli
133
 
134
  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.
 
191
 
192
  *$ASW$ = Kelime başına ortalama hece sayısı
193
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
194
  ## Fast-API
195
 
196
  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:
 
200
  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]}
201
  olacak şekilde göndermenizdir. Cevap olarak {"age_group": yazı şeklinde yaş kategorisi} gönderilecektir.
202
 
 
 
 
 
 
 
203
 
204
  ## Kaynakçalar:
205