TF-IDF(Term Frequency - Inverse Document Frequency) / 단어 빈도와 역문서 빈도.

조영규의 블로그

2014. 11. 7. 22:45 from Engineering


Edit

TF-IDF(Term Frequency - Inverse Document Frequency) / 단어 빈도와 역문서 빈도.


뉴스 추천 알고리즘을 설계하면서 초기에는 크게 고려하지 않았지만 차차 고려하게된 부분이 바로 이 TF-IDF이다. 뉴스 추천을 하기위해 각 기사에 들어있는 단어들(키워드 혹은 엔티티들)을 은전한닢이라는 형태소 분석기를 사용하여 분리했는데, 이 형태소 분석기의 단어 분류가 정확하지 못해 은전한닢이 자체 제공하는 단어 분류 tag만으로는 제대로 분리할 수 없었다. 이를 보완하기 위해 모든 명사단어들을 뽑아내려고 했는데, 이때 의미없는 엔티티가 포함될 확률이 매우 높았다. 이것을 해결하기 위해 고민하던 중 정보검색 분야에서 사용되는 TF-IDF를 알게 되었다.

TF-IDF(Term Frequency - Inverse Document Frequency)

보통 정보 검색이나 텍스트 마이닝에서 주로 사용한다. 이것을 이용하면 해당 엔티티(단어)가 가지는 중요도를 알아낼 수 있다. 어떤 단어가 특정 문서 내에서 얼마나 중요한 것인지를 표현해 주기 때문이다.

TF는 단어빈도로, 특정 단어가 문서내에 얼만큼의 빈도로 등장하는지를 나타낸다. 당연하게도 문서에 자주 등장하는 엔티티라면 엔티티로서의 값어치가 높다고 예상할 수 있다. 매우 직관적으로 이해할 수 있는 관계다.

IDF는 문서 빈도의 역수다. 전체 문서 갯수를 해당 엔티티가 포함된 문서의 갯수로 나누는 것이다. 이것은 해당 문서군의 특징을 보여주는 척도가 될 수 있다. 어떤 문서 내에 클라라라는 단어가 자주 등장했다고 생각해보자. 아마 이 문서군은 연애 기사들의 모음일 가능성이 충분히 있을 것이다. 따라서 이 값을 통하여 해당 문서군에서 가치 있는 엔티티를 찾아낼 수 있는데, 만약 해당 문서군에서 드물게 등장하는 단어가 무엇인지 알수 있다면, 아마 그 단어가 어떤 그 문서군에서 특정 한 문서를 유니크 할 수 있도록 해주고, 눈에 띄게해주는 단어일 확률이 높기 때문이다.

구하는 법.

TF-IDF는 단어빈도와 역문서 빈도의 곱이다. 처음 접할 때는 -가 있어서 둘이 빼는 건가 했는데 그게 아니었다.

Term Frequency

두 값을 산출하는 방법에는 여러가지가 있는데, 단어를 나타내는 id값을 t라고 하고, 문서(도큐먼트)에 특정히 할당된 id값을 d라고 해보자. 말이 어려운데 간단하게 말하면 그 문서 일련번호고, 단어 일련번호다.

그리고 dt를 입력 받아 단어 빈도를 계산하는 함수 tf()를 생각해보자. tf(t,d)라 쓸 수 있을 것이다. tf(t,d)를 내부적으로 구현하는 방법은 여러가지다.

그중 가장 간단한 아이디어를 보자. 당연하게도 단어 빈도이므로, d문서 내의 단어 t의 총빈도를 구해주는 함수를 f(t,d)라 하면, 이는 tf(t,d)와 같은 함수라 생각할 수 있다. 그러나 이 값은 너무 커질 수도 있고 정규화가 전혀 되지 못한 값이라 다루기 불편하다. 예를들면 그 문서에 애플이 10번 나오면 10tf()값으로 쓰는 것이다. 더 커지면 어쩌나.. 따라서 조금 더 발전된 방법이 필요할 수 있다. 사실 필자는 이 아이디어 그대로를 유사 기사를 묶는 기능의 코드에서 사용하였는데, 간단한 아이디어임에도 매우 높은 정확도를 보여주었다.

다른 방법으로는 불린 빈도라는 방식이 있다. 단어 t가 도큐먼트 d에 한번이라도 나타나면 1, 나타나지 않으면 0으로 표기하는 방법이다. 이 방법의 단점은 아무래도 한번 나타난 애나, 3번 나타난 애나 똑같은 무게를 가진다는 점일 것이다.

