Construirea vectorilor tf-idf pentru documente

Ingineria caracteristicilor pentru NLP în Python

Rounak Banik

Data Scientist

Modelarea n-gram

  • Ponderea unei dimensiuni depinde de frecvența cuvântului corespunzător.
    • Documentul conține cuvântul human în cinci locuri.
    • Dimensiunea corespunzătoare lui human are ponderea 5.
Ingineria caracteristicilor pentru NLP în Python

Motivație

  • Unele cuvinte apar frecvent în toate documentele
  • Corpus de documente despre univers
    • Un document conține jupiter și universe de câte 20 de ori.
    • jupiter apare rar în celelalte documente. universe este comun.
    • Se acordă o pondere mai mare lui jupiter datorită exclusivității.
Ingineria caracteristicilor pentru NLP în Python

Aplicații

  • Detectarea automată a cuvintelor de oprire
  • Căutare
  • Sisteme de recomandare
  • Performanță mai bună în modelarea predictivă în unele cazuri
Ingineria caracteristicilor pentru NLP în Python

Frecvența termenului-frecvența inversă în documente

  • Proporțional cu frecvența termenului
  • Funcție inversă a numărului de documente în care apare
Ingineria caracteristicilor pentru NLP în Python

Formula matematică

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

$$\red{w_{i,j}} \rightarrow \text{ponderea termenului } i \text{ în documentul } j$$

Ingineria caracteristicilor pentru NLP în Python

Formula matematică

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

$$w_{i,j} \rightarrow \text{ponderea termenului } i \text{ în documentul } j$$

$$\red{tf_{i,j}} \rightarrow \text{frecvența termenului } i \text{ în documentul } j $$

Ingineria caracteristicilor pentru NLP în Python

Formula matematică

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

$$w_{i,j} \rightarrow \text{ponderea termenului } i \text{ în documentul } j$$

$$tf_{i,j} \rightarrow \text{frecvența termenului } i \text{în documentul } j $$

$$\red{N} \rightarrow \text{numărul de documente din corpus } $$

$$\red{df_{i}} \rightarrow \text{numărul de documente care conțin termenul } i$$

Ingineria caracteristicilor pentru NLP în Python

Formula matematică

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

$$w_{i,j} \rightarrow \text{ponderea termenului } i \text{ în documentul } j$$

$$tf_{i,j} \rightarrow frecvența \; termenului \; i \; în \; documentul \; j $$

$$N \rightarrow numărul \; de \; documente \; din \; corpus $$

$$df_{i} \rightarrow numărul \; de \; documente \; care \; conțin \; termenul \; i$$

Exemplu:

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

Ingineria caracteristicilor pentru NLP în Python

tf-idf cu 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.        ]
...
Ingineria caracteristicilor pentru NLP în Python

Să exersăm!

Ingineria caracteristicilor pentru NLP în Python

Preparing Video For Download...