์ฐ์ธ๋ํ๊ต ๊ฐ์๊ณํ์์ ์๋ธ๋ฆฌํ์์ ๊ฐ์ํ์ ๋ฐํ์ผ๋ก ๊ฐ์ ์ถ์ฒ ์๋น์ค ๊ตฌํ
-
์ค์นํด์ผ ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- Selenium
- konlpy
- re
- pickle
- keras
- sklearn
- gensim
- torch
- tqdm
- SentenceTransformer
-
์ค์นํด์ผ ํ๋ ํ๋ก๊ทธ๋จ
-
Chromedriver : https://chromedriver.chromium.org/downloads ์์ ๋ค์ด๋ก๋
(chrome://version/ ์์ ๋ฒ์ ํ์ธ ํ ๋ค์ด๋ก๋)
-
์ฐ์ธ๋ํ๊ต ์๋ธ๋ฆฌํ์ ์ฌ์ดํธ์์ ๊ฐ์ํ๊ณผ ๊ฐ์๊ณํ์ ๋ฐ์ดํฐ๋ฅผ ํฌ๋กค๋งํด์ค๋ ์ฝ๋์ ๋๋ค. (https://everytime.kr/, ID ๋ฐ ๋น๋ฐ๋ฒํธ ํ์)
crawling_review.ipynb, crawling syllabus.ipynb๋ ๊ฐ๊ฐ ์์ฉํต๊ณํ๊ณผ์ ๊ฐ์ํ๋ค๊ณผ ์๊ฒฝ๋ํ์ ๊ฐ์๊ณํ์๋ค์ ์์๋ก ํ ์ฝ๋์ ๋๋ค.
Selenium๊ณผ Chromedriver๋ฅผ ์ค์นํด์ผ๋ง ํฌ๋กค๋ง์ด ๊ฐ๋ฅํฉ๋๋ค.
ํฌ๋กค๋ฌ๊ฐ ๋ฐ๋ณต๋ฌธ์ ์ํํ ๋ ์๊ฐ์ด ๋ค์ ์ค๋ ๊ฑธ๋ฆด ์ ์์ต๋๋ค.
labeling_w2v.ipynb ํ์ผ์ ์๋์ ๋ด์ฉ์ ํฌํจํฉ๋๋ค.
- ๊ฐ๋ณ ๊ฐ์ํ word2vec ํ์ต
- ๊ฐ์ ํน์ง ํญ๋ชฉ๋ณ ๊ด๋ จ ๋จ์ด ์ถ์ถ: word2vec์์ ์ ์ฌ๋ ๋์ top n ๋จ์ด ๋ด์์ ๋ช ์ฌ ์์ฃผ ์ ์
- ๊ฐ์ํ๋ณ ๊ด๋ จ ๋จ์ด ์ ๋ฌด ํ์ ํ ๊ด๋ จ์ฑ ํ์(Y)
- ์ต์ข
๋ผ๋ฒจ๋ง: -1(๊ด๋ จ ์์)/ 1(๊ธ์ ์ )/ 0(๋ถ์ ์ )/ 0.5(์ ๋งค)
- reviews_label.csv : ์ต์ข ๊ฐ๋ณ ๊ฐ์ํ ๋ผ๋ฒจ ๋ฐ์ดํฐ
1D_CNN.ipynb ํ์ผ์ ์๋์ ๋ด์ฉ์ ํฌํจํฉ๋๋ค.
- ์ ์ ์ธ์ฝ๋ฉ ๊ณผ์
- 1D CNN ๋ชจ๋ธ๋ง
- model์ ํตํ ์์ธก
ํ๋ก์ ํธ ์งํ ์์ ์ฌ์ฉํ ์ ์์ธ์ฝ๋ฉ๋ ๋ฐ์ดํฐ, tokenizer pickle, CNN ๋ชจ๋ธ๋ค์ 1D CNN ํด๋์ ๋ฐ๋ก ์ ๋ก๋ํ์์ต๋๋ค.
๊ฐ์ํ ์์ธก๊ธฐ with KoBERT.ipynb ํ์ผ์ ์๋์ ๋ด์ฉ์ ํฌํจํฉ๋๋ค.
- KoBERT ํ์ผ ๋ถ๋ฌ์ค๊ธฐ
- ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ ๋ฐ ํํ ๋ณํ
- ํ ํฐํ(์์ ์๋ฒ ๋ฉ ๋ฑ) ์์ ๋ฐ ํ์ต ๋ชจ๋ธ ์ค๋ฆฝ
- Train & Test - ๊ฐ์ํ ์์ธก ๋ด
๊ฐ์ํ ์ถ์ฒ์์คํ with KoBERT.ipynb ํ์ผ์ ์ ํ์ผ๊ณผ ๊ฐ์ ๋งฅ๋ฝ์ผ๋ก ํ๋ฌ๊ฐ๋๋ค.
- ์ฐจ์ด์ : 5๊ฐ์ ๋ชจ๋ธ์ ์์ด์ ๊ฒฐ๊ณผ๊ฐ์ ๋ด์ผํด ๋ค์ฏ ๋ฒ์ Train/Test ์์ ์ด ์ผ์ด๋จ.
Word2Vec/Doc2Vec + NN ํ์ผ์ ์๋์ ๋ด์ฉ์ ํฌํจํฉ๋๋ค.
- preprocess_tokenize.ipynb : ๊ฐ์ํ ๋ฐ์ดํฐ ํ ํฐํ
- reviewtokenized.csv ์์ฑ
- preprocess_w2v.ipynb : ํ ํฐํ๋ ๊ฐ์ํ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ word2vec ๋ชจ๋ธ ์ ์ฉ/๊ฐ๊ฐ์ ๊ฐ์ํ์ ๋ํด word2vec ์ ์ฉํ ๊ฒ๊ณผ ๋์ผ ๊ฐ์์ ๋ํ ๊ฐ์ํ ํฉ์น ๊ฒ์ word2vec ์ ์ฉํ ๊ฒ
- w2vnormver.csv/w2vaggver.csv
- preprocess_d2v.ipynb : ํ ํฐํ๋ ๊ฐ์ํ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ doc2vec ๋ชจ๋ธ ์ ์ฉ
- d2v.normver.csv
- NN.ipynb : ๊ฐ๊ฐ์ ๋ฒกํฐํ ์ํจ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ Neural Network ์ฌ์ฉํ์ฌ ๊ฐ๊ฐ์ ๊ธฐ์ค์ ๋ํ ์์ธก๊ฐ ์์ธกํ๋ ๋ชจ๋ธ.
SentenceBERT.ipynb ํ์ผ์ ์๋์ ๋ด์ฉ์ ํฌํจํฉ๋๋ค.
- ๊ฐ์๊ณํ์ ๋ฐ์ดํฐ ๋ถ๋ฌ์ค๊ธฐ
- ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ ๋ฐ ํํ ๋ณํ
- ํ ํฐํ ๋ฐ Bag of Word
- CountVectorizer์ ์ด์ฉํ n-gram ์ถ์ถ
- SBERT๋ก ๋ฌธ์์ ๊ฐ์ฅ ์ ์ฌํ 5๊ฐ์ ํค์๋ ์ถ์ถ
- SBERT์ Max Sum Similarity๋ฅผ ์ ์ฉํ์ฌ ๊ฐ ํค์๋๋ค๊ฐ์ ์ ์ฌ๋๋ ๋ฎ์ง๋ง ๋ฌธ์์์ ์ ์ฌ๋๋ ๋์ 5๊ฐ์ ํค์๋ ์ถ์ถ
TF-IDF.ipynb ํ์ผ์ ์๋์ ๋ด์ฉ์ ํฌํจํฉ๋๋ค.
- ๊ฐ์๊ณํ์ ๋ฐ์ดํฐ ๋ถ๋ฌ์ค๊ธฐ
- ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ ๋ฐ ํํ ๋ณํ
- ํ ํฐํ ๋ฐ Bag of Word
- ๊ฐ ๊ฐ์๊ฐ์์ ํฌํจ๋์ด์๋ ๋จ์ด๋ค์ TF-IDF ๋ฐ์ดํฐํ๋ ์ ์์ฑ
- ํค์๋๋ฅผ ์ ๋ ฅํ๋ฉด ๊ฐ์๊ฐ์์ ํด๋น ํค์๋๋ฅผ ํฌํจํ๋ ๊ฐ์๋ค์ ์ถ์ถ
- ๋ฅ ๋ฌ๋์ ์ด์ฉํ ์์ฐ์ด์ฒ๋ฆฌ ์ ๋ฌธ : https://wikidocs.net/book/2155
- Convolutional layers : Deras Documentation : https://keras.io/ko/layers/convolutional/