TF-IDF

TF-IDF

  • tf idf 설명.

소개


TF-IDF란 단어의 빈도와 역문서 빈도를 사용하여 단어들마다 가중치를 부여하는 방법이다.

  • TF ( Term Frequency ) : 특정 문서 d에서 특정 단어 t의 등장 회수
    ex) “과자”라는 단어가 문서3에서 100번 등장했다.

  • DF( Document Frequency ) : 특정 단어 t가 등장한 문서의 수
    ex) “과자”라는 단어가 문서2와 문서3에서 언급되었다.
    이럴 경우 DF는 2이다. 몇 개의 문서에서 언급되었는지를 알아야 한다.​

  • IDF ( Inverse Document Frequency ) : DF(t)에 반비례하는 수
    분모에 1을 추가해주는 이유는 df가 0일 경우에 분모가 0이 되기 때문이다.
    ​분자의 n은 전체 문서의 개수를 의미한다.


ex) “과자”라는 단어가 문서1에서 0번, 문서2에서 100번, 문서3에서 200번 언급되었다고 가정하자.

log(분자 : 3 / 분모 : 1+2) 가 된다.

여러 문서에서 자주 사용하는 단어일수록 값이 0에 가까워지기 때문에 TF x IDF한 값이 작아지게 된다.

예시


전체 소스코드는 github에 공개하였다.

sentence_list = [‘오늘은 즐거운 하루입니다’, ‘오늘은 비가 올 것 같은데 내일은 비가 안 왔으면 좋겠네요.’, ‘내일도 비가 올 것 같아요’ ]

  1. BoW

    앞에서 진행 했던 BoW로 위의 sentence_list를 표현하면 다음과 같다.
    단어수가 한 글자인 것은 제외해서 vector를 구성하였다.


  2. TF-IDF ver.1

    가장 basic한 형태의 TF-IDF이다.
    위의 BoW에서 단어의 가중치를 Vector로 표현을 하였다.


  3. TF-IDF ver.2

    한 글자인 단어들도 Vector에 포함하였다.


  1. TF-IDF ver.3

    위의 TF-IDF에서 ngram_range=(2, 3)를 추가하였다.
    단어를 2글자 or 3글자 단위로 묶어 처리하였다.


  2. TF-IDF ver.4

    ngram_range=(2, 3)를 추가하고 analyzer=’char’로 변경하였다.
    char로 변경하였기 때문에 단어가 아닌 글자가 기준이 된다.


생각


TF-IDF 의 개념과 사용방법은 생각보다 쉽다.

문제는 이러한 단어의 가중치들이 알고리즘에 어떻게 사용되는지를 이해하는 것이 중요한 것 같다.

뭔가 단어에다가 가중치를 준다고 하면 더 좋을 것 같아보인다.

하지만 실제 성능이 향상하는지 확인해봐야 알 것 같다.


#

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×