숫자가 너무 커질 수 있으므로 작게 만드는 매우 기본적인 아이디어는 로그다. log를 씌우게 되면 매우 작은 수로 숫자를 바꿀 수 있다. 이를 로그 스케일 빈도라 한다.

증가 빈도라는 것도 있는데, 이것은 문서의 길이에 따른 단어의 상대적 빈도를 표현해주는 방식이다. 이 방식을 이용하면 스케일이 최대 1로 고정되는 효과를 얻을 수 있다. 실제로 필자가 뉴스 추천를 위해 엔티티의 TF-IDF를 구현하면서 사용한 방식이기도 하다. 수학 식은 따로 있지만 이해하기 좋도록 한국말(?)로 적었다.

tf(t,d) = 0.5 + 0.5 x f(t,d) / (문서 내 단어들의 f(t,d) 값 중 최댓값) 

Inversed Document Frequency

역문서 빈도는 단어가 문서 집합 내에서 얼마나 자주 등장하는지를 나타낸다. 전체 문서 중 발생하는 빈도를 역수 취한 값으로, 역수를 취하다 보니 값이 무한히 커질 수 있기에 이를 방지하려고 log를 씌워 값을 줄인다.

D는 전체 문서들의 집합을 의미한다.

idf(t,D) = log ( 전체 문서의 갯수 / 단어 t가 포함된 문서의 수 )

TF-IDF

tfidf(t,d,D) = tf(t,d) x idf(t,D)

간단히 구한 두개의 함수를 곱하면 된다. 특정 문서 내에서 단어 빈도가 높고, 전체 문서에서 그 단어가 포함된 문서가 적다면 이 값은 높아진다. 따라서 이 값을 이용하면 흔한 단어를 걸러 낼 수 있다. 특정 단어를 포함하는 문서가 많을수록 로그안의 값(idf()에서)이 1에 가까워지게 되고, 이 경우 TF-IDF 값은 0에 가까워지게 된다.

실제로 구현하고 사용하며.

파이썬으로 구현시 생각보다 매우 간단하게 구현이 가능하다. 그 값은 무한정 커질 수 있을 것 같았는데 5를 넘는 경우가 없었다. 이것은 문서 집합의 특성에 따라 달라 질 수 있다. 또 로그를 사용할 때 밑이 무슨 로그인지에 따라 다를 수 있다. 필자는 밑이 10인 상용로그를 취해주었다. 사실 이것은 상대적인 비교이므로 밑이 몇인 로그를 취하는가는 그렇게 중요한 문제는 아니라 생각된다. 아래는 필자의 코드다. 현재는 이것보다 훨씬 리팩토링 되어 본래의 구조를 조금 잃었지만, 이게 처음 짰을 때 코드다.

def f(t,d):
    return float(article_entity_count_dict[d][t])

def tf(t,d):
    return 0.5 + ((0.5) * f(t, d) / max([f(w, d) for w, c in article_entity_count_dict[d].iteritems()]))

def idf(t):
    return math.log10(category_number_of_documents[entity_category_count_dict[t]] / len(entity_article_count_dict[t].keys()))
