/Korean_ABSA

[ πŸ…κΈˆμƒ (ꡭ립ꡭ어원μž₯상) μ†”λ£¨μ…˜ ] 2022 ꡭ립ꡭ어원 인곡 지λŠ₯ μ–Έμ–΄ λŠ₯λ ₯ 평가 Team GCU_텀프지μ˜₯μž…λ‹ˆλ‹€

Primary LanguageJupyter Notebook

λŒ€νšŒ κ°œμš”

2022 ꡭ립ꡭ어원 인곡 지λŠ₯ μ–Έμ–΄ λŠ₯λ ₯ 평가 Team GCU_텀프지μ˜₯μž…λ‹ˆλ‹€

μ‚¬μš©λ˜λŠ” Dataset은 ꡭ립ꡭ어원이 μ‡Όν•‘ 리뷰λ₯Ό 기반으둜 κ΅¬μΆ•ν•œ '속성 기반 감성 뢄석' λ§λ­‰μΉ˜μž…λ‹ˆλ‹€. 이 λŒ€νšŒλŠ” 속성 기반 감성 뢄석(ABSA)을 μˆ˜ν–‰ν•˜λŠ” λͺ¨λΈμ„ κ΅¬ν˜„ν•˜λŠ” κ³Όμ œμž…λ‹ˆλ‹€.

  1. 속성 λ²”μ£Ό (예: 제좀 전체#인지도)
  2. 감성 (긍정/λΆ€μ •/쀑립)

μ°Έκ°€νŒ€μ€ μž…λ ₯된 λ¬Έμž₯에 λŒ€ν•΄ μœ„μ˜ 속성 범주와 감성을 μΆ”μΆœν•˜κ³ , μ •λ‹΅ νŠœν”Œκ³Ό 예츑된 νŠœν”Œμ„ λΉ„κ΅ν•˜μ—¬ κ³„μ‚°λœ F1 점수λ₯Ό 톡해 인곡지λŠ₯ λͺ¨λΈμ˜ μ„±λŠ₯을 ν‰κ°€ν•©λ‹ˆλ‹€.

μ΅œμ’… Inference 방법

1. docker κ°€μƒν™˜κ²½ 생성

docker build -t gcu_tphell:1.0 .

docker run --ipc host --gpus all -it --name hell gcu_tphell:1.0

μœ„ λͺ…λ Ήμ–΄λ₯Ό 터미널에 μž…λ ₯ν•˜μ—¬ docker 생성 및 ν™œμ„±ν™”ν•œλ‹€.

2. ν‰κ°€μš© 데이터 μ‚½μž…

dataset/task_ABSA/ ν΄λ”μ•ˆμ— nikluge-sa-2022-test.jsonl 파일의 ν˜•νƒœλ‘œ μ‚½μž…

3. λͺ¨λΈ λ‹€μš΄λ‘œλ“œ

λͺ¨λΈ λ‹€μš΄λ‘œλ“œ ν›„ μ••μΆ• ν•΄μ œν•˜μ—¬ saved_model 폴더λ₯Ό All.sh 와 같은 디렉토리에 μœ„μΉ˜μ‹œν‚¨λ‹€. https://drive.google.com/file/d/1s8qriUESwZzu4F9a0n_pMQ4D3xyQoh6r/view?usp=share_link

4. Inference μ½”λ“œ μ‹€ν–‰

bash All.sh μ‰˜ 슀크립트 μ‹€ν–‰μ‹œ

requirements.txt λ‚΄μ˜ νŒ¨ν‚€μ§€ μ„€μΉ˜ ν›„ inference 및 앙상블 μˆ˜ν–‰

5. 평가가 μ™„λ£Œλ˜λ©΄ final.jsonl ν˜•νƒœλ‘œ μ΅œμ’… μ €μž₯λœλ‹€.

데이터 뢄석 및 μΆ”κ°€,증강

image

ν•™μŠ΅ 데이터셋 polarity: positive 94.7%, neutral 3.3%, negative 2.0%

image

평가 데이터셋 polarity: positive 97.3%, neutral 1.8%, negative 0.9%

μΆ”κ°€ 데이터

넀이버 μ‡Όν•‘ ν›„κΈ° crawling data:
λŒ€νšŒ 제곡 데이터셋과 λΉ„μŠ·ν•œ μΉ΄ν…Œκ³ λ¦¬μ˜ μƒν’ˆ ν›„κΈ°λ₯Ό 넀이버 μ‡Όν•‘μ—μ„œ 직접 크둀링. λŒ€νšŒ 제곡 λ°μ΄ν„°μ˜ 라벨링 기쀀을 λΆ„μ„ν•˜μ—¬ μ΅œλŒ€ν•œ λΉ„μŠ·ν•œ κ²½ν–₯성을 가지고 라벨링을 진행 ν›„ 데이터셋에 μΆ”κ°€

Gold data 120개:
ꡭ립 ꡭ어원 21λ…„ 속성 기반 감성 뢄석 λ§λ­‰μΉ˜μ—μ„œ λŒ€νšŒ μ œκ³΅λ°μ΄ν„°μ— λ―Έν¬ν•¨λœ 데이터 μ•½ 120개
(이듀 120개 쀑 μΌλΆ€λŠ” μ—°μ˜ˆμΈ 이름이 &name&으둜 μΉ˜ν™˜λœ ν˜•νƒœλ‘œ, train ν˜Ήμ€ dev 데이터셋에 μ€‘λ³΅λ˜μ–΄μžˆλ˜ 걸둜 확인됨,
ν•˜μ§€λ§Œ test λ°μ΄ν„°μ…‹μ—λŠ” 단 ν•œκ°œλ„ ν¬ν•¨λ˜μ§€ μ•ŠμŒ)

λͺ¨λΈ 1) kykim/Electra

