<TFIDF weighting (Term Frequency Inverse Document Frequency weighting)>
= Term Frequency * Inverse Document Frequency
Term Frequency : 얼마나 자주 그 용어가 document에서 등장했나? 얼마나 그 document와 관련되었나?
Inverse Document Frequency : 얼마나 적은 documents가 이 term을 가지고 있나?
-> 이 term이 많은 documents에서 등장할수록 IDF value는 작아진다. 즉 어느곳에나 등장하는 term에는 관심없고 드문 term에 관심있다. log를 사용해서 함. document의 수가 너무 크기 때문.
예 ) "The Civil War"에 대해 찾아본다고 하면, IDF value는
"The"는 매우 자주 등장하는 Term. log1 = 0으로 수렴. 즉 no weight.
"war"이 1/4로 등장한다고 하면 적당한 weight를 가짐.
"civil"이 1/100로 등장한다고 하면 매우 큰 weight를 가진다.
TFIDF를 통해 흔한 term를 강등시킬 수 있다. 즉 끌어내릴 수 있다. 또, 핵심 단어를 부수적인 단어보다 높게 평가할 수 있다.
그러나, 예를 들어 법적인 계약과 같은 상황에서는 core term이 사용되지 않는다.
또, "the Battle of Antietam"을 찾고싶어 civil만 검색창에 쳤다가는 관련없는 결과들이 뜬다. (이는 자동완성과 같은 방법으로 해결가능.)
So...어떻게 TFIDF가 Content-Based Filtering에 사용되나?
Content filtering은 말그대로 user의 선호도에 따라 profile을 만드는 것이다. 이 과정에서 TFIDF는 각 term이 얼마나 중요한 지에 대한 척도가 된다. 이를 통해 weighted vector를 얻을 수 있다. 이 vetor는 profile에 사용된다.
예를 들어 어떤 사용자가 타이타닉 영화를 좋아한다고 하면 이 영화의 태그 중 하나인, 레오나르도 디카프리오를 사용할 수 있다.
(타이타닉에는 많이 나오지만 다른 대부분의 영화에는 나오지 않는..)
대부의 상황에서 Term Frequency는 무시된다. (Boolean값이나 thresholding 사용.)
TFIDF 에서 또 고려할 것은,
1. "Computer science"라는 term은 computer 와 science 각각의 term이 들어있는 document에 많다고 할 수 없다.
2. 제목에 civil war가 있는 것과 25번째 문단 어딘가에 civil war가 있는 것은 당연히 중요도가 다르다.
3. 예를 들어 구글에서 pagelink 알고리즘을 이용해 어떤 논문이 좋은지에 대해 평가한다. 즉 우선순위가 있어야 한다.
4. 가장 어려운 것은 함축되어 있는 내용에 대한 파악이다. 만약에 글에서 한번도 핵심 단어에 대해 언급안한다면?
그 웹사이트에 연결된 링크를 통해 예측할 수도 있다.
keyword가 주어졌을 때 document를 어떻게 골라낼까?
'개발 > Recommender System' 카테고리의 다른 글
추천시스템 Collaborative Filtering(CF) Python 기반 [2] (0) | 2020.05.06 |
---|---|
추천시스템 Collaborative Filtering(CF) Python 기반 [1] (0) | 2020.04.27 |
Pandas Library만을 이용하여 간단한 Content Based Filtering 구현하기 (0) | 2020.04.27 |
Coursera 강의 리뷰 1 - Non-Personalized and Stereotype-Based Recommenders (0) | 2020.04.23 |
Recommender system 추천 시스템 공부를 본격적으로 시작하다..! (0) | 2020.04.23 |
댓글