KoBERT๋ชจ๋ธ ๊ธฐ๋ฐ์ Text(์: ์ผ๊ธฐ)์ ์ด์ธ๋ฆฌ๋ ๋ ธ๋ ์ถ์ฒ ํ๋ก์ ํธ
- ์ฃผ์ : ์ผ๊ธฐ, ๋ค์ด์ด๋ฆฌ์ ๊ธ์ ์ ๋ ฅํ๋ฉด ๊ฐ์ ์ ๋ถ์ํด ์ด์ธ๋ฆฌ๋ ์์ ์ถ์ฒ
- ํ์: ๊น์ด์ (PM, Developer), ๊น๋๋ฆฐ(Front-End, Developer), ๋ฐ์ง์ฐ(Developer), ์ตํ๊ท(Developer)
- ํ๋ก์ ํธ ๊ธฐ๊ฐ : 11/13(๊ธ) ~ 11/28(ํ)
์ฌ์ฉ์๊ฐ ์์ ์ ์ผ๊ธฐ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅํ๋ฉด, ReUmi ๋ชจ๋ธ์ด ์์ ์ ์ถ์ฒ
์ฌ๋๋ค์ ๊ฐ์ฌ๋ฅผ ํตํด ๊ธฐ๋ถ ์ ํ์ ํ๋ฉฐ, ๋ ธ๋ ๊ฐ์ ์์ ๊ฐ์ฌ๋ฅผ ๊ณ ๋ คํ๋ค. ๋ํ SNS์์ ์์ ์ ๊ฐ์ ์ ๋ด์ ๊ธ๋ค์ ๊ณต์ ํ๋ค. ์ด๋ฌํ ์ผ์์ ๊ฐ์ ๋ค์ ์ด์ธ๋ฆฌ๋ ๋ ธ๋๋ฅผ ์ถ์ฒํ๋ ์๋น์ค๋ฅผ ๊ตฌํํ๊ณ ์ ReUmi๋ชจ๋ธ์ ๋ง๋ค๊ฒ ๋์๋ค. ๊ธฐ์กด์ ๋ ธ๋ ํ๋ซํผ ๋ฉ๋ก , ์ง๋ , ์ ํ๋ธ ๋ฑ ์์ ์ถ์ฒํ๋ ๋ ธ๋๋ค์ ์ฌ์ฉ์์ ์ ํธ ์๊ณ ๋ฆฌ์ฆ ์ ์ํ ์ถ์ฒ์ผ ๋ฟ , ์ฌ์ฉ์์ ํ์ฌ ๊ฐ์ ์ ์ด์ ์ ๋ง์ถ๋ ํํ๋ ์๋์๊ธฐ์ "๊ฐ์ "์ ์ฝ๋ ํ๋ก์ ํธ 'Read Your Mind'๋ฅผ ์ฃผ์ ๋ก ์ ํ์๋ค.
์ฌ์ฉ์์๊ฒ ์ถ์ฒํด์ฃผ๊ธฐ ์ํ ์ฅ๋ฅด๋ณ ์์ ์ Melon์์ Selenium์ ํ์ฉํด ํฌ๋กค๋งํ์๋ค.
- ์คํ ๋์ ๋ฌ 50๊ฐ, ์ธ๊ธฐ๊ณก 50๊ฐ๋ฅผ ์ฅ๋ฅด๋ณ๋ก ํฌ๋กค๋ง
- ๋ ธ๋์ ๋ชฉ, ๊ฐ์, ๊ฐ์ฌ,์ด๋ฏธ์ง, ์ข์์ ์ปฌ๋ผ์ผ๋ก ์ ๋ฆฌ
- ๊ฒฐ๊ณผ : Melon_song_data.csv
Melon_song_data๋ฅผ ์์ฑ๋ ReUmi Model์ ๋ฃ์ด ๊ฐ์ categroy๊ฒฐ๊ณผ๋ฅผ ์ปฌ๋ผ์ผ๋ก ์ ์ฅํ๋ค. ์ด๋ 1์ฐจ ํํฐ๋ง์์ ์ฌ์ฉ์์ ์ผ๊ธฐ์์ ๋๊ปด์ง๋ ๊ฐ์ ๊ณผ ๋์ผํ ๋ ธ๋๋ฆฌ์คํธ๋ฅผ ๋ฝ๋๋ฐ์ ์ฌ์ฉํ์๋ค.
KoBERT Model์ SKT-Brain์์ ๊ฐ๋ฐํ ํ๊ตญ์ด ๊ธฐ๋ฐ BERT ๋ชจ๋ธ.
KoBERT ๋ชจ๋ธ ํ์ต์ ์ํ AI HUB์ ํ๊ตญ์ด ๋ฐ์ดํฐ
- ๊ฐ์ฑ ๋ํ ๋ง๋ญ์น 58271 ๊ฐ
- ํ๊ตญ์ด ์ฐ์์ฑ ๋ํ ๋ฐ์ดํฐ ์ 55630 ๊ฐ
- ๊ฐ์ ๋ถ๋ฅ๋ฅผ ์ํ ์์ฑ ๋ฐ์ดํฐ ์ 43991 ๊ฐ
- ์ต์ข ๋ฐ์ดํฐ์ ์ด ๊ฐ์ 157,862๊ฐ
- ๊ฐ์ Label : ํ๋ณต, ์ฌํ , ๋ถ๋ ธ , ๊ณตํฌ , ํ์ค , ๋๋ + ์ค๋ฆฝ(7๊ฐ)
- ๋ชจ๋ธ์ ๋ฃ๊ธฐ ์ํด ์์ 3๊ฐ์ ํ์ผ์ ๊ฐ์ Label 7๊ฐ์ ๋ง์ถฐ ์ฌ๋ผ๋ฒจ๋ง์ ์งํํ์๋ค.
ReUmi Model์ ํ๊ตญ์ด ๋ํ ๋ฐ์ดํฐ์
์ฝ 15๋ง๊ฐ๋ฅผ KoBERT๋ชจ๋ธ์ ํ์ต์์ผ ์์ฑํ ์ต์ข
๋ชจ๋ธ
ํ๋ก์ ํธ๋ช
์ธ Read Your Mind๋ฅผ ๋ฐ ๋ง๋ค์๋ค.

