2022 ๊ตญ๋ฆฝ๊ตญ์ด์ ์ธ๊ณต ์ง๋ฅ ์ธ์ด ๋ฅ๋ ฅ ํ๊ฐ (์์ฑ ๊ธฐ๋ฐ ๊ฐ์ฑ ๋ถ์ : ABSA)
[์ธ๊ณต์ง๋ฅ ์ธ์ด ๋ฅ๋ ฅ ํ๊ฐ ๋์์ '๊ฐ์ฒ๋ํ๊ต 1์ธ 1๋ฉ๋ด' ํ] ๋ด์ค ๊ธฐ์ฌ(http://www.edujin.co.kr/news/articleView.html?idxno=40816)
Task ์ค๋ช : https://corpus.korean.go.kr/task/taskList.do?taskId=8&clCd=END_TASK&subMenuId=sub01
๊ฐ์ฑ ๋ถ์์ด๋ ํ์์ ์๊ฒฌ, ๊ธ/๋ถ์ ์ ํ๋๊ฐ ๋ํ๋๋ ๋ฌธ์ฅ์ ๊ฐ์ฑ ๊ทน์ฑ์ ๋ถ์ํ์ฌ ์ ๋ํํ๋ ๊ฒ์ด๋ค. ์ฃผ๋ก ๋ฌธ์ฅ ๋จ์๋ก ๊ธ์ , ๋ถ์ ์ ์ ๋ฌด ํน์ ์ ๋๋ฅผ ํ๊ฐํด ์์ผ๋ฉฐ, ์ ํ ๋ฐ ์ฌํ์ ๋ฆฌ๋ทฐ ๋ถ์, ์ถ์ฒ ์์คํ ์ ๋๋ฆฌ ํ์ฉ๋๊ณ ์๋ ์ถ์ธ์ด๋ค.
์ต๊ทผ ๊ฐ์ฑ ๋ถ์ ์ฐ๊ตฌ์๋ค์ ์ ํ ํ๊ธฐ ๋ฑ์ ์ ๋ฐ์ ์ผ๋ก ๋ํ๋๋ ํ๋์ ๊ฐ์ฑ ๊ทน์ฑ(๊ธ์ ๋๋ ๋ถ์ )์ ์ถ์ถํ๋ ๊ฒ์ ๋์ด ๋ ์ธ๋ถ์ ์ด๊ณ ๊ตฌ์ฒด์ ์ธ ์์ค์ ๊ฐ์ฑ ๊ด๋ จ ์ ๋ณด๋ฅผ ์ถ์ถํ๋ ๋ฐ ๊ด์ฌ์ ๊ฐ๊ธฐ ์์ํ๋ค. ์์ฑ ๊ธฐ๋ฐ ๊ฐ์ฑ ๋ถ์์ ์ธ์ด ์๋ฃ์ ๋ํ๋ ๊ฐ์ฒด์ ์์ฑ ์ ๋ณด๋ฅผ ๊ณ ๋ คํ ๊ฐ์ฑ ๋ถ์ ๋ฐฉ๋ฒ์ผ๋ก ์ผ๋ฐ์ ์ธ ๊ฐ์ฑ ๋ถ์์ ๋นํด ๋ ์ธ๋ฐํ ์ ๋ณด๋ฅผ ์ป์ ์ ์๋ค๋ ์ฅ์ ์ด ์๋ค. ์๋ฅผ ๋ค์ด, ์์์ ๋๋ฉ์ธ์ ๋ฆฌ๋ทฐ โ์ฝฉ๊ตญ์๊ฐ ์ธ์ ์ข๋คโ๋ผ๋ ๋ฌธ์ฅ์์ ์ผ๋ฐ์ ์ธ ๊ฐ์ฑ ๋ถ์์ ๊ฒฐ๊ณผ๋ โ๊ธ์ โ์ด ๋์ง๋ง, ์์ฑ ๊ธฐ๋ฐ ๊ฐ์ฑ ๋ถ์์์๋ ๊ฐ์ฒด:{์์(์ฝฉ๊ตญ์)}, ์์ฑ{๊ฐ๊ฒฉ}, ๊ฐ์ฑ:{๊ธ์ }์ผ๋ก ๋ ๋ง๊ณ ๊ตฌ์ฒด์ ์ธ ์ ๋ณด๋ฅผ ์ป์ ์ ์๋ค.
- train, dev data์ ์์ฑ๋ฒ์ฃผ ๋ฐ ๊ฐ์ฑ label ๋ถํฌ๋ (Data imbalance)
- ์ ์ ๋์ง ์์ Data (๋น๋ฌธ, ์ค์๋ง, ์คํ, ํ ์คํฐ์ฝ ๋ฑ)
๋ฆฌ๋ทฐ ๋ฐ์ดํฐ๋ ํฌํจ๋ data๋ก pretrain์ ์งํํ๊ธฐ ๋๋ฌธ์ ์คํ ๋ฐ ๋น๋ฌธ, ์ค์๋ง์ ์ ๋ฆฌํ์ง๋ง ์ด๋ชจ์ง, ๋ผํด์ด, ํน์๋ฌธ์ ๋ฑ์ ๋จ์ด์ฅ์ ํฌํจ๋์ด์์ง ์๋ kykim/electra-kor-base์ ํน์ง์ ๋ฐ๋ผ ์ ์ฒ๋ฆฌ ์งํ
- Data label์ ๋ฎ์ ์ ํ๋
- ์ฝ 5,800๊ฑด ๊ฐ๋์ train, dev ๋ฐ์ดํฐ์์ ๋ผ๋ฒจ ๋ถ๋ฅ๊ฐ ์ ๋งค๋ชจํธํ ๋ฌธ์ฅ ์ญ์ (์ฝ 15๋ฌธ์ฅ)
- ๊ฐ์ ์์ฑ ๋ฒ์ฃผ ๋ด ๋ค๋ฅธ ๊ฐ์ฑ๋ถ์ ์ฃผ์์ด ์๋ ๊ฒฝ์ฐ ์ด๋ฅผ ์ ๊ฑฐ ํน์ ์์
- Label Smoothing์ ํตํด ๋ถ์ ํํ ๋ฐ์ดํฐ์ ๋ํ ๋ณด์ ํจ๊ณผ๋ฅผ ์ฃผ๊ณ , ๋ชจ๋ธ์ over-confident๋ ์ค์
Aspect Category Detection (ACD) ๋ชจ๋ธ๊ณผ Aspect Sentiment Classification (ASC) ๋ชจ๋ธ์ ์ฐ๊ฒฐํ์๋ค. ํ์ต ๋ฐ์ดํฐ๊ฐ ์ถฉ๋ถํ์ง ์๊ธฐ ๋๋ฌธ์ transfer learning์ ์ด์ฉํด ๊ธฐ์กด์ pretrained model ๋ชจ๋ธ์ ๋ ์์ ์ธ classification head๋ฅผ ์ถ๊ฐํ ํ fine-tuningํ์ฌ ํ์ตํ์๋ค.
- ์ ์ฒ๋ฆฌ์ tokenizing์ ๊ฑฐ์น token๋ค์ โ[CLS] ๋ฌธ์ฅ [SEP] ์์ฑ๋ฒ์ฃผ [SEP]โ์ ํํ๋ก pretrained-model input์ผ๋ก ์ฌ์ฉํ๋ค.
- output layer๋ค์ ๋ด๋ถ Self-attention Layer 12๊ฐ [CLS] token๋ค์ attention pooling ํด 256์ฐจ์์ ๋ฒกํฐ๋ฅผ ๋ง๋ ๋ค.
- last hidden layer์ ์์ฑ๋ฒ์ฃผ ํ ํฐ ๋ถ๋ถ๋ง ์ถ์ถํด 768์ฐจ์์ ๋ฒกํฐ๋ฅผ ๋ง๋ ๋ค.
- ๊ฐ๊ฐ์ ๋ค๋ฅธ FC layer[dropout(0.1), activation function์ผ๋ก hyperbolic tangent, Linear]๋ฅผ ๊ฑฐ์น๋ค.
- 2๊ฐ์ ๋ฒกํฐ๋ฅผ concatํ์ฌ 1024์ฐจ์์ ์๋ก์ด ๋ฒกํฐ๋ฅผ ๋ง๋ ๋ค.
- ์ด๋ฅผ ๋ถ๋ฅ ๋ฒกํฐ๋ฅผ ์ฌ์ฉํ์ฌ 1024->2 linear๋ฅผ ์ ์ฉํ๋ค.
๊ฒฐ๊ณผ๊ฐ 0(False)์ผ์ ํด๋น ์์ฑ๋ฒ์ฃผ๋ ์ถ์ถ๋์ง ์๊ณ , 1(True)์ผ์ ์์ฑ๋ฒ์ฃผ๊ฐ ์ถ์ถ๋๋ค.
ASC ๋ํ ๊ฐ์ ๋ชจ๋ธ ๊ตฌ์กฐ๋ฅผ ์ง๋๊ณ ์์ผ๋ฉฐ, Class label์ด 0(positive), 1(negative), 2(neutral)๋ก ์ด๋ฃจ์ด์ ธ์์ด ๋ถ๋ฅ๋ฒกํฐ์์ 1024 -> 3 linear๋ฅผ ์ ์ฉํ๋ ๊ฒ๋ง ์ ์ธํ๋ฉด ์ ๋ถ ๋์ผํ๋ค.
์๋๋ ๋ณธ ๋ชจ๋ธ์ ๊ฒฐ๊ณผ์ด๋ค.
- git clone (https://github.com/1MENU/Korean_ABSA_model.git)
- Download the model (https://huggingface.co/juicyjung/Korean_ABSA_model_1MENU)
huggingface์์ ๊ฐ์ ธ์จ ํ์ผ์ ์์ถํด์ ํ์ฌ materials/saved_model ํด๋ ์๋์ ๋ฃ๊ธฐ CD ํด๋ ์์ ํ์ผ์ CD ํด๋ ์๋์, SC ํด๋ ์์ ํ์ผ์ SC ํด๋ ์๋์ ๋ฃ๋๋ค.
- ๋ชจ๋ธ์ ๋ฃ์ dataset๋ง๋ จ
- ์คํ์ dataset ํด๋ ์๋์๋ค๊ฐ inference ํ ๋ฐ์ดํฐ ๋ฃ๊ธฐ
- ์ด๋ ์ค์ ํ ํ์ผ์ ์ด๋ฆ์ run_together.sh ํ์ผ ๋ด, โtest_file๊ฐ์ ์คํํ๊ณ ์ํ๋ ํ์ผ์ ์ด๋ฆ๊ณผ ๊ฐ์์ผํ๋ค. (๊ธฐ๋ณธ๊ฐ์ โnikluge-sa-2022-test.jsonlโ ์ด๋ค)
- docker file๋ฅผ ์ด์ฉํ์ฌ ํ๊ฒฝ ๊ตฌ์ถํ๊ธฐ
docker build -t gcu-1menu:1.0 .
docker run โit โname team1 gcu-1menu:1.0
- run_together.sh ์คํํ๊ธฐ
bash run_together.sh
- ๊ฒฐ๊ณผ ํ์ผ์ material/submission ํด๋ ์๋ ์์ฑ๋๋ค. ํ์ฌ final.json์ด๋ผ๋ ์ด๋ฆ์ผ๋ก ๊ฒฐ๊ณผ๊ฐ์ด ๋์ค๊ฒ ๋์ด์๋ค
- ๋ค๋ง ์ฃผ์ํด์ผํ ์ ์ ๊ฒฐ๊ณผํ์ผ์ ๋์ปค ๋ด๋ถ ํ๊ฒฝ์๋ง ๋ฐ์์ด ๋์ด์์ผ๋ฏ๋ก ๋์ปค ์ปจํ ์ด๋ ํ๊ฒฝ์์ ๊ฒฐ๊ณผ ํ์ผ์ ๊ฐ์ ธ์ค๊ณ ์ถ์ ๊ฒฝ์ฐ์๋ ์๋์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๋ค.
docker cp <์ปจํ
์ด๋ ์ด๋ฆ>:<์ปจํ
์ด๋ ๋ด๋ถ ํ์ผ ๊ฒฝ๋ก> <๋ณต์ฌํ ํ์ผ ๊ฒฝ๋ก>
Jiwoo Jung | [email protected]
Doyeon Hyun | [email protected]
Seonghyun Kang | [email protected]
Heejin Jang | [email protected]
Hajeong Lee | [email protected]