TF-IDF(Term Frequency - Inverse Document Frequency) - (1)
Data Analyst

빅데이터 관련 자료/Dacon

TF-IDF(Term Frequency - Inverse Document Frequency) - (1)

carpe08 2021. 11. 18. 19:04
320x100
320x100

이번시간에는 BOW의 TF-IDF(Term Frequency - Inverse Document Frequency)에 대해 알아 보겠습니다.

이전에 설명한 카운트 기반 벡터화는 숫자가 높을수록 중요한 단어로 인식합니다. 하지만, 단순히 단어의 빈도만 고려한다면 모든 문서에서 자주 쓰일 수 밖에 없는 단어들이 중요하다고 인식 될 수 있습니다. 이런 문제를 보완하기 위해 TF-IDF 벡터화를 사용합니다.

TF-IDF는 개별 문서에서 자주 등장하는 단어에는 높은 가중치를, 모든 문서에서 자주 등장하는 단어에 대해서는 패널티를 주는 방식으로 값을 부여합니다. 예를 들어 총 5개의 문서가 있다고 가정하면, 딥러닝이라는 단어는 5개 문서에서 모두 등장하고, 머신러닝이라는 단어는 1번 문서에서만 빈번히 등장한다고 했을 때, TF-IDF의 값은 딥러닝이라는 단어는 낮게 부여 되고 머신러닝이라는 단어는 높게 부여 됩니다.

문서의 양이 많을 경우 보통 TF-IDF 방식의 벡터화를 사용합니다.

TF-IDF의 사용방법은 CounterVectorizer와 크게 다르지 않습니다.

from sklearn.feature_extraction.text import TfidVectorizer

    'This is the first document.',

    'This is the second second document.',

    'And the third one.'

]

tfidf = TfidfVectorizer()
print(tfidf.fit_transform(corpuse).toarray() #corpus 리스트 네부 텍스트로부터 각 TF-IDF를 계산합니다.
print(tfidf.vocabulary_) #각 단어의 인덱스가 어떻게 부여되었는지 보여줍니다.

#output : 

[[0.         0.43306685 0.56943086 0.43306685 0.         0.

  0.33631504 0.         0.43306685]

 [0.         0.30833187 0.         0.30833187 0.         0.81083871

  0.2394472  0.         0.30833187]

 [0.54645401 0.         0.         0.         0.54645401 0.

  0.32274454 0.54645401 0.        ]]

{'this': 8, 'is': 3, 'the': 6, 'first': 2, 'document': 1, 'second': 5, 'and': 0, 'third': 7, 'one': 4}

320x100
320x100

'빅데이터 관련 자료 > Dacon' 카테고리의 다른 글

train_test_split - (1)  (0) 2021.11.20
TF-IDF(Term Frequency - Inverse Document Frequency) - (2)  (0) 2021.11.19
CountVectorizer - (2)  (0) 2021.11.16
CountVectorizer - (1)  (0) 2021.11.15
Bag of Words  (0) 2021.11.12