728x90

TF(d, t): 특정 문서 d 내에서 특정 단어 t가 등장하는 횟수

DF(t): 특정 단어 t가 등장한 문서의 수

IDF(d, t): DF(t)에 반비례하는 값

 

---> TF-IDF = TF*IDF

doc_1 = "I like cats"
doc_2 = "I like dogs"
doc_3 = "Cats are cute"
doc_4 = "Dogs are loyal"

total_docs = 4

# 문서들을 리스트로 저장
documents = [doc_1, doc_2, doc_3, doc_4]

# 각 단어가 등장한 문서 수 저장할 딕셔너리
word_doc_count = {}

for doc in documents:
    words = doc.split()
    unique_words = set(words)

    for word in unique_words:
        if word in word_doc_count:
            word_doc_count[word] += 1
        else:
            word_doc_count[word] = 1

print("전체 문서 수: ", total_docs, '\n')
for word, count in word_doc_count.items():
    print(f'단어 "{word}"가 등장한 문서 수: ', count )

출력 결과>>

전체 문서 수:  4 

단어 "cats"가 등장한 문서 수:  1
단어 "I"가 등장한 문서 수:  2
단어 "like"가 등장한 문서 수:  2
단어 "dogs"가 등장한 문서 수:  1
단어 "cute"가 등장한 문서 수:  1
단어 "are"가 등장한 문서 수:  2
단어 "Cats"가 등장한 문서 수:  1
단어 "Dogs"가 등장한 문서 수:  1
단어 "loyal"가 등장한 문서 수:  1

 

  •  "I":
      - IDF("I") = log((전체 문서 수) / (단어 "I"가 등장한 문서 수)) = log(4 / 2) = 0.301
      - TF-IDF("I") = TF("I") * IDF("I") = (1 / 3) * 0.301 = 0.100

  •  "like":
      - IDF("like") = log((전체 문서 수) / (단어 "like"가 등장한 문서 수)) = log(4 / 2) = 0.301
      - TF-IDF("like") = TF("like") * IDF("like") = (1 / 3) * 0.301 = 0.100

  •  "cats":
      - IDF("cats") = log((전체 문서 수) / (단어 "cats"가 등장한 문서 수)) = log(4 / 2) = 0.301
      - TF-IDF("cats") = TF("cats") * IDF("cats") = (1 / 3) * 0.301 = 0.100

  •  "dogs":
      - IDF("dogs") = log((전체 문서 수) / (단어 "dogs"가 등장한 문서 수)) = log(4 / 2) = 0.301
      - TF-IDF("dogs") = TF("dogs") * IDF("dogs") = (1 / 3) * 0.301 = 0.100

  •  "are":
      - IDF("are") = log((전체 문서 수) / (단어 "are"가 등장한 문서 수)) = log(4 / 2) = 0.301
      - TF-IDF("are") = TF("are") * IDF("are") = (1 / 3) * 0.301 = 0.100

  •  "cute":
      - IDF("cute") = log((전체 문서 수) / (단어 "cute"가 등장한 문서 수)) = log(4 / 1) = 1.386
      - TF-IDF("cute") = TF("cute") * IDF("cute") = (1 / 3) * 1.386 = 0.462

  •  "loyal":
      - IDF("loyal") = log((전체 문서 수) / (단어 "loyal"가 등장한 문서 수)) = log(4 / 1) = 1.386
      - TF-IDF("loyal") = TF("loyal") * IDF("loyal") = (1 / 3) * 1.386 = 0.462


728x90

+ Recent posts