Sakıncalı İçerik Tespiti

Seref Recep Keskin
Kariyer.net Tech
Published in
5 min readMar 12, 2021

Merhabalar bu yazımızda Kariyer.net arge ekibi olarak yürüttüğümüz yeni bir doğal dil işleme çalışmasından bahsetmek istiyoruz. Online platformlarda, özellikle şahıslar arasında mesajlaşmanın mümkün olduğu platformlarda sakıncalı mesaj içeriklerinin varlığı bir problem olarak karşımıza çıkmaktadır. Mesajların filtrelenmesi gibi klasik yöntemlerle bu sorun bir nebze de olsa sınırlandırılmaya çalışılmaktadır. Yalnız kullanıcılar sürekli olarak bu yöntemleri aşmanın bir yolunu bulmaktadır. Kullanıcıların sakıncalı içeriklerini makine öğrenimi temelli yaklaşımlarla tespit etmeye ve kullanıcılar tarafından kolay kolay aşılamayacak bir sistem üzerine çalışmaktayız. Sakıncalı içeriklerin tespit edilmesi amacıyla gerçekleştirdiğimiz NLP çalışmaları hakkında bilgilerin verildiği bir yazı okuyacaksınız.

Bir veri bilimi çalışmasına başlamadan önce problemi tanımlamak ve problemin çözümünde kullanılacak veriyi anlamak büyük önem arz etmektedir. Yazının ilk bölümünde kullanılan veri seti hakkında bilgiler verip, gerçekleştirilen keşifsel veri analizi sonuçlarını yorumlayalım.

1-) Veri Seti Hakkında Bilgiler ve Keşifsel Veri Analizi

Veri analizine başlarken amacımız: ham veriden işimize yarayacak öngörüler elde ederek, bu öngörüler ışığında çalışmaya nasıl yön vereceğimize karar vermeye yardımcı bilgiler elde etmektir.

Öncelikle kullandığımız veri seti hakkında bilgi vererek başlayalım.

  • Veri setimizin ismi “Jigsaw Train Multilingual Comments”.
  • Wikipedia talk page yorumlarından elde edilen verilerden oluşturulmuş bir veri setidir. Çalışma içerisinde kullandığımız Türkçe veri seti, araştırmacılar tarafından orjinal veri setinin dilimize çevrilmesi ile oluşturulmuştur.
  • Toplam 223.394 satırlık veri kaydı bulunmaktadır
  • Veriler toplam 6 kategoride etiketlenmiştir: Toxic, Severe_Toxic, Obscene, Threat, Insult, Identity_hate.
Veri seti etiketleri ve oranları
  • Yukarıdaki görselde belirtilen etiketlerden hiçbirine ait olmayan satırlar tespit edildikten sonra, clean anahtar kelimesi ile temsil edilir hale getirilmiştir.
  • Aşağıdaki grafikte etiketlerin son durumdaki sayıları ve dağılımları görselleştirilmiştir.
  • Yukarıdaki grafikten yola çıkarak verinin dengesiz bir dağılıma sahip olduğunu söylebiliriz. Ön işleme aşamasında bu durumla ilgili bir aksiyon almamız gerekecek.
  • Son olarak etiketler arasındaki kolerasyonunu gözlemlemek istiyoruz. Aşağıdaki grafikte görüleceği üzere birbiri ile yüksek korelasyona sahip etiketler bulunmamaktadır. En fazla insult ve obscene arasında 0.75'lik bir korelasyon olduğunu grafikten gözlemleyebiliriz.

2-) Veri Ön İşleme Çalışmaları

Makine öğrenimi çalışmalarında, seçtiğimiz modeli eğitmeden önce verinin temizlenmesi gerekmektedir. Veri temizliği problemden probleme farklılık gösterebilir.

Ön işleme çalışmalarına başlamadan önce incelediğimiz verilerde bolca html tag’leri, özel karakterler ve uygun olmayan noktalama işaretlerinin olduğunu tespit ettik.

Yapılan veri ön işleme çalışmalarını özetleyecek olursak:

  • BeautifulSoup kullanarak html tag’lerinin temizlenmesi,
  • Özel karakterlerin temizlenmesi,
  • Emoji’lerin temizlenmesi,
  • Noktalama işaretlerinin temizlenmesi,
  • URL adreslerinin temizlenmesi.

Çalışma içerisinde ikili sınıflandırma yapmak istediğimizden dolayı verideki etiketler üzerinde bazı değişiklikler gerçekleştirdik. Veri setinin son halinde sadece clean ve toxic olarak etiketlenmiş satırlar bulunmaktadır.

Verimizin dengesiz bir dağılıma sahip olduğundan bahsetmiştik. Ön işleme operasyonlarından sonra toxic ve clean etiketler balanced hale getirilmiştir. Sol kısımda yer alan grafikte 0 toxic verileri ,1 ise clean verileri temsil etmektedir.

3-) Eğitim ve Test İşlemleri

Dengeli hale getirilen JigSaw verisi üzerinde farklı farklı makine öğrenimi metodolojileri kullanılarak denemeler gerçekleştirilmiştir. Bu yöntemleri 3 ana başlık içerisinde toplayabiliriz:

1-) Denetimli makine öğrenimi algoritmaları ( Logistic Regression, Random Forest, SVM (farklı kernel mod’larında), Xgboost, Naive Bayes) ve TFIDF,

2-) Bert For Sequence Classification kullanarak transfer öğrenme,

