Hepsiburada Mobil Uygulama Yorumlarının Analizi (Text Pre-Processing) — 3

Mesut Beysülen
4 min readAug 6, 2021

--

Bu blog yazısında ML ile eğiteceğimiz yorum datasını bir ön işleme adımından geçirerek modelin daha sağlıklı çıktı vermesinden bahsedeceğim.

Kullandığımız birçok teknolojinin girdisi olan metin içerikli veriler gün geçtikçe artmaktadır. Bu verileri diğer veri türlerinden ayıran özelliği ise, belli bir kalıp yada belli bir kural içinde olmadan kullanılmasıdır. Açıklamak gerekirse, metin içerikli veriler ne kadar belli dil kalıpları içinde olsa da tam anlamıyla yapısal değillerdir. Devrik cümleler, düşük ya da anlatım bozukluğu olan metinler, kullanıcı kaynaklı yanlış yazım, emoji vb. işaretler içeren metinler… Bu gibi metin içerikli veriler üzerinde ML modelleri eğitmek ya da NLP algoritmaları uygulamak düşük doğruluk oranları almamıza sebep olmaktadır. ML algoritmalarının daha doğru sonuçlar vermesi için metin içerikli veriler üzerinde metin ön işlemleri gerçekleştirmek gerekmektedir.

Bizim bu blog yazısında yapacaklarımız yorum verilerimizi eğitmeden önce belli sınıflara ayırmak, yorumlar üzerinde düzemli ifadeler ile çalışmak için işlemler yapmak, veri setimiz de bulunan gereksiz kolonları silmek, boş yorum satırlarını veri setimizden çıkarmak ve BERT teknolojisine uygun bir girdi sağlamak gibi işlemler olacaktır.

İlk adım olarak google drive üzerine csv dosyamızı yüklemiş olmalıyız. Ve Bu csv dosyasını, Google Colab ile Google Drive birbirine bağlayarak çekmeliyiz(önerilen).

Peki, Google Colab Nedir?

Basitçe bir bulut hizmetidir. Ancak diğer bulut hizmetlerinden farkı,

  1. GPU ve TPU ortamı sağlamaktadır.
  2. Python programlama dili ile kodlama yapılabilmektedir.
  3. Pytorch, Keras, Tensorflow gibi kütüphaneleri kullanarak derin öğrenme modelleri geliştirilebilmektedir.
  4. Local de tutmadan birçok kütüphaneyi içinde barındırır ve kurulmak istenilen kütüphaneler basit bir komut ile çalıştırılabilir.

Colab’ a çektiğimiz veri setimizin içinde gereksiz sık kullanılan kelimelerin (stop-words) atılmasını sağlayacağız. Ve sonrasında veri seti üzerinde bazı analizler yapacağız.

İlk olarak datamızı anlamamız önemli. Veri setimizi drive’a yükledikten sonra, drive path’ine ulaşıp, buradan bir dataframe atılmasını sağlayan kod bloğunu parça parça aşağıya bırakıyorum.

ilk blok çalıştığında bir link gelmeli. Bu link de gelen id ile drive bağlantısı sağlanmalı.

Ve sonuç olarak aşağıdaki gibi bir çıktı ile karşılaşabiliriz.

Artık veri setimizi inceleyebiliriz. Burada klasik bir kaç inceleme ve deneme sonrasında aşağıdaki gibi veri setini ön işlem adımlarından geçirmek daha sağlıklı eğitim verisi oluşturmamıza yardımcı olacaktır.

Resim üzerinde işlemlerin amaçları yazmaktadır.

Sonuç olarak aşağıdaki sonuçları incelersek artık veri setimiz de yeni bir kolon var. Bu kolon 1 ve 0 lardan oluşmaktadır. Burada 24234 adet olumsuz, 114029 adet olumlu yorum olduğunu görüyoruz. Ancak dengeli bir veri setinde eğitim daha sağlıklı olacağı için burada olumsuz yorumlar ile olumlu yorumları eşitleyeceğiz.

Eşitleme işlemini de yaptıktan sonra grafik olarak aşağıdaki gibi inceleyebilirsiniz.

Şimdi textleri verilen puana yani score alanına göre label ekledik ancak verilen label ın text ile uyumu gerçekten sağlandı mı bunu görmek adına aşağıdaki kodları çalıştırarak inceleyebilirsiniz.

Şimdi de son bir adım olarak veri setimiz de bulunan textlerin Türkçe karakterlerde oluşabilecek sorunlar için harfleri yakalayıp transformers adımında herhangi bir kayıp yaşamamak adına düzenliyoruz.

Burada ön işleme de bilinmesi gereken ve projeye dahil edilmesi gereken bir modül olarak Python Re Modülünü kullandık.

Veriyi daha iyi anlamak ve yaptığımız işlemlerin doğruluğunu sağlamak için aşağıdaki kod blokları ile veri de negatif ve pozitif yorumlarda en çok kullanılan kelimeleri stop_words elemesi de yaparak gösterimini sağlıyoruz. (Örnek bir stop word listesi link olarak stop_words e eklendi.)

Sonuç olarak aşağıdakine benzer bir çıktı almanız gerekmektedir.

Ve son olarak da en çok kullanılan kelime çiftlerinin sıklığını gösteren bir görsel hazırlamak adına aşağıdaki kod bloğu ile çalışabilirsiniz.

Sonucu yine aşağıdakine benzer şekilde görmeniz gerekmektedir.

negative most common tokens
positive most common tokens

Sonuç

Blogumuzun sonuna geldik. Burada veri setimizi anlayıp, bu veri seti üzerinde yapılabilecek bir çok işlemden bahsettik. Tabi biliyorum belki daha fazla işlem de yapılabilirdi ancak şu an bize bu işlemler ile veriyi daha anlamlı hale getirmek yetiyor. Sizlerde istediğiniz verileri internette bulabilir, toplayabilir ve google drive gibi bir bulut ortama aktarıp, colab üzerinde bu veri ile artık çalışabilirsiniz. Unutmayın bu yazı serisine başlarken elimizde hiç veri yoktu. Artık anlamlandırıp üzerinde çalışabileceğimiz hatta istediğimiz zaman güncelleyebileceğimiz bir veri setimiz var. Bunu para ödeyerek yapmadık sadece bazı yeteneklerimiz ile hayal gücümüzü birleştirdik.

Geri bildirim 📬

Buraya kadar sabırla beni takip ettiyseniz ve bunu daha iyi şöyle yapardık diye de bir düşünceniz varsa, işte benimle iletişime geçmeniz için sebep! Beni ya da sizi geliştirebilecek tavsiye, eleştiri ve geri bildirimlerinizi sonuna kadar dinlemeye hazırım. İletişime geçin. Teşekkürler…

--

--

Mesut Beysülen

Senior QA-Test Automation Engineer @MigrosOne, Ex @hepsiburada | Instructor on Youtube @mesutbeysulen