๊ฐ๋
ํ์ฌ ๋จ์ด(์ค์ฌ ๋จ์ด)์ ํน์ ๊ฑฐ๋ฆฌ ๋ฒ์ ์์ ์๋ ๋จ์ด์ ์ถํ ๋น๋๋ฅผ ํ๋ ฌ๋ก ๋ง๋ ๊ฒ์ด๋ค. ๊ตฌ๊ธ๋ง ๋๋ ์ฑ ์ ๋ณด๋ค ๋ณด๋ฉด ๊ฑฐ๋ฆฌ์ ๋ํ ์ค๋ช ์ด ๋น ์ ธ ์๊ณ '์ถํ ๋น๋'์๋ง ์ด์ ์ ๋ง์ถฐ ์ค๋ช ํ๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ฐ ๊ฐ์ธ์ ์ผ๋ก ์ถํ ๋น๋๋ณด๋ค ๊ฑฐ๋ฆฌ ๊ฐ๋ ์ด ๋ ์ค์ํ๋ค๊ณ ์๊ฐํ๋ค.
์ถํ ๋น๋๋ง์ผ๋ก ์ดํดํ๋ ค๊ณ ํ๋ฉด ํ๋ ฌ ํํ๋ฅผ ๋ดค์ ๋ '์ด ๋จ์ด ์ถํ ํ์๊ฐ ์ ์ด๊ฑฐ์ผ?' ์ถ์ ๊ฒฝ์ฐ๊ฐ ์๊ธด๋ค. ๋ด๊ฐ ๊ทธ๋ฌ์ ๐..
์์
โฝ ๋ฌธ์ฅ
์์ฐ์ด์ฒ๋ฆฌ ๋ถ์ผ์์ ๋ค๋ฃจ๊ฒ ๋ ๋ฐ์ดํฐ๊ฐ ํ ๋ฌธ์ฅ์ผ๋ก ์ด๋ค์ง ๊ฒฝ์ฐ๋ ์๊ฒ ์ง๋ง ์์์ด๋ฏ๋ก ๊ฐ๋จํ๊ฒ ๋ณด๊ธฐ๋ก ํ๋ค.
a hundred bad days made a hundred good stories.
AJR - 100 Days
์ด ๋ฌธ์ฅ์ ์ด์ฉํด ๋ง๋ ๋์ ์ถํ ํ๋ ฌ์ ์๋์ ๊ฐ์ ๋ชจ์ต์ผ๊ฑฐ๊ณ ๋จ์ด์ ์ถํ ํ์๊ฐ ๋น์นธ์ ์ฑ์ฐ๊ฒ ๋ ๊ฒ์ด๋ค.
โ ํน์ ๊ฑฐ๋ฆฌ ๋ฒ์
๊ฑฐ๋ฆฌ๋ฅผ Window๋ผ๊ณ ๋ถ๋ฅด๊ณ ์๊ธฐ ์์ ์ ๋ง๋ฌ์ ๋๋ ํ์ ์นด์ดํธ์ ํฌํจํ์ง ์๋๋ค. ์ด์ ๋ ๊ฐ์ง ๊ฒฝ์ฐ๋ฅผ ์๊ฐํด๋ณด์.
1) ํ์ฌ ๋จ์ด: made / Window ํฌ๊ธฐ: 1
๊ฑฐ๋ฆฌ๊ฐ 1์ด๊ธฐ ๋๋ฌธ์ ํ์ฌ ๋จ์ด made์ ์ง์ , ์งํ ๋จ์ด๋ง ์ถํ ํ์๊ฐ ์นด์ดํธ๋๋ค. ์ด ๊ฒฝ์ฐ days, good๋ง ๊ฐ์ด 1์ด๊ณ ๋๋จธ์ง๋ 0์ด๋ค.
2) ํ์ฌ ๋จ์ด: made / window ํฌ๊ธฐ: 2
made ๊ธฐ์ค ๊ฑฐ๋ฆฌ๊ฐ 2์ธ ๋จ์ด๋ค์ bad, days, good, stories์ด๊ณ ์ด ๋จ์ด๋ค๋ง ์ถํ ํ์๊ฐ 1, ๋๋จธ์ง๋ 0์ด๋ค.
๊ตฌํ
๋จ์ ๊ตฌํ์ธ๋ฐ ์ฝ๋๋ฅผ ๊น๋ํ๊ฒ ์ง๋ ๊ฒ๋ณด๋ค ์ง์ ๊ตฌํํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ ๋ฐ์ ์ง์คํ๊ธฐ ๋๋ฌธ์ ์ฝ๋ ํ๋ฆฌํฐ๋ ๊ต์ฅํ ๋ฎ๋ค.
sentence = 'a hundred bad days made a hundred good stories.'.replace('.', ' .').split()
sorted_sentence = []
# ['a', 'hundred', 'bad', 'days', 'made', 'good', 'stories', '.']
for s in sentence:
if s not in sorted_sentence:
sorted_sentence.append(s)
WINDOW_SIZE = 1
cooccurrence_mat = []
near_word = []
for i in range(len(sorted_sentence)):
if i==0:
check = [sorted_sentence[i+WINDOW_SIZE]]
elif i==len(sorted_sentence)-1:
check = [sorted_sentence[i-WINDOW_SIZE]]
else:
check = [sorted_sentence[i-WINDOW_SIZE], sorted_sentence[i+WINDOW_SIZE]]
near_word.append(check)
# 'hundred': ['a', 'bad']
window_size_dict = {k: v for k, v in zip(sorted_sentence, near_word)}
for value in window_size_dict.values():
count_dict = {k: 0 for k in sorted_sentence}
for v in value:
count_dict[v] += 1
print(count_dict)
cooccurrence_mat.append(list(count_dict.values()))
์ต์ข ๋์ ์ถํ ํ๋ ฌ์ด ์ ์ฅ๋ ๊ณณ์ cooccurrence_mat์ด๊ณ ์ด๋ป๊ฒ ์ ์ฅ๋๋์ง ํ์ธํด๋ณด๋ฉด ์๋์ ๊ฐ๋ค.
โป ์ ์ฒด ์ฝ๋ ๋ฐ ์คํ ๊ฒฐ๊ณผ : https://github.com/nsbg/NLP/tree/main/basic
'Artificial Intelligence > NLP' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[NLP ์ฌํ] encode() / encode_plus() (0) | 2022.09.28 |
---|---|
[NLP ๊ธฐ์ด] Vocab (0) | 2022.09.02 |
[NLP ๊ธฐ์ด] ํ ํฐํ(Tokenization, ํ ํฌ๋์ด์ง) (0) | 2022.06.28 |
[NLP ๊ธฐ์ด] BoW(Bag of Words) (0) | 2022.06.27 |
[Transformer ์๋ฆฌ์ฆ] 01. Positional Encoding (0) | 2022.03.30 |