3-) Türkçe dil desteğine sahip 3 adet sentence transformer modeli ile (distiluse-base-multilingual-cased, distiluse-base-multilingual-cased v2, stsb-xlm-r-multilingual ) cümlelerin vektörlerini oluşturularak, SVM ve KNN ile cosine distance’lerine göre sınıflandırılması.

  • Modeller üzerinde gridsearch yapılarak parametre optimizasyonu gerçekleştirilmiştir.
  • Veriler train, validation ve test olmak üzere 3 parçaya bölünmüştür. Test verisi tüm verinin %30'una tekabül edecek şekilde ayrılmıştır ve içerisindeki etiketler de dengeli dağılıma sahiptir.

4-) Sonuçların Yorumlanması

Bu bölümde yapılan denemeler içerisinde en yüksek başarıyı veren yöntemlerin sonuçlarına dair bilgiler verilecektir.

4.1-) Logistic Regression ve TFIDF Sonuçları

  • Denetimli makine öğrenimi algoritmaları üzerinde TFIDF kullanılarak yapılan test işlemlerinde en başarılı sonucu Logistic Regression modeli vermiştir.
Logistic Regression&TFIDF Modeli Sonuçları
Logistic Regression&TFIDF Confusion, Precision ve Recall Matrisleri

4.2-) BertForSequenceClassification ile Transfer Öğrenme

BERT hakkında ufak bir bilgi vermek gerekirse: NLP dünyasının ImageNet’i olarak tanımlanabilecek BERT (Bidirectional Encoder Representations for Transformers) 11 çeşit doğal dil işleme görevinde yüksek başarı göstermiştir. Google bünyesindeki araştırmacılar tarafından ortaya çıkarılan BERT modelinin eğitimi için 16 TPU ile 3.3 milyar kelimelik bir korpus üzerinde çalışılmıştır. (KAYNAK)

Bert için gerekli tokenizer ve model’e Hugging Face’den ulaşılabilir.

Sakıncalı içerik çalışmamızda ise bert-base-turkish-uncased modelini kullanıyoruz. Bu model Türçe NLP çalışmalarında kullanılmak üzere MDZ Digital Library (dbmdz) tarafından oluşturulmuştur.

Bert Modeli

Tokenizer olarak da MDZ Digital Library (dbmdz) tarafından oluşturulan bert-base-turkish-uncased aracını kullanıyoruz.

Bert Tokenizer

Transfer öğrenmede kullanılan parametreler:

Batch size 32 seçilmiştir

Metinlerin kelimse sayısı maksimum 512 seçilmiştir. Memory problemimiz olmadığından kelime sayısını modelin maksimum kelime sayısı sınırında seçim şansımız oldu.

Yaklaşık 6 gün süren eğitim süremiz, 3 epoch’ta sonlandırıldı.

Model eğitimi bittikten sonra hem test verisi hem de train verisi ile model performansı gözlemlenmiştir. Aşağıdaki tablolarda elde edilen sonuçları gözlemleyebilirsiniz.

Test Verisi Metrikleri
Train Verisi Metrikleri

4.3-) Sentence Transformer Kullanarak Sınıflandırma

Sentence Transformerler ile çalışma gerçekleştirirken öncelikli amacımızı: JigSaw verileri ve farklı domain’lerden elde ettiğimiz verilerin benzerlikleri hakkında öngörü elde etmek olarak açıklayabiliriz.

3 adet çoklu dil destekli sentence transformer modeli kullanılmıştır:

1-) distiluse-base-multilingual-cased,

2-) distiluse-base-multilingual-cased v2,

3-) stsb-xlm-r-multilingual

Hem JigSaw verileri hem de farklı domainlerden elde ettiğimiz verilerin 3 sentence transformer ile vektörleri oluşturulmuştur. Sonrasında oluşturulan bu vektörler arasındaki uzaklık ve yakınlık ilişkisine göre metinlerin birbiri ile ne kadar benzer olduğu üzerine analiz yapılmıştır.

Oluşturulan KNN modelinde metric parametresi cosine ve SVM modelinde ise kernel olarak cosine similarity ayarlanmıştır.

Gerçekleştirdiğimiz bu çalışmalar sonucunda, sakıncalı içerik tespitinde kullandığımız makine öğrenimi ve doğal dil işleme yöntemlerinim problemin çözümünde kullanılabileceği tespit edilmiştir. Geliştirmelerimizin hali hazırda devam ettiği projede ilk araştırma, deney ve gözlemlerimizin sonuçlarını sizlerle paylaştık. Projenin ilerleyen aşamalarında yeni bilgilerle tekrar karşınızda olacağız :)

Özet olarak:

  • Sakıncalı içerik tespitinde, makine öğrenimi temelli yöntemler ile problem çözümüne yardımcı sistemler geliştirilebilir.
  • TFIDF ve Logistic Regression kullanarak oluşturulan modellerde ideal sonuçlar elde edilmiştir.
  • En yüksek başarı oranı ise Bert for Sequence Classification ile elde edilmiştir.
  • Farklı domain’lerden elde edilen veriler arasındaki ilişkilerin Sentence Transformerler kullanılarak analiz edilebileceği tecrübelenmiştir.

Sorunuz olursa Linkedin veya Researchgate hesaplarımdan ulaşabilirsiniz.

Sağlıklı Kalın & Sevgilerle

--

--

Seref Recep Keskin
Kariyer.net Tech

Interests: Data Science, Deep Learning, Machine Learning, Data Mining, Software Engineering, Scientific Research