TF-IDF๋ ๋ฌธ์ ๋ด ๋จ์ด์ ์ค์๋๋ฅผ ํ๊ฐํ๋ ๋ํ์ ์ธ ๋ฐฉ๋ฒ์ ๋๋ค. ํน์ ๋จ์ด๊ฐ ๋ฌธ์์์ ์ผ๋ง๋ ์ค์ํ์ง๋ฅผ ์์นํํ์ฌ, ๋ฌธ์ ๊ฐ ์ ์ฌ๋๋ฅผ ์ธก์ ํ๊ฑฐ๋ ๊ฒ์ ์์ง์์ ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ๋ญํนํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
๋ฌธ์ ๋ด์์ ํน์ ๋จ์ด๊ฐ ๋ฑ์ฅํ๋ ๋น๋๋ฅผ ๋ํ๋ ๋๋ค.TF(t,d)=f(t,d)NTF(t, d) = \frac{f(t, d)}{N}TF(t,d)=Nf(t,d)โ
โ TF์ ์๋ฏธ: ์์ฃผ ๋ฑ์ฅํ๋ ๋จ์ด์ผ์๋ก ํด๋น ๋ฌธ์์์ ์ค์ํ๊ฒ ์ฌ์ฉ๋ ๊ฐ๋ฅ์ฑ์ด ๋์.
ํด๋น ๋จ์ด๊ฐ ์ฌ๋ฌ ๋ฌธ์์์ ๋ฑ์ฅํ๋ ์ ๋๋ฅผ ์กฐ์ ํ๋ ๊ณ์์ ๋๋ค. ๋๋ฌด ๋ง์ ๋ฌธ์์์ ๋ฑ์ฅํ๋ ๋จ์ด(์: โtheโ, โisโ, โandโ ๊ฐ์ ๋ถ์ฉ์ด)๋ ์ ๋ณด ๊ฐ์น๊ฐ ๋ฎ๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ๋ฐ์ํ์ฌ ๊ฐ์ค์น๋ฅผ ๋ฎ์ถฅ๋๋ค.IDF(t)=logโก(D1+df(t))IDF(t) = \log \left(\frac{D}{1 + df(t)}\right)IDF(t)=log(1+df(t)Dโ)
โ IDF์ ์๋ฏธ: ํน์ ๋ฌธ์์์๋ง ๋ฑ์ฅํ๋ ๋จ์ด์ผ์๋ก(ํฌ๊ทํ ์๋ก) ๋ ๋์ ๊ฐ์ค์น๋ฅผ ๋ถ์ฌ.
TF์ IDF๋ฅผ ๊ณฑํ ๊ฐ์ด ํด๋น ๋จ์ด์ ์ต์ข ์ค์๋ ์ ์๊ฐ ๋ฉ๋๋ค.TFโIDF(t,d)=TF(t,d)รIDF(t)TF-IDF(t, d) = TF(t, d) \times IDF(t)TFโIDF(t,d)=TF(t,d)รIDF(t)
โ TF-IDF์ ์๋ฏธ:
from sklearn.feature_extraction.text import TfidfVectorizer
# ์ํ ๋ฌธ์
documents = [
"I love machine learning. Machine learning is amazing.",
"Natural language processing is a part of AI.",
"Deep learning advances AI and machine learning."
]
# TF-IDF ๋ณํ๊ธฐ ์์ฑ
vectorizer = TfidfVectorizer()
tfidf_matrix = vectorizer.fit_transform(documents)
# ๋จ์ด ๋ชฉ๋ก ์ถ๋ ฅ
print("TF-IDF ๋จ์ด ๋ชฉ๋ก:", vectorizer.get_feature_names_out())
# ๊ฐ ๋ฌธ์์ TF-IDF ๊ฐ ์ถ๋ ฅ
print("TF-IDF ํ๋ ฌ:\n", tfidf_matrix.toarray()) โ ์ค๋ช :
TfidfVectorizer()๋ฅผ ์ฌ์ฉํด ๋ฌธ์๋ฅผ ๋ฒกํฐ๋ก ๋ณํ.fit_transform()์ ํตํด TF-IDF ๊ฐ์ ๊ณ์ฐ.toarray()๋ฅผ ์ด์ฉํด ๋ณํ๋ ํ๋ ฌ์ ์ถ๋ ฅ.import pandas as pd
# TF-IDF ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ดํฐํ๋ ์์ผ๋ก ๋ณํ
df = pd.DataFrame(tfidf_matrix.toarray(), columns=vectorizer.get_feature_names_out())
print(df) ๐ ์ถ๋ ฅ ์์
| ai | advances | amazing | deep | is | learning | love | machine | natural | part | processing | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| ๋ฌธ์ 1 | 0 | 0 | 0.52 | 0 | 0 | 0.37 | 0.52 | 0.37 | 0 | 0 | 0 |
| ๋ฌธ์ 2 | 0.42 | 0 | 0 | 0 | 0.42 | 0 | 0 | 0 | 0.42 | 0.42 | 0.42 |
| ๋ฌธ์ 3 | 0.33 | 0.46 | 0 | 0.46 | 0 | 0.33 | 0 | 0.33 | 0 | 0 | 0 |
โ ์ค๋ช :
TF-IDF ๋ฒกํฐ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฌธ์ ๊ฐ ์ ์ฌ๋๋ฅผ ์ธก์ ํ ์๋ ์์ต๋๋ค.
from sklearn.metrics.pairwise import cosine_similarity
# ๋ฌธ์ ๊ฐ ์ฝ์ฌ์ธ ์ ์ฌ๋ ๊ณ์ฐ
cos_sim = cosine_similarity(tfidf_matrix)
print("๋ฌธ์ ๊ฐ ์ฝ์ฌ์ธ ์ ์ฌ๋:\n", cos_sim) โ ์ถ๋ ฅ ์์
๋ฌธ์ ๊ฐ ์ฝ์ฌ์ธ ์ ์ฌ๋:
[[1. 0.118 0.529]
[0.118 1. 0.206]
[0.529 0.206 1. ]] โ ์ค๋ช :
cosine_similarity()๋ฅผ ์ด์ฉํด ๋ฌธ์ ๊ฐ ์ ์ฌ๋๋ฅผ ์ธก์ .| ๊ธฐ๋ฒ | ์ค๋ช | ์ฅ์ | ๋จ์ |
|---|---|---|---|
| TF-IDF | ๋จ์ด ๋น๋ ๊ธฐ๋ฐ ๊ฐ์ค์น ๋ถ์ฌ | ๋น ๋ฅด๊ณ ๊ฐ๋จํจ | ๋ฌธ๋งฅ ๊ณ ๋ ค X |
| Word2Vec | ๋จ์ด์ ์๋ฏธ๋ฅผ ๋ฒกํฐ๋ก ๋ณํ | ์๋ฏธ์ ๊ด๊ณ ๋ฐ์ ๊ฐ๋ฅ | ๋ฌธ์ฅ ์ ์ฒด ๋ถ์ ์ด๋ ค์ |
| BERT | ๋ฌธ์ฅ ๋จ์์ ์๋ฏธ ํ์ต | ๋ฌธ๋งฅ์ ๊ณ ๋ คํ ์๋ฏธ ๋ถ์ ๊ฐ๋ฅ | ๋ชจ๋ธ์ด ํฌ๊ณ ๋๋ฆผ |
โ TF-IDF๋ ๋น ๋ฅด๊ณ ํจ์จ์ ์ด์ง๋ง, ๋จ์ด ๊ฐ ์๋ฏธ๋ฅผ ๋ฐ์ํ์ง ๋ชปํ๋ฏ๋ก Word2Vec, BERT ๊ฐ์ ๋ฐฉ๋ฒ๊ณผ ํจ๊ป ์ฌ์ฉํ๋ฉด ๋์ฑ ์ ๊ตํ NLP ๋ถ์์ด ๊ฐ๋ฅ!
โ ๊ฒ์ ์์ง: ๊ฒ์์ด์ ๋ฌธ์ ๊ฐ ์ ์ฌ๋๋ฅผ ๊ณ์ฐํ์ฌ ๊ฒฐ๊ณผ ์ ๋ ฌ
โ ๋ฌธ์ ๋ถ๋ฅ: ๋ด์ค, ์ด๋ฉ์ผ, ๋ฆฌ๋ทฐ ๋ฑ์ ์๋ ๋ถ๋ฅ
โ ์คํธ ํํฐ๋ง: ์คํธ ๋ฉ์ผ๊ณผ ์ ์ ๋ฉ์ผ์ TF-IDF ํจํด์ ๋น๊ตํ์ฌ ๋ถ๋ฅ
โ ๊ฐ์ ๋ถ์: ํ
์คํธ์์ ๊ธ์ /๋ถ์ ํค์๋์ ์ค์๋ ๋ถ์
์ฝ์คํผ 8% ํญ๋ฝ, ์ํท๋ธ๋ ์ด์ปค ๋ฐ๋, SKํ ๋ ์ฝค Claude AI ์ฐจ๋จ๊น์ง. ํ๊ตญ์ AI ๋ ๋ฒ๋ฆฌ์ง ๋ฒ๋ธ์ด ๋จ ํ๋ฃจ…
SNS ์ฌ์ง 1์ฅ์ผ๋ก 30์ด ๋ง์ ๋ฅํ์ดํฌ ์์์ด ์์ฑ๋ฉ๋๋ค. ๋น์ ์ ์ผ๊ตด์ด ์ด๋ฏธ ๋ฒ์ฃ์ ์ ์ฉ๋๊ณ ์์ ์…
SNS ์ฌ์ง 1์ฅ์ผ๋ก 30์ด ๋ง์ ๋ฅํ์ดํฌ ์์์ด ์์ฑ๋ฉ๋๋ค. ๋น์ ์ ์ผ๊ตด์ด ์ด๋ฏธ ๋ฒ์ฃ์ ์ ์ฉ๋๊ณ ์์ ์…
๋ฌ๋ฌ/์ ํ์จ์ด ๊ธ๋ฑํ๋ ์ด์ ์ ์ค์ํ ์ํฅ์ ์ ๋ฆฌํ์ต๋๋ค. ์ง๊ธ ๋น์ฅ ํ์ฉํ ์ ์๋ ํ์ ยทํฌ์ ๋์ ์ ๋ต๊น์ง…
๋ฏธ๋์์ ยท๋ฏธ๋์์ ๋ฒค์ฒํฌ์ยท๋ฏธ๋์์ ์๋ช ์ด ๋๋ฐ ๊ธ๋ฑํ ์ด์ ๋ ์คํ์ด์คX ์์ฅ ๊ธฐ๋๊ฐ์ ๋๋ค. ์ธ ํ์ฌ๊ฐ ์คํ์ด์คX์ ์ด๋ป๊ฒ ์ฐ๊ฒฐ๋์ด ์๋์ง ์์ธํ ๋ถ์ํ์ต๋๋ค.
์คํ์ด์คX ์์ฅ์ด ๊ณ์ ๋ฏธ๋ค์ง๋ ์ง์ง ์ด์ ๋ฅผ ํํค์ณค์ต๋๋ค. ํ์ฑ ๊ณํ, ์คํ๋งํฌ ๋ถ๋ฆฌ, ๊ตญ๋ฐฉ ๊ณ์ฝ... ๋จธ์คํฌ๊ฐ ์ ๋…