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 ํจํด์ ๋น๊ตํ์ฌ ๋ถ๋ฅ
โ ๊ฐ์ ๋ถ์: ํ
์คํธ์์ ๊ธ์ /๋ถ์ ํค์๋์ ์ค์๋ ๋ถ์
์์์ ์ ํ ์ ๋ฐ๋์ ํ์ธํด์ผ ํ ์ฒดํฌ๋ฆฌ์คํธ๋ฅผ ๊ณต๊ฐํฉ๋๋ค. ๊ณต์ ํ๊ฐ ์๋ฃ ์กฐํ๋ฒ, ๋ฐฉ๋ฌธ ์ ํ์ธ…
๊ณต๊ณต๊ธฐ๊ด ์ฑ์ฉ ๋น๋ฆฌ์ ์คํ์ ํผํด ์ง์์์ ๋์๋ฒ์ ์ ๋ฆฌํ์ต๋๋ค. ์ฑ์ฉ ๋น๋ฆฌ ์ ๊ณ ๋ฐฉ๋ฒ, ๊ณต์ต์ ๊ณ ์ ๋ณดํธ์ ๋, ์ทจ์ค์…
์ฃผ์ ์์ค์ ์ธ๊ธ ์ ์ฝ์ ํ์ฉํ๋ ํฉ๋ฒ์ ๋ฐฉ๋ฒ์ ๊ณต๊ฐํฉ๋๋ค. ํด์ธ์ฃผ์ ์์ตํต์ฐ, ISA ๊ณ์ข ํ์ฉ, ์ฐ๊ธ๊ณ์ข ์ ์ธ๊น์ง…
๋ฐฐ๋ฌ์ด ์์ ์๊ฐ๋ณด๋ค ํฌ๊ฒ ๋ฆ์ผ๋ฉด ์ทจ์ยทํ๋ถ์ ์์ฒญํ ์ ์์ต๋๋ค. ๋ฐฐ๋ฌ์ฑ๋ณ ์ง์ฐ ์ทจ์ ๋ฐฉ๋ฒ๊ณผ ์๋ชป ๋ฐฐ๋ฌ๋์…
ํต์ ๋น ์ ์ฝ์ ํต์ฌ์ ์๊ธ์ ์ต์ ํ์ ๋๋ค. ๋ด ๋ฐ์ดํฐ ์ฌ์ฉ๋ ํ์ธ๋ฒ, ์๋ฐํฐ ์ ํ ๋น๊ต, ์์ฝ๊ธ ์์ด ์๊ธ์ …
ํด์ง ํ ํด์ง๊ธ์ ๋ฐ์ง ๋ชปํ๋ค๋ฉด ์ฆ์ ๋ ธ๋๋ถ์ ์ ๊ณ ํ์ธ์. ์ง๊ธ ๊ธฐํ, ์๊ฒฉ ์๊ฑด, ์ ๊ณ ๋ฐฉ๋ฒ, ์์ก์ฒด๋น๊ธ…