%23TF-IDF%28Term%20Frequency%20-%20Inverse%20Document%20Frequency%29%20/%20%uB2E8%uC5B4%20%uBE48%uB3C4%uC640%20%uC5ED%uBB38%uC11C%20%uBE48%uB3C4.%0A%0A----%0A%uB274%uC2A4%20%uCD94%uCC9C%20%uC54C%uACE0%uB9AC%uC998%uC744%20%uC124%uACC4%uD558%uBA74%uC11C%20%uCD08%uAE30%uC5D0%uB294%20%uD06C%uAC8C%20%uACE0%uB824%uD558%uC9C0%20%uC54A%uC558%uC9C0%uB9CC%20%uCC28%uCC28%20%uACE0%uB824%uD558%uAC8C%uB41C%20%uBD80%uBD84%uC774%20%uBC14%uB85C%20%uC774%20TF-IDF%uC774%uB2E4.%20%uB274%uC2A4%20%uCD94%uCC9C%uC744%20%uD558%uAE30%uC704%uD574%20%uAC01%20%uAE30%uC0AC%uC5D0%20%uB4E4%uC5B4%uC788%uB294%20%uB2E8%uC5B4%uB4E4%28%uD0A4%uC6CC%uB4DC%20%uD639%uC740%20%uC5D4%uD2F0%uD2F0%uB4E4%29%uC744%20%60%uC740%uC804%uD55C%uB2E2%60%uC774%uB77C%uB294%20%uD615%uD0DC%uC18C%20%uBD84%uC11D%uAE30%uB97C%20%uC0AC%uC6A9%uD558%uC5EC%20%uBD84%uB9AC%uD588%uB294%uB370%2C%20%uC774%20%uD615%uD0DC%uC18C%20%uBD84%uC11D%uAE30%uC758%20%uB2E8%uC5B4%20%uBD84%uB958%uAC00%20%uC815%uD655%uD558%uC9C0%20%uBABB%uD574%20%60%uC740%uC804%uD55C%uB2E2%60%uC774%20%uC790%uCCB4%20%uC81C%uACF5%uD558%uB294%20%uB2E8%uC5B4%20%uBD84%uB958%20tag%uB9CC%uC73C%uB85C%uB294%20%uC81C%uB300%uB85C%20%uBD84%uB9AC%uD560%20%uC218%20%uC5C6%uC5C8%uB2E4.%20%uC774%uB97C%20%uBCF4%uC644%uD558%uAE30%20%uC704%uD574%20%uBAA8%uB4E0%20**%uBA85%uC0AC**%uB2E8%uC5B4%uB4E4%uC744%20%uBF51%uC544%uB0B4%uB824%uACE0%20%uD588%uB294%uB370%2C%20%uC774%uB54C%20%uC758%uBBF8%uC5C6%uB294%20%uC5D4%uD2F0%uD2F0%uAC00%20%uD3EC%uD568%uB420%20%uD655%uB960%uC774%20%uB9E4%uC6B0%20%uB192%uC558%uB2E4.%20%uC774%uAC83%uC744%20%uD574%uACB0%uD558%uAE30%20%uC704%uD574%20%uACE0%uBBFC%uD558%uB358%20%uC911%20%uC815%uBCF4%uAC80%uC0C9%20%uBD84%uC57C%uC5D0%uC11C%20%uC0AC%uC6A9%uB418%uB294%20TF-IDF%uB97C%20%uC54C%uAC8C%20%uB418%uC5C8%uB2E4.%0A%0A%23%23TF-IDF%28Term%20Frequency%20-%20Inverse%20Document%20Frequency%29%0A%uBCF4%uD1B5%20%uC815%uBCF4%20%uAC80%uC0C9%uC774%uB098%20%uD14D%uC2A4%uD2B8%20%uB9C8%uC774%uB2DD%uC5D0%uC11C%20%uC8FC%uB85C%20%uC0AC%uC6A9%uD55C%uB2E4.%20%uC774%uAC83%uC744%20%uC774%uC6A9%uD558%uBA74%20%uD574%uB2F9%20%uC5D4%uD2F0%uD2F0%28%uB2E8%uC5B4%29%uAC00%20%uAC00%uC9C0%uB294%20%uC911%uC694%uB3C4%uB97C%20%uC54C%uC544%uB0BC%20%uC218%20%uC788%uB2E4.%20%uC5B4%uB5A4%20%uB2E8%uC5B4%uAC00%20%uD2B9%uC815%20%uBB38%uC11C%20%uB0B4%uC5D0%uC11C%20%uC5BC%uB9C8%uB098%20%uC911%uC694%uD55C%20%uAC83%uC778%uC9C0%uB97C%20%uD45C%uD604%uD574%20%uC8FC%uAE30%20%uB54C%uBB38%uC774%uB2E4.%0A%0ATF%uB294%20%uB2E8%uC5B4%uBE48%uB3C4%uB85C%2C%20%uD2B9%uC815%20%uB2E8%uC5B4%uAC00%20%uBB38%uC11C%uB0B4%uC5D0%20%uC5BC%uB9CC%uD07C%uC758%20%uBE48%uB3C4%uB85C%20%uB4F1%uC7A5%uD558%uB294%uC9C0%uB97C%20%uB098%uD0C0%uB0B8%uB2E4.%20%uB2F9%uC5F0%uD558%uAC8C%uB3C4%20%uBB38%uC11C%uC5D0%20%uC790%uC8FC%20%uB4F1%uC7A5%uD558%uB294%20%uC5D4%uD2F0%uD2F0%uB77C%uBA74%20%uC5D4%uD2F0%uD2F0%uB85C%uC11C%uC758%20%uAC12%uC5B4%uCE58%uAC00%20%uB192%uB2E4%uACE0%20%uC608%uC0C1%uD560%20%uC218%20%uC788%uB2E4.%20%uB9E4%uC6B0%20%uC9C1%uAD00%uC801%uC73C%uB85C%20%uC774%uD574%uD560%20%uC218%20%uC788%uB294%20%uAD00%uACC4%uB2E4.%0A%0AIDF%uB294%20%uBB38%uC11C%20%uBE48%uB3C4%uC758%20%uC5ED%uC218%uB2E4.%20%uC804%uCCB4%20%uBB38%uC11C%20%uAC2F%uC218%uB97C%20%uD574%uB2F9%20%uC5D4%uD2F0%uD2F0%uAC00%20%uD3EC%uD568%uB41C%20%uBB38%uC11C%uC758%20%uAC2F%uC218%uB85C%20%uB098%uB204%uB294%20%uAC83%uC774%uB2E4.%20%uC774%uAC83%uC740%20%uD574%uB2F9%20%uBB38%uC11C%uAD70%uC758%20%uD2B9%uC9D5%uC744%20%uBCF4%uC5EC%uC8FC%uB294%20%uCC99%uB3C4%uAC00%20%uB420%20%uC218%20%uC788%uB2E4.%20%uC5B4%uB5A4%20%uBB38%uC11C%20%uB0B4%uC5D0%20%60%uD074%uB77C%uB77C%60%uB77C%uB294%20%uB2E8%uC5B4%uAC00%20%uC790%uC8FC%20%uB4F1%uC7A5%uD588%uB2E4%uACE0%20%uC0DD%uAC01%uD574%uBCF4%uC790.%20%uC544%uB9C8%20%uC774%20%uBB38%uC11C%uAD70%uC740%20%uC5F0%uC560%20%uAE30%uC0AC%uB4E4%uC758%20%uBAA8%uC74C%uC77C%20%uAC00%uB2A5%uC131%uC774%20%uCDA9%uBD84%uD788%20%uC788%uC744%20%uAC83%uC774%uB2E4.%20%uB530%uB77C%uC11C%20%uC774%20%uAC12%uC744%20%uD1B5%uD558%uC5EC%20%uD574%uB2F9%20%uBB38%uC11C%uAD70%uC5D0%uC11C%20%uAC00%uCE58%20%uC788%uB294%20%uC5D4%uD2F0%uD2F0%uB97C%20%uCC3E%uC544%uB0BC%20%uC218%20%uC788%uB294%uB370%2C%20%uB9CC%uC57D%20%uD574%uB2F9%20%uBB38%uC11C%uAD70%uC5D0%uC11C%20%uB4DC%uBB3C%uAC8C%20%uB4F1%uC7A5%uD558%uB294%20%uB2E8%uC5B4%uAC00%20%uBB34%uC5C7%uC778%uC9C0%20%uC54C%uC218%20%uC788%uB2E4%uBA74%2C%20%uC544%uB9C8%20%uADF8%20%uB2E8%uC5B4%uAC00%20%uC5B4%uB5A4%20%uADF8%20%uBB38%uC11C%uAD70%uC5D0%uC11C%20%uD2B9%uC815%20%uD55C%20%uBB38%uC11C%uB97C%20%uC720%uB2C8%uD06C%20%uD560%20%uC218%20%uC788%uB3C4%uB85D%20%uD574%uC8FC%uACE0%2C%20%uB208%uC5D0%20%uB744%uAC8C%uD574%uC8FC%uB294%20%uB2E8%uC5B4%uC77C%20%uD655%uB960%uC774%20%uB192%uAE30%20%uB54C%uBB38%uC774%uB2E4.%0A%0A%23%23%uAD6C%uD558%uB294%20%uBC95.%0ATF-IDF%uB294%20%uB2E8%uC5B4%uBE48%uB3C4%uC640%20%uC5ED%uBB38%uC11C%20%uBE48%uB3C4%uC758%20%uACF1%uC774%uB2E4.%20%uCC98%uC74C%20%uC811%uD560%20%uB54C%uB294%20-%uAC00%20%uC788%uC5B4%uC11C%20%uB458%uC774%20%uBE7C%uB294%20%uAC74%uAC00%20%uD588%uB294%uB370%20%uADF8%uAC8C%20%uC544%uB2C8%uC5C8%uB2E4.%0A%0A%23%23%23Term%20Frequency%0A%uB450%20%uAC12%uC744%20%uC0B0%uCD9C%uD558%uB294%20%uBC29%uBC95%uC5D0%uB294%20%uC5EC%uB7EC%uAC00%uC9C0%uAC00%20%uC788%uB294%uB370%2C%20%uB2E8%uC5B4%uB97C%20%uB098%uD0C0%uB0B4%uB294%20id%uAC12%uC744%20%60t%60%uB77C%uACE0%20%uD558%uACE0%2C%20%uBB38%uC11C%28%uB3C4%uD050%uBA3C%uD2B8%29%uC5D0%20%uD2B9%uC815%uD788%20%uD560%uB2F9%uB41C%20id%uAC12%uC744%20%60d%60%uB77C%uACE0%20%uD574%uBCF4%uC790.%20%uB9D0%uC774%20%uC5B4%uB824%uC6B4%uB370%20%uAC04%uB2E8%uD558%uAC8C%20%uB9D0%uD558%uBA74%20%uADF8%20%uBB38%uC11C%20%uC77C%uB828%uBC88%uD638%uACE0%2C%20%uB2E8%uC5B4%20%uC77C%uB828%uBC88%uD638%uB2E4.%0A%0A%uADF8%uB9AC%uACE0%20%60d%60%uC640%20%60t%60%uB97C%20%uC785%uB825%20%uBC1B%uC544%20%uB2E8%uC5B4%20%uBE48%uB3C4%uB97C%20%uACC4%uC0B0%uD558%uB294%20%uD568%uC218%20%60tf%28%29%60%uB97C%20%uC0DD%uAC01%uD574%uBCF4%uC790.%20%60tf%28t%2Cd%29%60%uB77C%20%uC4F8%20%uC218%20%uC788%uC744%20%uAC83%uC774%uB2E4.%20%60tf%28t%2Cd%29%60%uB97C%20%uB0B4%uBD80%uC801%uC73C%uB85C%20%uAD6C%uD604%uD558%uB294%20%uBC29%uBC95%uC740%20%uC5EC%uB7EC%uAC00%uC9C0%uB2E4.%20%0A%0A%uADF8%uC911%20%uAC00%uC7A5%20%uAC04%uB2E8%uD55C%20%uC544%uC774%uB514%uC5B4%uB97C%20%uBCF4%uC790.%20%uB2F9%uC5F0%uD558%uAC8C%uB3C4%20%uB2E8%uC5B4%20%uBE48%uB3C4%uC774%uBBC0%uB85C%2C%20%60d%60%uBB38%uC11C%20%uB0B4%uC758%20%uB2E8%uC5B4%20%60t%60%uC758%20%uCD1D%uBE48%uB3C4%uB97C%20%uAD6C%uD574%uC8FC%uB294%20%uD568%uC218%uB97C%20%60f%28t%2Cd%29%60%uB77C%20%uD558%uBA74%2C%20%uC774%uB294%20%60tf%28t%2Cd%29%60%uC640%20%uAC19%uC740%20%uD568%uC218%uB77C%20%uC0DD%uAC01%uD560%20%uC218%20%uC788%uB2E4.%20%uADF8%uB7EC%uB098%20%uC774%20%uAC12%uC740%20%uB108%uBB34%20%uCEE4%uC9C8%20%uC218%uB3C4%20%uC788%uACE0%20%uC815%uADDC%uD654%uAC00%20%uC804%uD600%20%uB418%uC9C0%20%uBABB%uD55C%20%uAC12%uC774%uB77C%20%uB2E4%uB8E8%uAE30%20%uBD88%uD3B8%uD558%uB2E4.%20%uC608%uB97C%uB4E4%uBA74%20%uADF8%20%uBB38%uC11C%uC5D0%20%60%uC560%uD50C%60%uC774%2010%uBC88%20%uB098%uC624%uBA74%20%6010%60%uC744%20%60tf%28%29%uAC12%60%uC73C%uB85C%20%uC4F0%uB294%20%uAC83%uC774%uB2E4.%20%uB354%20%uCEE4%uC9C0%uBA74%20%uC5B4%uCA4C%uB098..%20%uB530%uB77C%uC11C%20%uC870%uAE08%20%uB354%20%uBC1C%uC804%uB41C%20%uBC29%uBC95%uC774%20%uD544%uC694%uD560%20%uC218%20%uC788%uB2E4.%20%uC0AC%uC2E4%20%uD544%uC790%uB294%20%uC774%20%uC544%uC774%uB514%uC5B4%20%uADF8%uB300%uB85C%uB97C%20%uC720%uC0AC%20%uAE30%uC0AC%uB97C%20%uBB36%uB294%20%uAE30%uB2A5%uC758%20%uCF54%uB4DC%uC5D0%uC11C%20%uC0AC%uC6A9%uD558%uC600%uB294%uB370%2C%20%uAC04%uB2E8%uD55C%20%uC544%uC774%uB514%uC5B4%uC784%uC5D0%uB3C4%20%uB9E4%uC6B0%20%uB192%uC740%20%uC815%uD655%uB3C4%uB97C%20%uBCF4%uC5EC%uC8FC%uC5C8%uB2E4.%0A%0A%uB2E4%uB978%20%uBC29%uBC95%uC73C%uB85C%uB294%20**%uBD88%uB9B0%20%uBE48%uB3C4**%uB77C%uB294%20%uBC29%uC2DD%uC774%20%uC788%uB2E4.%20%uB2E8%uC5B4%20%60t%60%uAC00%20%uB3C4%uD050%uBA3C%uD2B8%20%60d%60%uC5D0%20%uD55C%uBC88%uC774%uB77C%uB3C4%20%uB098%uD0C0%uB098%uBA74%201%2C%20%uB098%uD0C0%uB098%uC9C0%20%uC54A%uC73C%uBA74%200%uC73C%uB85C%20%uD45C%uAE30%uD558%uB294%20%uBC29%uBC95%uC774%uB2E4.%20%uC774%20%uBC29%uBC95%uC758%20%uB2E8%uC810%uC740%20%uC544%uBB34%uB798%uB3C4%20%uD55C%uBC88%20%uB098%uD0C0%uB09C%20%uC560%uB098%2C%203%uBC88%20%uB098%uD0C0%uB09C%20%uC560%uB098%20%uB611%uAC19%uC740%20%uBB34%uAC8C%uB97C%20%uAC00%uC9C4%uB2E4%uB294%20%uC810%uC77C%20%uAC83%uC774%uB2E4.%0A%0A%uC22B%uC790%uAC00%20%uB108%uBB34%20%uCEE4%uC9C8%20%uC218%20%uC788%uC73C%uBBC0%uB85C%20%uC791%uAC8C%20%uB9CC%uB4DC%uB294%20%uB9E4%uC6B0%20%uAE30%uBCF8%uC801%uC778%20%uC544%uC774%uB514%uC5B4%uB294%20%uB85C%uADF8%uB2E4.%20log%uB97C%20%uC50C%uC6B0%uAC8C%20%uB418%uBA74%20%uB9E4%uC6B0%20%uC791%uC740%20%uC218%uB85C%20%uC22B%uC790%uB97C%20%uBC14%uAFC0%20%uC218%20%uC788%uB2E4.%20%uC774%uB97C%20**%uB85C%uADF8%20%uC2A4%uCF00%uC77C%20%uBE48%uB3C4**%uB77C%20%uD55C%uB2E4.%0A%0A**%uC99D%uAC00%20%uBE48%uB3C4**%uB77C%uB294%20%uAC83%uB3C4%20%uC788%uB294%uB370%2C%20%uC774%uAC83%uC740%20%uBB38%uC11C%uC758%20%uAE38%uC774%uC5D0%20%uB530%uB978%20%uB2E8%uC5B4%uC758%20%uC0C1%uB300%uC801%20%uBE48%uB3C4%uB97C%20%uD45C%uD604%uD574%uC8FC%uB294%20%uBC29%uC2DD%uC774%uB2E4.%20%uC774%20%uBC29%uC2DD%uC744%20%uC774%uC6A9%uD558%uBA74%20%uC2A4%uCF00%uC77C%uC774%20%uCD5C%uB300%201%uB85C%20%uACE0%uC815%uB418%uB294%20%uD6A8%uACFC%uB97C%20%uC5BB%uC744%20%uC218%20%uC788%uB2E4.%20%uC2E4%uC81C%uB85C%20%uD544%uC790%uAC00%20%uB274%uC2A4%20%uCD94%uCC9C%uB97C%20%uC704%uD574%20%uC5D4%uD2F0%uD2F0%uC758%20TF-IDF%uB97C%20%uAD6C%uD604%uD558%uBA74%uC11C%20%uC0AC%uC6A9%uD55C%20%uBC29%uC2DD%uC774%uAE30%uB3C4%20%uD558%uB2E4.%20%uC218%uD559%20%uC2DD%uC740%20%uB530%uB85C%20%uC788%uC9C0%uB9CC%20%uC774%uD574%uD558%uAE30%20%uC88B%uB3C4%uB85D%20%uD55C%uAD6D%uB9D0%28%3F%29%uB85C%20%uC801%uC5C8%uB2E4.%0A%0A%20%20%20%20tf%28t%2Cd%29%20%3D%200.5%20+%200.5%20x%20f%28t%2Cd%29%20/%20%28%uBB38%uC11C%20%uB0B4%20%uB2E8%uC5B4%uB4E4%uC758%20f%28t%2Cd%29%20%uAC12%20%uC911%20%uCD5C%uB313%uAC12%29%20%0A%23%23%23Inversed%20Document%20Frequency%0A%uC5ED%uBB38%uC11C%20%uBE48%uB3C4%uB294%20%uB2E8%uC5B4%uAC00%20%uBB38%uC11C%20%uC9D1%uD569%20%uB0B4%uC5D0%uC11C%20%uC5BC%uB9C8%uB098%20%uC790%uC8FC%20%uB4F1%uC7A5%uD558%uB294%uC9C0%uB97C%20%uB098%uD0C0%uB0B8%uB2E4.%20%uC804%uCCB4%20%uBB38%uC11C%20%uC911%20%uBC1C%uC0DD%uD558%uB294%20%uBE48%uB3C4%uB97C%20%uC5ED%uC218%20%uCDE8%uD55C%20%uAC12%uC73C%uB85C%2C%20%20%uC5ED%uC218%uB97C%20%uCDE8%uD558%uB2E4%20%uBCF4%uB2C8%20%uAC12%uC774%20%uBB34%uD55C%uD788%20%uCEE4%uC9C8%20%uC218%20%uC788%uAE30%uC5D0%20%uC774%uB97C%20%uBC29%uC9C0%uD558%uB824%uACE0%20log%uB97C%20%uC50C%uC6CC%20%uAC12%uC744%20%uC904%uC778%uB2E4.%0A%0A%60D%60%uB294%20%uC804%uCCB4%20%uBB38%uC11C%uB4E4%uC758%20%uC9D1%uD569%uC744%20%uC758%uBBF8%uD55C%uB2E4.%0A%0A%20%20%20%20idf%28t%2CD%29%20%3D%20log%20%28%20%uC804%uCCB4%20%uBB38%uC11C%uC758%20%uAC2F%uC218%20/%20%uB2E8%uC5B4%20t%uAC00%20%uD3EC%uD568%uB41C%20%uBB38%uC11C%uC758%20%uC218%20%29%0A%0A%23%23%23TF-IDF%0A%0A%20%20%20%20tfidf%28t%2Cd%2CD%29%20%3D%20tf%28t%2Cd%29%20x%20idf%28t%2CD%29%0A%0A%uAC04%uB2E8%uD788%20%uAD6C%uD55C%20%uB450%uAC1C%uC758%20%uD568%uC218%uB97C%20%uACF1%uD558%uBA74%20%uB41C%uB2E4.%20%uD2B9%uC815%20%uBB38%uC11C%20%uB0B4%uC5D0%uC11C%20%uB2E8%uC5B4%20%uBE48%uB3C4%uAC00%20%uB192%uACE0%2C%20%uC804%uCCB4%20%uBB38%uC11C%uC5D0%uC11C%20%uADF8%20%uB2E8%uC5B4%uAC00%20%uD3EC%uD568%uB41C%20%uBB38%uC11C%uAC00%20%uC801%uB2E4%uBA74%20%uC774%20%uAC12%uC740%20%uB192%uC544%uC9C4%uB2E4.%20%uB530%uB77C%uC11C%20%uC774%20%uAC12%uC744%20%uC774%uC6A9%uD558%uBA74%20%uD754%uD55C%20%uB2E8%uC5B4%uB97C%20%uAC78%uB7EC%20%uB0BC%20%uC218%20%uC788%uB2E4.%20%uD2B9%uC815%20%uB2E8%uC5B4%uB97C%20%uD3EC%uD568%uD558%uB294%20%uBB38%uC11C%uAC00%20%uB9CE%uC744%uC218%uB85D%20%uB85C%uADF8%uC548%uC758%20%uAC12%28%60idf%28%29%60%uC5D0%uC11C%29%uC774%201%uC5D0%20%uAC00%uAE4C%uC6CC%uC9C0%uAC8C%20%uB418%uACE0%2C%20%uC774%20%uACBD%uC6B0%20TF-IDF%20%uAC12%uC740%200%uC5D0%20%uAC00%uAE4C%uC6CC%uC9C0%uAC8C%20%uB41C%uB2E4.%0A%0A%23%23%23%uC2E4%uC81C%uB85C%20%uAD6C%uD604%uD558%uACE0%20%uC0AC%uC6A9%uD558%uBA70.%0A%uD30C%uC774%uC36C%uC73C%uB85C%20%uAD6C%uD604%uC2DC%20%uC0DD%uAC01%uBCF4%uB2E4%20%uB9E4%uC6B0%20%uAC04%uB2E8%uD558%uAC8C%20%uAD6C%uD604%uC774%20%uAC00%uB2A5%uD558%uB2E4.%20%uADF8%20%uAC12%uC740%20%uBB34%uD55C%uC815%20%uCEE4%uC9C8%20%uC218%20%uC788%uC744%20%uAC83%20%uAC19%uC558%uB294%uB370%205%uB97C%20%uB118%uB294%20%uACBD%uC6B0%uAC00%20%uC5C6%uC5C8%uB2E4.%20%uC774%uAC83%uC740%20%uBB38%uC11C%20%uC9D1%uD569%uC758%20%uD2B9%uC131%uC5D0%20%uB530%uB77C%20%uB2EC%uB77C%20%uC9C8%20%uC218%20%uC788%uB2E4.%20%uB610%20%uB85C%uADF8%uB97C%20%uC0AC%uC6A9%uD560%20%uB54C%20%uBC11%uC774%20%uBB34%uC2A8%20%uB85C%uADF8%uC778%uC9C0%uC5D0%20%uB530%uB77C%20%uB2E4%uB97C%20%uC218%20%uC788%uB2E4.%20%uD544%uC790%uB294%20%uBC11%uC774%2010%uC778%20%uC0C1%uC6A9%uB85C%uADF8%uB97C%20%uCDE8%uD574%uC8FC%uC5C8%uB2E4.%20%uC0AC%uC2E4%20%uC774%uAC83%uC740%20%uC0C1%uB300%uC801%uC778%20%uBE44%uAD50%uC774%uBBC0%uB85C%20%uBC11%uC774%20%uBA87%uC778%20%uB85C%uADF8%uB97C%20%uCDE8%uD558%uB294%uAC00%uB294%20%uADF8%uB807%uAC8C%20%uC911%uC694%uD55C%20%uBB38%uC81C%uB294%20%uC544%uB2C8%uB77C%20%uC0DD%uAC01%uB41C%uB2E4.%20%uC544%uB798%uB294%20%uD544%uC790%uC758%20%uCF54%uB4DC%uB2E4.%20%uD604%uC7AC%uB294%20%uC774%uAC83%uBCF4%uB2E4%20%uD6E8%uC52C%20%uB9AC%uD329%uD1A0%uB9C1%20%uB418%uC5B4%20%uBCF8%uB798%uC758%20%uAD6C%uC870%uB97C%20%uC870%uAE08%20%uC783%uC5C8%uC9C0%uB9CC%2C%20%uC774%uAC8C%20%uCC98%uC74C%20%uC9F0%uC744%20%uB54C%20%uCF54%uB4DC%uB2E4.%0A%0A%20%20%20%20def%20f%28t%2Cd%29%3A%0A%20%20%20%20%20%20%20%20return%20float%28article_entity_count_dict%5Bd%5D%5Bt%5D%29%0A%0A%20%20%20%20def%20tf%28t%2Cd%29%3A%0A%20%20%20%20%20%20%20%20return%200.5%20+%20%28%280.5%29%20*%20f%28t%2C%20d%29%20/%20max%28%5Bf%28w%2C%20d%29%20for%20w%2C%20c%20in%20article_entity_count_dict%5Bd%5D.iteritems%28%29%5D%29%29%0A%0A%20%20%20%20def%20idf%28t%29%3A%0A%20%20%20%20%20%20%20%20return%20math.log10%28category_number_of_documents%5Bentity_category_count_dict%5Bt%5D%5D%20/%20len%28entity_article_count_dict%5Bt%5D.keys%28%29%29%29%0A%0A


comments powered by Disqus
태그, 트랙백, 검색 상자 토글