Open mingxoxo opened 3 years ago
์ถ์ฒ : https://bkshin.tistory.com/129
๋จ์ด feature์ ๊ฐ์ ๋ถ์ฌํ ๋, ๊ฐ ๋ฌธ์์์ ํด๋น ๋จ์ด๊ฐ ๋ํ๋๋ ํ์, ์ฆ Count๋ฅผ ๋ถ์ฌํ๋ ๊ฒฝ์ฐ ์นด์ดํธ ๋ฒกํฐํ๋ผ๊ณ ํ๋ค. ๊ฐ์ด ๋์์๋ก ์ค์ํ ๋จ์ด๋ก ์ธ์ํ๋ค.
from sklearn.feature_extraction.text import CountVectorizer
corpus = ['you know I want your love. because I love you.']
vector = CountVectorizer()
print(vector.fit_transform(corpus).toarray()) # ์ฝํผ์ค๋ก๋ถํฐ ๊ฐ ๋จ์ด์ ๋น๋ ์๋ฅผ ๊ธฐ๋กํ๋ค.
print(vector.vocabulary_) # ๊ฐ ๋จ์ด์ ์ธ๋ฑ์ค๊ฐ ์ด๋ป๊ฒ ๋ถ์ฌ๋์๋์ง๋ฅผ ๋ณด์ฌ์ค๋ค.
์ถ๋ ฅ ๊ฒฐ๊ณผ
[[1 1 2 1 2 1]]
{'you': 4, 'know': 1, 'want': 3, 'your': 5, 'love': 2, 'because': 0}
you์ want๊ฐ 2๋ฒ์ฉ ์์ผ๋ฏ๋ก ์ค์ํ ๋จ์ด๋ก ์ธ์ํ๋ค. CountVectorizer๋ ๊ธฐ๋ณธ์ ์ผ๋ก 2์๋ฆฌ ์ด์์ ๋ฌธ์์ ๋ํด์๋ง ํ ํฐ์ผ๋ก ์ธ์ํ๊ธฐ ๋๋ฌธ์ I๋ ์์ด์ก๋ค.
CountVectorizer์์ ์ ๊ณตํ๋ ๋ถ์ฉ์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ ๊ฑฐํ ์ ์๋ค.
vect = CountVectorizer(stop_words="english")
์นด์ดํธ ๊ธฐ๋ฐ ๋ฒกํฐํ๋ ์นด์ดํธ ๊ฐ์ด ๋์์๋ก ์ค์ํ ๋จ์ด๋ก ์ธ์ํ๊ธฐ ๋๋ฌธ์ ๋ถ์ฉ์ด์ ๊ฐ์ ๋ชจ๋ ๋ฌธ์์์ ์์ฃผ ์ฐ์ผ ์ ๋ฐ์ ์๋ ๋จ์ด๋ค์ด ์ค์ํ๋ค๊ณ ์ธ์๋ ์ ์๋ค. ์ด๋ฐ ๋ฌธ์ ๋ฅผ ๋ณด์ํ๊ธฐ ์ํด TF-IDF(Term Frequency - Inverse Document Frequency) ๋ฒกํฐํ๋ฅผ ์ฌ์ฉํ๋ค.
TF-IDF๋ ๊ฐ๋ณ ๋ฌธ์์์ ์์ฃผ ๋ฑ์ฅํ๋ ๋จ์ด์ ๋์ ๊ฐ์ค์น๋ฅผ ์ฃผ๋, ๋ชจ๋ ๋ฌธ์์์ ์์ฃผ ๋ฑ์ฅํ๋ ๋จ์ด์๋ ํ๋ํฐ๋ฅผ ์ฃผ๊ณ , ํด๋น ๋ฌธ์์์๋ง ์์ฃผ ๋ฑ์ฅํ๋ ๋จ์ด์ ๋์ ๊ฐ์ค์น๋ฅผ ์ฃผ๋ ๋ฐฉ์์ด๋ค. ๊ทธ๋ ๊ฒ ํจ์ผ๋ก์จ ํด๋น ๋จ์ด๊ฐ ์ค์ง์ ์ผ๋ก ์ค์ํ ๋จ์ด์ธ์ง ๊ฒ์ฌํ๋ค. ๋ฌธ์์ ์์ด ๋ง์ ๊ฒฝ์ฐ์๋ ์ผ๋ฐ์ ์ผ๋ก ์นด์ดํธ ๊ธฐ๋ฐ์ ๋ฒกํฐํ๋ณด๋ค TF-IDF ๋ฐฉ์์ ๋ฒกํฐํ๋ฅผ ์ฌ์ฉํ๋ค.
from sklearn.feature_extraction.text import TfidfVectorizer
corpus = [
'you know I want your love',
'I like you',
'what should I do ',
]
tfidfv = TfidfVectorizer().fit(corpus)
print(tfidfv.transform(corpus).toarray())
print(tfidfv.vocabulary_)
์ถ๋ ฅ ๊ฒฐ๊ณผ
[[0. 0.46735098 0. 0.46735098 0. 0.46735098 0. 0.35543247 0.46735098]
[0. 0. 0.79596054 0. 0. 0. 0. 0.60534851 0. ]
[0.57735027 0. 0. 0. 0.57735027 0. 0.57735027 0. 0. ]]
{'you': 7, 'know': 1, 'want': 5, 'your': 8, 'love': 3, 'like': 2, 'what': 6, 'should': 4, 'do': 0}
์นด์ดํธ ๊ธฐ๋ฐ ๋ฒกํฐํ์ธ CountVectorizer๋ ๋จ์ํ ๋น๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํํ์ ํด์ฃผ์ง๋ง TF-IDF ๋ฒกํฐํ๋ ๋ค๋ฅธ ๋ฌธ์ฅ์์์ ๋จ์ด ๋น๋๋ ๊ณ ๋ คํ์ฌ ํด๋น ๋จ์ด์ ์ค์๋๋ฅผ ํํํ๋ค. ๋ฐ๋ผ์ CountVectorizer๋ณด๋ค๋ TF-IDF๋ฅผ ์ผ๋ฐ์ ์ผ๋ก ๋ ๋ง์ด ์ด๋ค.
https://www.kaggle.com/c/sejong-ai-challenge-p2/overview