kykim/electra-kor-base: https://github.com/kiyoungkim1/LMkor

  • κ΅­λ‚΄ μ£Όμš” 컀머슀 리뷰 1μ–΅κ°œ + λΈ”λ‘œκ·Έ ν˜• μ›Ήμ‚¬μ΄νŠΈ 2000만개 (75GB)
  • λͺ¨λ‘μ˜ λ§λ­‰μΉ˜ (18GB)
  • μœ„ν‚€ν”Όλ””μ•„μ™€ λ‚˜λ¬΄μœ„ν‚€ (6GB)

input 데이터 ν˜•μ‹

[β€œλ¬Έμž₯μ—μ„œ 속성을 μ°ΎμœΌμ‹œμ˜€:” + sentence_form ]

λŒ€μ‘λ˜λŠ” μ •λ‹΅ label

속성#κ°œμ²΄μ—μ„œ β€œ#”을 β€œ β€λ‘œ λ°”κΎΈκ³  [+ μ •λ‹΅1 + μ •λ‹΅2 ]

image

λͺ¨λΈ 2) paust/pko-t5-large

paust/pko-t5-large: https://huggingface.co/paust/pko-t5-base
ν•œκ΅­μ–΄ 데이터 (λ‚˜λ¬΄μœ„ν‚€, μœ„ν‚€ν”Όλ””μ•„, λͺ¨λ‘μ˜ λ§λ­‰μΉ˜)λ₯Ό T5의 span corruption taskλ₯Ό μ‚¬μš©ν•΄μ„œ unsupervised learningν•œ μ‚¬μ „ν•™μŠ΅ λͺ¨λΈ

image

input 데이터 ν˜•μ‹

[β€œλ¬Έμž₯μ—μ„œ 속성을 μ°ΎμœΌμ‹œμ˜€:” + sentence_form + β€œμ΄ λ¬Έμž₯의 속성은 <extra_id_0> <extra_id_1> <extra_id_2> <extra_id_3><extra_id_4>이닀”]

λŒ€μ‘λ˜λŠ” μ •λ‹΅ label

토큰을 총 5κ°€μ§€λ‘œ ν•œ μ΄μœ λŠ” ν•œ λ¬Έμž₯μ—μ„œ μ΅œλŒ€λ‘œ 생성할 수 μžˆλŠ” μ •λ‹΅ 라벨을 5개둜 μ„€μ •ν•˜μ—¬ μΆ”κ°€ν•˜μ˜€λ‹€. 이에 따라 T5λͺ¨λΈμ—μ„œ 정닡이 2가지 일 경우 μ•„λž˜ μ˜ˆμ‹œμ™€ 같이 μž…λ ₯ν•˜μ˜€λ‹€.

[+<extra_id_0>+μ •λ‹΅1+<extra_id_1>+μ •λ‹΅2+<extra_id_2>+<extra_id_3>+<extra_id_4>]

<extra_>

image

λͺ¨λΈ Ensemble

Voting 톡해 ACD (entity λΆ„λ₯˜) ν›„, μ΅œμ’…μ μœΌλ‘œ ensemble된 ACD에 ASCλ₯Ό inferenceν•˜μ—¬ μ΅œμ’…λ³ΈμœΌλ‘œ 제좜
(λ³Έ νŒ€μ€ 이번 λŒ€νšŒμ˜ taskλŠ” κ²°κ΅­ entity classficiationdμ—μ„œ 당락이 결정될 κ²ƒμœΌλ‘œ νŒλ‹¨ν–ˆλ‹€)

image

λŒ€μ‘ν•˜λŠ” 정닡라벨은 속성#κ°œμ²΄μ—μ„œ β€œ#”을 β€œ β€λ‘œ λ°”κΎΈκ³  [+ μ •λ‹΅1 + μ •λ‹΅2 ] ν˜•μ‹μœΌλ‘œ λ„£μ—ˆλ‹€.