BRAIN-TR commited on
Commit
cc461d4
1 Parent(s): bf16000

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +0 -118
README.md CHANGED
@@ -1,121 +1,3 @@
1
  ---
2
  license: apache-2.0
3
  ---
4
- # Brain-Bert-Service
5
-
6
- Google tarafından 2018 yılında BERT uzun adıyla Bidirectional Encoder Representations from Transformers modeli tanıttı. Bu tanıtımla birlikte doğal dil işleme üzerine devrim niteliğinde bir kanal oluşturdu. Bert modeli diğer modellerden ayıran en büyük özellik ise kurulmuş olan bir cümleyi **hem soldan sağa hemde sağdan sola** inceleyebiliyor.Oluşturulan bu mekenizma ile cümlelerdeki anlam ve kelimelerin birbiriyle olan bütünsel yapısını korumuş oluyor.
7
-
8
- Bert bahsedilen bu özelliğin yanı sıra çift yönlü modeli maskeleyebiliyor ve Next Sentence Prediction adını verdiği teknolojileri de eş zamanlı olarak kullanabiliyor. Bir cümlede maskeleme için **%15** kullanırken seçmiş olduğu kelimelerin **%80** de [MASK] token ile geriye kalanının %10'unu rastgele ve %10'unu değiştirmeden bırakıyor. Bert için daha fazla ayrıntı isterseniz aşağıdaki link üzerinden inceleyebilirsiniz.
9
-
10
- https://github.com/google-research/bert
11
-
12
-
13
- Teknofest 2023 Türkçe Doğal Dil İşleme kategorisinden bizimde Aşağılayıcı ifadelerin tespiti noktasında uzun uğraşlar noktasında kullandığımız BERT model ile **başarı oranı en yüksek** olarak karşımız çıktı. Kullandığımız model Türkçe olarak büyük kaynaklar üzerinde eğitilmiş **BERTURK**'ün uncased modelidir. BERTURK modelinin ayrıntıları için [tıklayınız](https://github.com/stefan-it/turkish-bert).
14
-
15
- # Training
16
-
17
- **Data Preprocessing**
18
-
19
- Veri seti okuma işlemi ve veri temizleme servisini kullanarak temiz veri elde edilir. Bu aşamada Teknofest 2023 Doğal Dil İşleme Kategorisindeki Aşağılayıcı Dil Tespiti yarışması için yazmış olduğumuz veri temizleme aşamaları için ayrıntılı bilgi için [tıklayınız](https://github.com/tr-brain-com/acikhack2023TDDI/tree/main/cleaning-service).
20
-
21
- **Not:** Servis incelendiğinde 3. parametre **STOPWORDS** ifadelerinin kullanılmaması için **False** gönderiyoruz. Bunun sebebi incelendiğinde veri seti içerisinde bir stopwords ve bir tane aşağılayıcı ifade barındığı gözlemlenmiştir. Bu sebeptendirki ifadenein kime,neye karşı olduğu tespiti zorlanmaktadır. Ayrıca model başarım oranı stopwords kullanıldığında düşdüğü gözlemlenmiştir.
22
-
23
- | Model | STOPWORDS | Accuracy
24
- | --------------------| ----------|----------
25
- | bert-uncased | True | 90
26
- | bert-uncased | **False** | **95.8**
27
-
28
- **Not:** Yarışma kapsamıda paylaşılmış olan veri setlerini tüm denemiş olduğumuz eğitim ve test setlerinde farklılık oluşturmaması adına **%90** eğitim,**%10** test seti olarak kendimiz ayırdık ve her iki veri setini ayrı ayrı yükledik.
29
-
30
- ```python
31
- train_df = pd.read_csv("train_df.csv", sep="|", encoding="utf-8")
32
- validation_df = pd.read_csv("validation_df.csv", sep="|", encoding="utf-8")
33
-
34
- train_df['text'] = train_df['text'].apply(lambda x: clean.CLEANING(x, True, False, True).clean())
35
- train_df['target'] = train_df['target'].apply(lambda x: clean.CLEANING(x, True, False, True).clean())
36
- train_df['lentext'] = train_df['text'].apply(lambda x: len([y for y in x.rstrip().lstrip().split(" ") if y != ""]))
37
- train_df = train_df[train_df['lentext'] > 0]
38
-
39
-
40
- validation_df['text'] = validation_df['text'].apply(lambda x: clean.CLEANING(x, True, False, True).clean())
41
- validation_df['lentext'] = validation_df['text'].apply(lambda x: len([y for y in x.rstrip().lstrip().split(" ") if y != ""]))
42
- validation_df['target'] = validation_df['target'].apply(lambda x: clean.CLEANING(x, True, False, True).clean())
43
- validation_df = validation_df[validation_df['lentext'] > 0]
44
-
45
- train_df = train_df.drop(['id', 'is_offensive'], axis=1)
46
- validation_df = validation_df.drop(['id', 'is_offensive'], axis=1)
47
- ```
48
- Sonrasında veri setini ayrıntılı incelediğimizde bazı satırlarda verilerin boş geldiğini gözlemledik. Bu işlem için hem eğitim hemde test veri setlerinde silme işlemini gerçekleştirdikten sonra ver seti dağılımı aşağıdaki gibi olmuştur.
49
-
50
- |Data |Text Before |Text After
51
- |-------------|------------------ |-------------
52
- |train_df |(11355, 5) |(11217, 5)
53
- |validation_df|(1262, 5) |(1250, 5)
54
-
55
- Veri seti üzerinde kategorilerin aynı numra ile temsil edilebilmesi için **LabelEncoder** metodunu kullandık ve kendimiz için özelleştirmiş olduk.
56
-
57
- ```python
58
- le = LabelEncoder()
59
- le_name_mapping = dict(zip(le.classes_, le.transform(le.classes_)))
60
- train_df['labels'] = train_df['target'].apply(lambda x: le_name_mapping[x])
61
- validation_df['labels'] = validation_df['target'].apply(lambda x: le_name_mapping[x])
62
- ```
63
- **Model Train and Parameter**
64
-
65
- Tüm ön işleme işlemlerinin ardından modelimizin eğitilmeden önce başarım oranlarını en çok etkiliyen model parametrelerin belirlenmesidir. Aşağıdaki parametrelerin her biri model başarım oranını ayrı ayrı etkilemektedir. Paylaşmız olduğumuz parametreler en yüksek başarı oranı aldığımız değerlerdir.Parametrelerin her birinin ne işe yaradığını **Evalutaion** kısmında bahsedilmiştir.
66
-
67
- ```python
68
- model = ClassificationModel('bert',
69
- 'dbmdz/bert-base-turkish-uncased',
70
- num_labels=5,
71
- use_cuda=True,
72
- args={'reprocess_input_data': True,
73
- 'overwrite_output_dir': True,
74
- 'num_train_epochs': 10,
75
- "train_batch_size": 128,
76
- "fp16": False,
77
- "output_dir": "bert_model"})
78
- ```
79
-
80
- | Model | Data Processing |Accuracy
81
- | --------------- | ---------------------------------------------------------|----------
82
- | bert-uncased | Türkçe karakterleri dönüştürmeden başarı oranı | 90
83
- | bert-uncased | Türkçe karakterlere dönüştürerek başarı oranı | 93.2
84
- | bert-uncased | Türkçe karakterlere çevirip "ı" harfini "i" dönüştürmeden| 93.6
85
- | bert-uncased | zemberek kütüphanesini kullanarak Morphology Normalize | 94.8
86
- | bert-uncased | zemberek Morphology Normalize,Türkçe karakterlere çevirip "ı" harfini "i" dönüştürmeden | 95.2
87
- | bert-uncased | **zemberek Morphology Normalize,Türkçe karakterlere çevirip "ı" harfini "i" dönüştürmeden ve kürüf listesine değiştirme uygulamadan**|**95.8**
88
-
89
-
90
-
91
- # Evaluation
92
-
93
- | Parameter | Value | Explanation
94
- | --------------- | ----- |----------
95
- | `train_batch_size` | 128 | Eğitim setinden ne kadar büyüklükde örneklem alarak eğitildiğini gösteren parametre
96
- | `num_train_epochs` | 10 | Eğitim işleminin kaç iterasyon boyunca tekrar edeceğini söyler
97
- | `fp16` | False | Ekrankartında kaç bitlik değer kullanılması gerektiği
98
- | `output_dir` | Path | Yeni eğitilmiş modelin kayıt edileceği yer
99
-
100
- **Confusion Matrix**
101
-
102
- Eğitim sonucu genel sonuçlar şu şekildedir:
103
-
104
- | Model | Train | Validation | Accuracy | F1 Score
105
- | --------------- | ----------|-------------|-------------| --------
106
- | **bert** | **%90** | **%10** | **95.8** | **95.8**
107
-
108
-
109
- Bu eğitim içerisinde mevcut olan sınıflar için detaylı sınıflandırma raporu ise şu şekildedir:
110
-
111
-
112
- | Sınıf | Precision | Recall | F1-Score | Support
113
- | --------------- | ------------|------------|-------------| --------
114
- | **OTHER** | **96.1** | **95.5** | **95.8** | **358**
115
- | **PROFANITY** | **97.1** | **97.1** | **97.1** | **239**
116
- | **INSULT** | **94.9** | **91.7** | **93.3** | **242**
117
- | **SEXIST** | **94.8** | **97.1** | **96.0** | **203**
118
- | **RACIST** | **95.7** | **98** | **96.8** | **208**
119
-
120
-
121
-
 
1
  ---
2
  license: apache-2.0
3
  ---