tf-idf डॉक्यूमेंट वेक्टर बनाना

Python में NLP के लिए Feature Engineering

Rounak Banik

Data Scientist

n-gram मॉडलिंग

  • किसी डायमेंशन का वेट उस शब्द की फ़्रीक्वेंसी पर निर्भर होता है।
    • डॉक्यूमेंट में human शब्द 5 जगह है।
    • human वाले डायमेंशन का वेट 5 है।
Python में NLP के लिए Feature Engineering

प्रेरणा

  • कुछ शब्द सभी डॉक्यूमेंट्स में बहुत आम होते हैं
  • यूनिवर्स पर डॉक्यूमेंट्स का कॉर्पस
    • एक डॉक्यूमेंट में jupiter और universe 20-20 बार आते हैं।
    • बाकी डॉक्यूमेंट्स में jupiter कम आता है। universe आम है।
    • विशिष्टता के कारण jupiter को ज़्यादा वेट दें।
Python में NLP के लिए Feature Engineering

एप्लिकेशंस

  • स्टॉपवर्ड्स को ऑटोमेटिक पहचानें
  • सर्च
  • रिकमेंडर सिस्टम्स
  • कुछ मामलों में प्रेडिक्टिव मॉडलिंग का बेहतर परफॉर्मेंस
Python में NLP के लिए Feature Engineering

Term frequency-inverse document frequency

  • टर्म फ़्रीक्वेंसी के अनुपात में
  • जितने डॉक्यूमेंट्स में वह आता है, उनकी संख्या के व्युत्क्रम के अनुसार
Python में NLP के लिए Feature Engineering

गणितीय सूत्र

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

$$\red{w_{i,j}} \rightarrow \text{टर्म } i \text{ का डॉक्यूमेंट } j \text{ में वेट}$$

Python में NLP के लिए Feature Engineering

गणितीय सूत्र

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

$$w_{i,j} \rightarrow \text{टर्म } i \text{ का डॉक्यूमेंट } j \text{ में वेट} $$

$$\red{tf_{i,j}} \rightarrow \text{डॉक्यूमेंट } j \text{ में टर्म } i \text{ की फ़्रीक्वेंसी} $$

Python में NLP के लिए Feature Engineering

गणितीय सूत्र

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

$$w_{i,j} \rightarrow \text{टर्म } i \text{ का डॉक्यूमेंट } j \text{ में वेट} $$

$$tf_{i,j} \rightarrow \text{डॉक्यूमेंट } j \text{ में टर्म } i \text{ की फ़्रीक्वेंसी} $$

$$\red{N} \rightarrow \text{कॉर्पस में डॉक्यूमेंट्स की संख्या} $$

$$\red{df_{i}} \rightarrow \text{टर्म } i \text{ वाले डॉक्यूमेंट्स की संख्या}$$

Python में NLP के लिए Feature Engineering

गणितीय सूत्र

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

$$w_{i,j} \rightarrow \text{टर्म } i \text{ का डॉक्यूमेंट } j \text{ में वेट} $$

$$tf_{i,j} \rightarrow term \; frequency \; of \; term \; i \; in \; document \; j $$

$$N \rightarrow number \; of \; documents \; in \; the \; corpus $$

$$df_{i} \rightarrow number \; of \; documents \; cotaining \; term \; i$$

उदाहरण:

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

Python में NLP के लिए Feature Engineering

scikit-learn से 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 में NLP के लिए Feature Engineering

अभ्यास करते हैं!

Python में NLP के लिए Feature Engineering

Preparing Video For Download...