Xây dựng vector tài liệu tf-idf

Khai thác đặc trưng cho NLP bằng Python

Rounak Banik

Data Scientist

Mô hình n-gram

  • Trọng số của chiều phụ thuộc vào tần suất từ tương ứng.
    • Tài liệu chứa từ human ở 5 vị trí.
    • Chiều ứng với human có trọng số 5.
Khai thác đặc trưng cho NLP bằng Python

Động lực

  • Một số từ xuất hiện rất thường xuyên trên mọi tài liệu
  • Tập tài liệu về vũ trụ
    • Một tài liệu có jupiteruniverse xuất hiện 20 lần mỗi từ.
    • jupiter hiếm khi xuất hiện ở tài liệu khác. universe thì phổ biến.
    • Ưu tiên trọng số cao hơn cho jupiter vì tính đặc thù.
Khai thác đặc trưng cho NLP bằng Python

Ứng dụng

  • Tự động phát hiện stopword
  • Tìm kiếm
  • Hệ gợi ý
  • Hiệu quả dự báo tốt hơn trong một số trường hợp
Khai thác đặc trưng cho NLP bằng Python

TF-IDF: Term frequency–inverse document frequency

  • Tỷ lệ thuận với tần suất thuật ngữ
  • Tỷ lệ nghịch với số tài liệu có chứa nó
Khai thác đặc trưng cho NLP bằng Python

Công thức toán học

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

$$\red{w_{i,j}} \rightarrow \text{trọng số của thuật ngữ } i \text{ trong tài liệu } j$$

Khai thác đặc trưng cho NLP bằng Python

Công thức toán học

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

$$w_{i,j} \rightarrow \text{trọng số của thuật ngữ } i \text{ trong tài liệu } j$$

$$\red{tf_{i,j}} \rightarrow \text{tần suất của thuật ngữ } i \text{ trong tài liệu } j $$

Khai thác đặc trưng cho NLP bằng Python

Công thức toán học

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

$$w_{i,j} \rightarrow \text{trọng số của thuật ngữ } i \text{ trong tài liệu } j$$

$$tf_{i,j} \rightarrow \text{tần suất của thuật ngữ } i \text{trong tài liệu } j $$

$$\red{N} \rightarrow \text{số tài liệu trong tập corpora} $$

$$\red{df_{i}} \rightarrow \text{số tài liệu chứa thuật ngữ } i$$

Khai thác đặc trưng cho NLP bằng Python

Công thức toán học

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

$$w_{i,j} \rightarrow \text{trọng số của thuật ngữ } i \text{ trong tài liệu } j$$

$$tf_{i,j} \rightarrow tần \; suất \; của \; thuật \; ngữ \; i \; trong \; tài \; liệu \; j $$

$$N \rightarrow số \; tài \; liệu \; trong \; corpora $$

$$df_{i} \rightarrow số \; tài \; liệu \; chứa \; thuật \; ngữ \; i $$

Ví dụ:

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

Khai thác đặc trưng cho NLP bằng Python

tf-idf với 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.        ]
...
Khai thác đặc trưng cho NLP bằng Python

Ayo berlatih!

Khai thác đặc trưng cho NLP bằng Python

Preparing Video For Download...