Metin Madenciliği’nde (Text Mining) Kavramlar — 1

Aşağıda Metin Madenciliği ile ilgili klasik yöntemler bulunmakta. Bu işlemlerde geçen kavramların neler olduğunu anlatmaya çalışacağım.

KAPSAM

  • Tokenization
  • Remove Unused Words/Chars
  • Normalization Words
  • String Distance
  • Stemming
  • Sentence Segmentation
  • Bag Of Words / NGram
  • Document Vector (Scoring and Weighting)
  • Vector Space Model
  • Corpus
  • TDM vs DTM
  • Feature Extraction
  • Reduce Dimension/Feature Reduction
  • Classification Models
  • Clustering
  • Topic Modeling
  • NER (Name Entity Recognation)

Tokenization

Metnin boşluk, — , vb istenen özelliklere göre parçalara ayrılması (bu parçalara token deniyor). Bu parçalar üzerinden token array içerisine atılması.

tokenizer = new natural.TreebankWordTokenizer();
console.log(tokenizer.tokenize("my dog hasn't any fleas."));
// [ 'my', 'dog', 'has', 'n\'t', 'any', 'fleas', '.' ]

tokenizer = new natural.RegexpTokenizer({pattern: /\-/});
console.log(tokenizer.tokenize("flea-dog"));
// [ 'flea', 'dog' ]

tokenizer = new natural.WordPunctTokenizer();
console.log(tokenizer.tokenize("my dog hasn't any fleas."));
// [ 'my', 'dog', 'hasn', '\'', 't', 'any', 'fleas', '.' ]

tokenizer = new natural.OrthographyTokenizer({language: "fi"});
console.log(tokenizer.tokenize("Mikä sinun nimesi on?"));
// [ 'Mikä', 'sinun', 'nimesi', 'on' ]

Remove Unused Words/Chars

Stop Words : Metinde geçen ve, veya, (the, at, and …) vb kelimelerin metnin üzerinde çalışacak modellerin doğruluğunu bozmaması için en başından metinden elimine edilerek çıkartılması.

Digits : Metinde geçen rakamların atılması.

InvalidCharacters : Unicode olarak ifade edilemeyen , tanımlamayan karakterler.

Punctuation: Noktalama işaretlerinin silinmesi (! ? . , ; -)

Newlines: \n yeni satır vb (\t\r) gibi karakterlerin silinmesi.

Normalization Words

LowerCase / UpperCase: Metnin içerisindeki kelimelerin büyük veya küçük harflere dönüştürülerek farklılıklarının ortadan kaldırılması

Trim: Kelimenin sağında ve solunda yer alan boşlukların silinmesini sağlar.

String Distance

Kelimeler arasındaki uzaklıkları hesaplamızı sağlayan algoritmalardır. Örneğin bazı kelimeler yazım itibari ile veya yanlış yazımdan dolayı aynı kelimeyi ifade ediyor olabilir. Bu gibi durumlarda kelime uzaklıklarını hesaplayan algoritmalar kullanılır.

Hamming distance: Kelimelerin arasında her bir karakterin değeri aynı olmayan kaç tane karakter olduğunu bulmaya çalışır. Kelime uzunluğu farklı ise sonuç -1 döner.

Jaro–Winkler: (Benzeyen Karakter Toplamı / Toplam Karakter)

Levenshtein distance: Kelimeyi kaç karakter değişimi ile diğer kelimeye benzetebileceğimiz bize 2 kelime arasındaki uzaklığı verir. Bu algoritmayı kullanan basit bir oyun geliştirmiştim.

Stemming

Metinde geçen aynı kelimeden türemiş kelimeleri ayrı elimine ederek tek bir kelimeye indirgemesi işlemidir.

Tabi bu işlem dilden dile çok farklılık yaratmaktadır. Dilin morfolojisi geliştirilecek algoritmalarda kullanılan yöntemleri değiştirmektedir. Altyapıda Morphologic analysis ve generation, NGram yöntemleri kullanılır.

Sentence Segmentation

Metnin cümleler halinde bölünmesi işlemine denir.

Bag Of Words / NGram

Bag Of Words: Bir kelime çantası düşünün içinde bu kelime geçiyor mu/ geçmiyor mu ? kaç defa geçmiş ?

NGram:

Kelimeler 2,3 gruplar halinde de anlamlı olabilir. Bu kelime gruplalarını inceleyebilmek için kelimeler unigram, bigram, trigram vb.. gruplanır ve analiz edilir.

Document Vector (Scoring and Weighting)

Belgenizde oluşan kelimelerden Vector oluşturulması işlemine denir. Bu kısımda unigram, bigram, trigram vb.. yöntemler ile bu vektorler oluşturulur. Bu Vektörlerin skorlanması ve ağırlıklandırılması işlemine denir.

Binary Scoring : Belgede ilgili kelimenin olması veya olmaması durumuna göre (1,0) olacak şekilde vektör ağırlıklandırılır. Bu vektörler bellekte açık halde tuttuğunuzda 0'lardan dolayı çok yer kaplayabilir(dense vector) veya bunları lookup table üzerinden indeskleyerek tutabilirsiniz (sparse vector)

TF (Term Freq):
Bir doküman içerisinde geçen terim ağırlıklarını hesaplamak için kullanılan yöntemdir. Aşağıda Term Frequency ağırlık hesaplama yöntemleri bulunmaktadır.

  • Binary, doküman içerisinde terimin olup olmadığını
  • Raw Frequency, terimin dokümanda geçme sayısı / dokümandaki kelime sayısı (Dokümanın uzunluğu kaliteli bir sonuç elde etmeyi engeller)
  • Log Normalization -
  • Double Normalization 0,5 burada 0,5–1 arasında bir değer oluşturuyor. Raw Freq / Maksimun geçen Terim Raw Freq bölerek doküman ne kadar uzun olursa olsun terim’in diğer terimlere olan oranını bularak frekansı normalize etmektedir.
  • Double Normalization K -

