tf-idf belge vektörleri oluşturma

Python ile NLP için Özellik Mühendisliği

Rounak Banik

Data Scientist

n-gram modelleme

  • Bir boyutun ağırlığı, o boyuta karşılık gelen kelimenin frekansına bağlıdır.
    • Belge human kelimesini beş kez içeriyor.
    • human boyutunun ağırlığı 5tir.
Python ile NLP için Özellik Mühendisliği

Güdüleme

  • Bazı kelimeler tüm belgelerde çok sık görülür
  • Evren hakkında bir belge korpusu
    • Bir belgede jupiter ve universe 20'şer kez geçiyor.
    • jupiter diğer belgelerde nadirdir. universe yaygındır.
    • Özgünlüğü nedeniyle jupiter'a daha fazla ağırlık verin.
Python ile NLP için Özellik Mühendisliği

Uygulamalar

  • Otomatik durak kelime tespiti
  • Arama
  • Öneri sistemleri
  • Bazı durumlarda öngörücü modellemede daha iyi performans
Python ile NLP için Özellik Mühendisliği

Terim frekansı-ters belge sıklığı

  • Terim frekansı ile orantılı
  • Göründüğü belge sayısının ters fonksiyonu
Python ile NLP için Özellik Mühendisliği

Matematiksel formül

$$\red{w_{i,j}} = tf_{i,j} \cdot \log\left(\frac{N}{df_{i}}\right) $$

$$\red{w_{i,j}} \rightarrow \text{belge } j\text{'deki } i \text{ teriminin ağırlığı}$$

Python ile NLP için Özellik Mühendisliği

Matematiksel formül

$$w_{i,j} = \red{tf_{i,j}} \cdot \log\left(\frac{N}{df_{i}}\right) $$

$$w_{i,j} \rightarrow \text{belge } j\text{'deki } i \text{ teriminin ağırlığı}$$

$$\red{tf_{i,j}} \rightarrow \text{belge } j\text{'de } i \text{ teriminin frekansı} $$

Python ile NLP için Özellik Mühendisliği

Matematiksel formül

$$w_{i,j} = tf_{i,j} \cdot \red{\log\left(\frac{N}{df_{i}}\right)} $$

$$w_{i,j} \rightarrow \text{belge } j\text{'deki } i \text{ teriminin ağırlığı}$$

$$tf_{i,j} \rightarrow \text{belge } j\text{'de } i \text{ teriminin frekansı} $$

$$\red{N} \rightarrow \text{korpustaki belge sayısı} $$

$$\red{df_{i}} \rightarrow \text{ } i \text{ terimini içeren belge sayısı}$$

Python ile NLP için Özellik Mühendisliği

Matematiksel formül

$$w_{i,j} = tf_{i,j} \cdot \log\left(\frac{N}{df_{i}}\right) $$

$$w_{i,j} \rightarrow \text{belge } j\text{'deki } i \text{ teriminin ağırlığı}$$

$$tf_{i,j} \rightarrow i \; teriminin \; belge \; j\text{'deki} \; frekansı $$

$$N \rightarrow korpustaki \; belge \; sayısı $$

$$df_{i} \rightarrow i \; terimini \; içeren \; belge \; sayısı $$

Örnek:

$\red{w_{library, document}} = 5 \cdot log(\frac{20}{8}) \approx 2 $

Python ile NLP için Özellik Mühendisliği

scikit-learn ile tf-idf

# Import TfidfVectorizer
from sklearn.feature_extraction.text import TfidfVectorizer

# Create TfidfVectorizer object vectorizer = TfidfVectorizer()
# Generate matrix of word vectors tfidf_matrix = vectorizer.fit_transform(corpus) print(tfidf_matrix.toarray())
[[0.         0.         0.         0.         0.25434658 0.33443519
  0.33443519 0.         0.25434658 0.         0.25434658 0.
  0.76303975]
 [0.         0.46735098 0.         0.46735098 0.         0.
  0.         0.46735098 0.         0.46735098 0.35543247 0.
  0.        ]
...
Python ile NLP için Özellik Mühendisliği

Hadi pratik yapalım!

Python ile NLP için Özellik Mühendisliği

Preparing Video For Download...