Geçtiğimiz haftalarda Koç Üniversitesi, GESIS, ISI Foundation ve Social Comquant iş birliğinde yapılan “Text Mining ve NLP” temalı 2022 yaz okuluna katılma fırsatım oldu. Program, Türkiye’de sayısal ve nicel araştırma yöntemlerinin geliştirilmesi için Avrupa Komisyonu tarafından finanse edilen bir program özetle. Almanya’dan GESIS – Leibniz Sosyal Bilimler Enstitüsü, ISI – Bilimsel Değişim Enstitüsü ve Koç Üniversitesi ile ortaklaşa yürütülüyor.
Bu süreçte bizlere ders veren hocalarımız Malak Abdullah, N. Gizem Bacaksızlar Turbic, Ali Hürriyetoğlu, Arnim Bleier, Ayşe Lokmanoğlu, PhD Yelena Mejova, André Panisson ve Gözde Gül Şahin‘e teşekkür ederim. Yeni şeyler duymak, bu atmosferi deneyimlemek güzel oldu, yararlı bilgiler edindim. Hocalarımızdan daha öğrenecek çok şeyler var, iş hayatımdan fırsat buldukça eğitimlerini ve içeriklerini takip etmeye çalışacağım. Sadece proje kodlama ve analiz becerisi yetmiyor, veri bilimcisi olacaksanız literatüre hakim olmak ve bu işi kitabına göre ele almak da oldukça önemli.
Yaz okulu sürecinde gruplar oluşturularak projeler verildi. Benim bulunduğum gruba da 2020 Nisan ayına ait bir diyet verisi denk geldi bu veri üzerinde bazı özet araştırmalar yaptım. Fikirleriyle yardımcı olan arkadaşlarıma da teşekkürler.
Kendi araştırma kodlarım biraz daha detaylı ve bana özel, ancak deneyimlemek isteyen öğrenmek isteyenler için bu şekilde temel bazı uygulamaları ele aldım. Bu veriler ışığında kendi özet tablolarınızı, grafiklerinizi oluşturabilirsiniz. Burada amaç sadece bazı modüllerin nasıl kullanıldığını göstermek. Veriyi ele alış şekli de oldukça önemli. Ben twitter verisinden spam/flood olabilecek duplicate içerikleri yakalayıp sildim, çünkü ana temam gerçek düşüncelerdi manipule edilmesini istemedim. Eğer bunları çıkarmasaydım amp supplement, jellyfish benzeri bir çok aynı içerikle basılmış reklam metnini de analize katmış olurdum vs… (Belki ayrıca reklam içerikleri diye kategorize edilerek gösterilebilir..)
300k dan 174k ya indirdim, ama başkaları bu içerikleri de dahil etmişti, yani sizin bakış açınız ve ulaşmak istediğiniz şeye göre değişir.
Python Kütüphaneleri
Use the package manager pip to install foobar.
pip install nltk pip install wordcloud pip install sklearn pip install pandas pip install chardet pip install textblob pip install gensim pip install scipy pip install PIL pip install pattern ...
Load Packages
import pandas as pd import numpy as np import chardet import re import openpyxl import string import nltk from nltk.corpus import stopwords from nltk.stem import PorterStemmer,WordNetLemmatizer from pattern.text.en import spelling from pattern.text.en import suggest from nltk.sentiment.vader import SentimentIntensityAnalyzer from textblob import TextBlob import gensim import pyLDAvis.gensim_models import statistics as st from scipy.stats import stats,mode from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator from PIL import Image import matplotlib.pyplot as plt
DATA KONTROLÜ VE ÖZET GÖRÜNÜM
STEM WORDS + LEMMATIZE + NGRAMS OLUŞTURMA
NLTK kütüphanesi kullanarak stopwords ve regex ile temizlediğimiz verimizi kelime köklerine(stem) ve gövde başlarına(lemma) göre parçalıyoruz. Daha sonra ngram ilişkisi ile n sayıda bağlantılı ifadelerini listeliyoruz. Ben burada 2 ngram kullandım ihtiyaca göre azaltıp artırabilirsiniz.
WORDCLOUD OLUŞTURMA
Tokenize ettiğimiz ifadeleri yoğunluklarına göre bir wordcloud da birleştiriyoruz. Ben burada biraz incelediğim veriden dolayı twitter kuşuna yerleştirmeyi tercih ettim. Wordcloud nasıl oluşturulur, örnek kodlar için github hesabımı takip edebilirsiniz.
SENTIMENT ANALİZ – DUYGU ANALİZİ – METİNDEN DUYGUSAL ANALİZ ÇIKARMA
Firmaların, yöneticilerin belki de son zamanlarda dilinden düşmeyen ifade “Sentiment Analizi”. Burada tweet dataframe de yer alan clean_text yani temizlediğimiz metinleri duygu analizine alıyoruz. Testlerimde Textblob ve NLTK Vader kütüphanesini kullandım. Daha farklı analiz kütüphaneleri var. Temel anlamda kullanımını öğrenmek için github.com/turkeruzun adresini ziyaret edebilirsiniz.
LDA MODEL İLE AKILLI KONU ETİKETLERİ OLUŞTURMA
Latent Dirichlet Allocation (LDA), doğal dil işlemede kullanılan her dokümanın bir konu koleksiyonu kabul edildiği ve belgedeki her kelimenin konulardan birine karşılık geldiği en basit kabul edilen bir konu modelleme örneğidir. Sıkça kullanıldığını gözlemlediğim için bu modellemeyi tercih ettim. Bu dinamik gösterge için ise pyLDAvis kütüphanesini kullandım.
pyLDAvis , kullanıcıların konuları bir metin verisi bütününe uygun bir konu modelinde yorumlamalarına yardımcı olmak için tasarlanmıştır. Paket, etkileşimli bir web tabanlı görselleştirmeyi bilgilendirmek için yerleşik bir LDA konu modelinden bilgi alır.
HASHTAG DUYGUSAL ANALİZİ – SENTIMENT
TWEET İÇİNDEKİ EMOJİLERİN DUYGUSAL ANALİZLERİ
Emojilerin sentiment analizleri o kadar da kolay değil, hazır kütüphaneler var ancak çokca emoji arkaplandaki tabloda kayıtlı olmadığı için sürekli hata alırsınız. Temel emojilerde işlemler için kütüphaneler uygun. Ben kendime göre kütüphaneyi genişlettim ve kullanıyorum. Ancak, bu örnekte bazı emojileri tabloda olan yakın emojilerle replace ederek çözüm üretmiştim.
Detayları github hesabımdan inceleyebilirsiniz.