Tworzenie wektorów dokumentów tf-idf

Inżynieria cech dla NLP w Pythonie

Rounak Banik

Data Scientist

Modelowanie n-gramów

  • Waga wymiaru zależy od częstości słowa odpowiadającego temu wymiarowi.
    • Dokument zawiera słowo human w pięciu miejscach.
    • Wymiar odpowiadający słowu human ma wagę 5.
Inżynieria cech dla NLP w Pythonie

Motywacja

  • Niektóre słowa występują bardzo często we wszystkich dokumentach.
  • Korpus dokumentów o wszechświecie
    • Jeden dokument zawiera słowa jupiter i universe po 20 razy.
    • jupiter rzadko występuje w innych dokumentach; universe jest częste.
    • Należy nadać większą wagę słowu jupiter ze względu na jego unikalność.
Inżynieria cech dla NLP w Pythonie

Zastosowania

  • Automatyczne wykrywanie stopwords
  • Wyszukiwanie
  • Systemy rekomendacji
  • Lepsza wydajność w modelowaniu predykcyjnym w niektórych przypadkach
Inżynieria cech dla NLP w Pythonie

Częstość terminu — odwrotna częstość dokumentu

  • Proporcjonalna do częstości terminu
  • Odwrotna funkcja liczby dokumentów, w których termin występuje
Inżynieria cech dla NLP w Pythonie

Wzór matematyczny

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

$$\red{w_{i,j}} \rightarrow \text{waga terminu } i \text{ w dokumencie } j$$

Inżynieria cech dla NLP w Pythonie

Wzór matematyczny

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

$$w_{i,j} \rightarrow \text{waga terminu } i \text{ w dokumencie } j$$

$$\red{tf_{i,j}} \rightarrow \text{częstość terminu } i \text{ w dokumencie } j $$

Inżynieria cech dla NLP w Pythonie

Wzór matematyczny

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

$$w_{i,j} \rightarrow \text{waga terminu } i \text{ w dokumencie } j$$

$$tf_{i,j} \rightarrow \text{częstość terminu } i \text{ w dokumencie } j $$

$$\red{N} \rightarrow \text{liczba dokumentów w korpusie} $$

$$\red{df_{i}} \rightarrow \text{liczba dokumentów zawierających termin } i$$

Inżynieria cech dla NLP w Pythonie

Wzór matematyczny

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

$$w_{i,j} \rightarrow \text{waga terminu } i \text{ w dokumencie } j$$

$$tf_{i,j} \rightarrow częstość \; terminu \; i \; w \; dokumencie \; j $$

$$N \rightarrow liczba \; dokumentów \; w \; korpusie $$

$$df_{i} \rightarrow liczba \; dokumentów \; zawierających \; termin \; i$$

Przykład:

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

Inżynieria cech dla NLP w Pythonie

tf-idf w scikit-learn

# 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.        ]
...
Inżynieria cech dla NLP w Pythonie

Czas na ćwiczenia!

Inżynieria cech dla NLP w Pythonie

Preparing Video For Download...