๊ฐ๋
๋ฌธ์ฅ์ ์ด๋ฃจ๊ณ ์๋ ๋จ์ด์ ๋ฑ์ฅ ํ์๋ฅผ ์นด์ดํธํ๊ณ ๊ทธ ๊ฐ์ ๊ธฐ๋ฐ์ผ๋ก ๋ฌธ์๋ฅผ ๋ฒกํฐํํ๋ ๋ฐฉ๋ฒ
์์
BoW ๋ชจ๋ธ์ ๋จ์ด ์ฌ์ ์ ์ฐธ๊ณ ํ์ฌ ๋ฒกํฐํ๋ฅผ ์งํํ๋ค. ์๋์ฒ๋ผ 4๊ฐ์ ๋ฌธ์ฅ์ผ๋ก ์ด๋ฃจ์ด์ง ๋ฌธ์๊ฐ ์๋ค๊ณ ๊ฐ์ ํ๊ณ ์ด ๋ฌธ์๋ฅผ BoW ๋ชจ๋ธ๋ก ํํํด๋ณด๊ธฐ๋ก ํ๋ค.
โฝ ๋ฌธ์ : ["It was the best of times", "It was the worst of times", "It was the age of wisdom", "It was the age of foolishness"]
โฝ ๋ฌธ์์์ ์์ฑํ ๋จ์ด ์ฌ์ : ['It', 'was', 'the', 'best', 'of', 'times', 'worst', 'age', 'wisdom', 'foolishness']
โฝ ์ฒซ ๋ฒ์งธ ๋ฌธ์ฅ ๋ฒกํฐ ํํ ๊ฒฐ๊ณผ(๋๋จธ์ง ๋ฌธ์ฅ๋ ๋์ผ)
1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
์ผ๋จ ๊ฐ ๋ฌธ์ฅ ๋ฒกํฐ์ ๊ธธ์ด๋ ๋จ์ด ์ฌ์ ์์ ๊ฐ์์ ๋์ผํ๋ค. ์ฒซ ๋ฒ์งธ ๋ฌธ์ฅ์ ์ด๋ฃจ๊ณ ์๋ ๋จ์ด๋ It, was, the, best, of, times์ด๊ณ ๊ฐ ๋จ์ด๋ค์ด ์ด ๋ฌธ์ฅ์์ ํ ๋ฒ์ฉ๋ง ๋์๊ธฐ ๋๋ฌธ์ 1๋ก ๊ฐ์ด ์ฑ์์ง๋ค. ์ฒซ ๋ฒ์งธ ๋ฌธ์ฅ์ ํฌํจ๋์ด ์์ง ์์ worst, age, wisdom, foolishness ์์น์ ๊ฐ์ 0์ด๋ค.
๊ตฌํ
1) ์ง์ ๊ตฌํ
import numpy as np
docs = ["It was the best of times", "It was the worst of times", "It was the age of wisdom", "It was the age of foolishness"]
# ๋จ์ด ์ฌ์ ์์ฑ
word_dict = []
for sentences in docs:
word_list = sentences.split()
for word in word_list:
if word not in word_dict:
word_dict.append(word)
sentences_vector = []
for sentences in docs:
word_count = {key: 0 for key in word_dict}
for i in word_dict:
word_count[i] = sentences.count(i)
sentences_vector.append(list(word_count.values()))
โญ ์คํ ๊ฒฐ๊ณผ
2) CountVectorizer() ์ฌ์ฉ
์ฌ์ดํท๋ฐ์์ ์ ๊ณตํ๋ CountVectorizer()๋ ํ ์คํธ ๋ฐ์ดํฐ ์ ๋ ฅ๋ง ํด์ฃผ๋ฉด BoW ๋ชจ๋ธ์ ๋จ์ด ์ฌ์ ๊ตฌ์ถ ๋ฐ ๋ฒกํฐ ๋ณํ ๊ณผ์ ์ ์์์ ์ฒ๋ฆฌํ๋ค.
from sklearn.feature_extraction.text import CountVectorizer
count_vectorizer = CountVectorizer()
bow = count_vectorizer.transform(docs) # fit_transform(docs)๋ ๊ฐ๋ฅ
โญ ์คํ ๊ฒฐ๊ณผ
์ง์ ๊ตฌํํ ๊ฒฐ๊ณผ์ ๋จ์ด ๋ฐฐ์น ์์์์ ์ฐจ์ด๊ฐ ์๋ค. CountVectorizer()๋ ์ด๋ค ๋ฐฉ์์ผ๋ก ๋จ์ด๋ฅผ ๋ฐฐ์นํ๋์ง ๋ณด๊ณ ์ถ์๋๋ฐ ๋ฐฉ๋ฒ์ ์ฐพ์ง ๋ชปํ๋ค ๐คช
ํ๊ณ
๊ต์ฅํ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ด๋ผ๋ ์ฅ์ ์ด ์์ง๋ง ์ค์ง ํ์๋ง ์ธ๊ธฐ ๋๋ฌธ์ ์์นํ๋ ํํ๋ค์ด ๋ฌธ๋งฅ์ ํ์ ํ์ง ๋ชปํ๋ค. ๋ํ ํน๋ณํ ์๋ฏธ๋ฅผ ๊ฐ์ง๋ ์์ง๋ง ๋ง์ด ์ฌ์ฉ๋๋ ๋จ์ด(์กฐ์ฌ, ์ง์๋๋ช ์ฌ ๋ฑ)๋ค์ ์ค์ง์ ์ผ๋ก ์๋ฏธ๊ฐ ์์์๋ ํ์๊ฐ ๋๊ฒ ์นด์ดํธ๋๊ธฐ ๋๋ฌธ์ ๊ฒฐ๊ณผ์ ์ํฅ์ ๋ฏธ์น ์ ์๋ค.
โป ์ ์ฒด ์ฝ๋ : https://github.com/nsbg/NLP/blob/main/basic/bag-of-words.ipynb
'Artificial Intelligence > NLP' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[NLP ์ฌํ] encode() / encode_plus() (0) | 2022.09.28 |
---|---|
[NLP ๊ธฐ์ด] Vocab (0) | 2022.09.02 |
[NLP ๊ธฐ์ด] ๋์ ์ถํ ํ๋ ฌ(Co-occurrence Matrix) (0) | 2022.06.30 |
[NLP ๊ธฐ์ด] ํ ํฐํ(Tokenization, ํ ํฌ๋์ด์ง) (0) | 2022.06.28 |
[Transformer ์๋ฆฌ์ฆ] 01. Positional Encoding (0) | 2022.03.30 |