Text Classification
Transformers
Safetensors
Turkish
bert
Inference Endpoints
File size: 8,438 Bytes
94e3a08
 
 
 
 
 
 
 
 
c8448b1
 
986d6c8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
---
license: apache-2.0
datasets:
- Toygar/turkish-offensive-language-detection
language:
- tr
metrics:
- f1
- accuracy
library_name: transformers
pipeline_tag: text-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

### Uygunsuzluk Modeli Veri Seti

**kaggle.com/datasets/toygarr/turkish-offensive-language-detection**

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.

  

İçerisinde;

  

•42.398 adet eğitim verisi,

  

•8.851 adet test verisi,

  

•1.756 adet doğrulama verisi bulunmaktadır.

  

![Veri Seti Veri Dağılımı](https://github.com/Abra-Muhara/kitapmetre-2024AcikHackTDDI/blob/main/additionalImages/set-dagilim.png)

  

Veri Seti Veri Dağılımı

  
  

![Eğitim Seti Veri Dağılımı](https://github.com/Abra-Muhara/kitapmetre-2024AcikHackTDDI/blob/main/additionalImages/egitim_set.png)

  

Eğitim Seti Veri Dağılımı

  
  

![Test Seti Veri Dağılımı](https://github.com/Abra-Muhara/kitapmetre-2024AcikHackTDDI/blob/main/additionalImages/test_set.png)

  

Test Seti Veri Dağılımı

  
  

![Doğrulama Seti Veri Dağılımı](https://github.com/Abra-Muhara/kitapmetre-2024AcikHackTDDI/blob/main/additionalImages/valid_set.png)

  

Doğrulama Seti Veri Dağılımı

  

### Uygunsuzluk Modelleri

Metinlerin uygunsuzluğunu ölçen model için çeşitli mimariler kullanılmıştır.

Bunlar:

  

•ANN:

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.

  

İ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.

  

![Modelin Hiperparametreleri](https://github.com/Abra-Muhara/kitapmetre-2024AcikHackTDDI/blob/main/additionalImages/ann.png)

  

•RNN:

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.

  

![Modelin Hiperparametreleri](https://github.com/Abra-Muhara/kitapmetre-2024AcikHackTDDI/blob/main/additionalImages/rnn.png)

  

![Çeşitli Epoch Değerlerinde RNN Modelinin Doğruluk Değerleri](https://github.com/Abra-Muhara/kitapmetre-2024AcikHackTDDI/blob/main/additionalImages/accuracy.png)

  

![Çeşitli Epoch Değerlerinde RNN Modelinin Kayıp Değerleri](https://github.com/Abra-Muhara/kitapmetre-2024AcikHackTDDI/blob/main/additionalImages/loss.png)

  

•BERT:

**"bert-base-uncased"**

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.

  

![Modelin Değerlendirmesi](https://github.com/Abra-Muhara/kitapmetre-2024AcikHackTDDI/blob/main/additionalImages/bert-accuracy.png)

  

![Modelin Hiperparametreleri](https://github.com/Abra-Muhara/kitapmetre-2024AcikHackTDDI/blob/main/additionalImages/bert-param.png)

  

•BERT-Turkish:

**"dbmdz/bert-base-turkish-128k-uncased"**

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.

  

![Modelin Değerlendirmesi](https://github.com/Abra-Muhara/kitapmetre-2024AcikHackTDDI/blob/main/additionalImages/bert-tr-accuracy.png)

  

![Modelin Hiperparametreleri](https://github.com/Abra-Muhara/kitapmetre-2024AcikHackTDDI/blob/main/additionalImages/bert-tr-params.png)

  

Bu modellerin doğrulukları aşağıdadır.

  

![Farklı Model Mimarilerinde Uygunsuzluk Modelinin Doğruluk Değerleri](https://github.com/Abra-Muhara/kitapmetre-2024AcikHackTDDI/blob/main/additionalImages/offensive-accuracies.png)

  


## 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