- train acc : 0.9154 , val acc : 0.7957
- ์ ๋ ฅ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ๋ฒ์ ์ผ๋ก ๋ชจ๋ธ์ ํ ์คํธํด๋ณธ ๊ฒฐ๊ณผ, ์ ํ๋๋ 0.87(Validation ๊ธฐ์ค)๊น์ง ๋์์ผ๋ ๊ฐ์ฌ์ ๋ํ ๊ฐ์ ์ธ์ง๊ฐ ๊ฐ์ฅ ๋์๋ ๋ชจ๋ธ๋ก ์ ํํ์๋ค.
- Setting parameters
num_classes=7
max_len = 64
batch_size = 64
warmup_ratio = 0.1
num_epochs = 7
max_grad_norm = 1
log_interval = 200
learning_rate = 3e-5
< Crawling >
- melon_crawler.ipynb : ๋ฉ๋ก ํฌ๋กค๋ง์ ์ํ ์ฝ๋
< Modeling >
2. แแ
กแทแแ
ฅแผแแ
ฎแซแแ
ฅแจ_modeling_final.ipynb : ReUmi๋ชจ๋ธ ์์ฑ์ ์ฌ์ฉ๋ ์ฝ๋
< Fron-End >
3. MusicRecommend.py : ํ
์คํธ๋ฅผ ์
๋ ฅํ๋ฉด ReUmi๋ชจ๋ธ๊ณผ ์ฝ์ฌ์ธ์ ์ฌ๋์ ๊ธฐ๋ฐํด ๋
ธ๋๋ฅผ ์ถ์ฒํ๋ ์ฝ๋
- predict(predict_sentence): ReUmi๋ชจ๋ธ ์คํํ๋ ์ฝ๋
- ReUmi.pt
- model_state_dict.pt
- vectorize_text(text, vectorizer) :์ ๋ ฅํ ํ ์คํธ๋ฅผ ๋ฒกํฐํํ๋ ํจ์
- find_similar_songs(user_text, songs_data, top_n=3) :์ ๋ ฅํ ํ ์คํธ์ ๊ฐ์ ์ ์ธ์ํ๊ณ ๋ ธ๋๋ฅผ ์ถ์ฒํ๋ ํจ์
-
app.py : streamlit์ ๊ตฌํํ ํ๋ฉด์ ๊ตฌ์ฑํ ์ฝ๋
- style.css
- normalize.css
-
streamlit_Colab.ipynb : Colab์์ streamlit์ ์คํํด ํ๋ฉด์ ์์ฐํ๋ ์ฝ๋