IDF (Inverse Document Freq):

Birden fazla dokümanda kelimenin geçme sayısını bularak bu kelimenin terim olup olmadığını bağlaç vb (Stop Words) olduğu anlamaya çalışır. Bunun için Terimin Geçtiği Dokuman Sayısı / Dokuman Sayısı’nın logaritmasının mutlak değeri alınmaktadır.

Örneğin. Ve, ile kelimesi her dokümanda geçiyor ise |log(10/10)| = 0 verirken mesela yazdığımız dokümanda tf-idf kelimesi 1 dokümanda geçiyor ise |log(1/10)| = 1 değeri elde ederiz 100 dokümanda 1 defa geçiyor ise 2 değerini elde ederiz. Özetle terim ne kadar az dökumanda tekrar ediyor ise IDF değeri o kadar büyük çıkar.

Double Normalization Term Frequency değeri ile IDF değerinin çarpımı bize bu terimin doküman içerisindeki değerini vermiş olur. Dokümanın ağırlıklı olarak hangi konuyla ilgili olduğunu, arama işlemlerinde aradığımız terimin dokümanda ne kadar ağırlıklı olarak geçtiğini anlayabiliriz.

Zipf Law: 100 kelime geçen bir metinde en çok sıklıkta geçen kelimeden en az sıklıkta geçen kelimeye göre sıralama gerçekleştirilir. Bu sıralama’deki indeksi kelime sayısına bölünerek kelimenin ağırlığı/skoru hesaplanır.

Phraseness Score:

VSM (Vector Space Model)

Metin dokümanlarının vektörler ile ifade edildiği bir uzay düşünün. Bu sayede;

  • Aradığınız bir metni bu uzay düzlemindeki yerini bulabilirseniz bu vektöre en yakın dokümanlara erişebilirsiniz.
  • Dokümanlar arası uzaklığı birbiri ile kıyaslayabilirsiniz.
  • k-means clustering uygulayarak belgelerinizi belli gruplara ayırabilirsiniz.

Vector Space Model: tf-idf veya kelimenin o doküman içerisinde olup/olmaması(bag of words) üzerinden hesaplanacak vektörel değerleri üzerinden bu vector uzayı oluştırma

Daha önceki yazımda TF-IDF (Term Frequency — Inverse Document Frequency) konusundan bahsetmiştim.

Günlük hayattan bir örnek Lucene(Search Framework) bu işlemi TFIDFSimilarity Vector Space Model’de Cosine Similarity kullanarak yaptığını görebilirsiniz.

Corpus

Unstructured belgelerin (tweet, web sayfası, blog, haber, makale…) analiz için belli bir amaçla toplandığı külliyat, alan.. . Bu kısımdaki corpus direk belgenin metne dönüştürülmüş halide konulabilir.

Term Document Matrix / Document Term Matrix

Doküman ve Terimlerin Satır ve Kolonlarda farklı yerleşimleri ile oluşan matris’e verilen isimdir.

Term Document Matrix: Terimlerin Satıra, Belgerin Sütunlara gelerek oluşturduğu matristir.

Document Term Matrix: Terimlerin Sütuna, Belgerin Satıra gelerek oluşturduğu matristir.

Feature Extraction

Her ne kadar üstteki ilk resimde Feature extraction TDM/DTM gibi gözüksede Feature’larınız oluşturmak istediğiniz modele göre Kelime/Kelime Grubu uzunluğu, Kelime Grubunda aynı kelimelerin geçme oranı, tf, tf-idf, vs. vs.. sizin öngörünüze ve ihtiyaçlarınıza göre değişmektedir.

Reduce Dimension / Feature Reduction

Classification, Clustering, Predictive Models, Association Rules vb.. işlemleri yapabilmek için farklı modelller kurmanız gerekecektir. Logistic Regression, SVM, Decision Tree, Random Forest , kNN (k-Nearest Neighbour), k-Means ..

  • Domain Uzmanı
  • Feature’lar arası Correlasyon
  • PCA (Principal Component Analysis)
  • Backward Elimination AIC (Akaike Information Criterion)

Classification Models

Aşağıda bahsettiğimiz Sınıflandırma Yöntemleri ile elinizdeki Feature Matrisler üzerinden Train/Test Data’sı olacak şekilde veriyi etiketleriz. Yani bu sınıflandırmalar Supervised Learning yöntem diyebiliriz. Bu oran verinizin durumuna bağlı olarak %70 , %30 veya %80, %20 olacak şekildedir.

Linear Regressyon

İstatiksel veriler üzerinden tahminleme yapmanızı sağlayan bir algoritma 2 feature arasındaki ilişki üzerinden bir fonksiyon(doğru) çıkartarak, farklı bir girdinin hesaplamasını tahminlememizi sağlar.

Logit Regression/ Logistic Regression

Decision Tree

Forest Tree

Support Vector Machine

Naive Bayes

LDA (Linear Discriminant Analysis) / QDA (Quadratic Discriminant Analysis)

Clustering Models

Kümeleme modelleri..

KNN (K- Nearest Neighbors)

Topic Modeling

Latent Driclet Allocation

Text Rank

Name Entity Recognation — Entity Extraction.. (Categorization)

Bir Sonraki Yazıda?

Bir sonraki konuda DeepLearning, Neural Network, Word2Vec, Doc2Vec, GloVE vb… konulardaki kavramları analiz etmeye çalışacağım.

Okumaya Devam Et 😃

Bu yazının devamı veya yazı grubundaki diğer yazılara erişmek için bu linke tıklayabilirsiniz..

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store