๋‹ดํ™” ํ‘œ์ง€์–ด '์•„๋‹ˆ' ๋ฉ€ํ‹ฐ๋ชจ๋‹ฌ ๋ถ„๋ฅ˜๊ธฐ (ver2)

ํ•œ๊ตญ์–ด ๋‹ดํ™” ํ‘œ์ง€์–ด '์•„๋‹ˆ' ๊ฐ€ ๋ฐœํ™”์—์„œ ์–ด๋–ค ํ™”์šฉ ๊ธฐ๋Šฅ์œผ๋กœ ์“ฐ์˜€๋Š”์ง€ 7๊ฐ€์ง€๋กœ ๋ถ„๋ฅ˜ํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์žฅ(ํ…์ŠคํŠธ)๊ณผ ๋งํˆฌ(์Œ์„ฑ)๋ฅผ ํ•จ๊ป˜ ์ž…๋ ฅ๋ฐ›๋Š” ๋ฉ€ํ‹ฐ๋ชจ๋‹ฌ ๋ถ„๋ฅ˜๊ธฐ์ž…๋‹ˆ๋‹ค.

  • ํ…์ŠคํŠธ ์ธ์ฝ”๋”: klue/roberta-large ยท beomi/KcELECTRA-base-v2022
  • ์Œ์„ฑ ์ธ์ฝ”๋”: microsoft/wavlm-base-plus
  • ๋ฐ๋ชจ: ๐Ÿ‘‰ [Space ๋งํฌ๋ฅผ ์—ฌ๊ธฐ์— ๋„ฃ์œผ์„ธ์š”]

๋ถ„๋ฅ˜ ์ฒด๊ณ„

id ๋ถ„๋ฅ˜ ๋œป ์˜ˆ
0 ๊ฐ•์กฐ/๊ฐ•ํ•œ ๊ธ์ • ์ž๊ธฐ ๋ง์„ ํž˜์ฃผ์–ด ์„ธ์›€ ์•„๋‹ˆ ์ข‹์€ ์ ๋„ ๋งŽ์ง€.
1 ๋†€๋žŒ/๊ฐํƒ„ ์˜ˆ์ƒ ๋ฐ–์ด๋ผ ๋†€๋žŒ ์•„๋‹ˆ ์ด๊ฒŒ ์™œ 9์ ๋Œ€ ์ผ๊นŒ...;;;
2 ๋ฐฉ์–ด/ํ•ฉ๋ฆฌํ™” ์ƒ๋Œ€ ๋น„๋‚œ์„ ๋ฐ›์•„ ๋„˜๊ธฐ๋ฉฐ ๋ณ€ํ˜ธ ์•„๋‹ˆ ์ž๊ธฐ๋“ค๋„ ๊ณ ์ถฉ์ด ์žˆ์„ํ…๋ฐ ๊ทธ๋Ÿด์ˆ˜๋„ ์žˆ์ง€
3 ๋ถ€์—ฐ/์ƒ์„ธํ™” ์•ž๋ง์— ์„ค๋ช…์„ ๋ง๋ถ™์ž„ ์•„๋‹ˆ ์ € ์˜ค๋Š˜ ํ•™๊ต ๋‚ด๋ ค๊ฐ€๋‹ค๊ฐ€ ๋ถ•์–ด๋นต ๋ณด์ด๊ธธ๋ž˜
4 ๋ถ€์ •/๋ฐ˜๋ฐ• ์ƒ๋Œ€ ๋ง์ด๋‚˜ ์ƒํ™ฉ์„ ๋ถ€์ • ์•„๋‹ˆ ์™œ ์•„๋“คํ•œํ…Œ ๋‚œ๋ฆฌ?
5 ์ฆ‰๊ฐ ์ˆ˜์ • ๋ฐฉ๊ธˆ ํ•œ ๋ง์„ ๊ณง๋ฐ”๋กœ ๊ณ ์นจ ํ–‰๋ณต... ์•„๋‹ˆ ์˜ค๋ž˜ ์‚ฌ์„ธ์š”
6 ํ™”์ œ ์‹œ์ž‘/์ „ํ™˜ ์ƒˆ ์ด์•ผ๊ธฐ๋ฅผ ๊บผ๋‚ด๊ฑฐ๋‚˜ ๋Œ๋ฆผ ์•„๋‹ˆ ๊ทผ๋ฐ ๊ธด ์ƒ๋จธ๋ฆฌ์— ๋ชธ๋งค์ข‹์œผ๋ฉด ๋™์•ˆ ์ธ๊ฑด๊ฐ€์š”??

์„ฑ๋Šฅ

5-fold ๊ต์ฐจ๊ฒ€์ฆ์œผ๋กœ 10๊ฐœ ๋ชจ๋ธ(5 fold ร— 2 ํ…์ŠคํŠธ ๋ฐฑ๋ณธ)์„ ํ•™์Šตํ•˜๊ณ , ํ™•๋ฅ  ํ‰๊ท ์œผ๋กœ ์•™์ƒ๋ธ”ํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ‰๊ฐ€ ํ‘œ๋ณธ ์ •ํ™•๋„ macro-F1 weighted-F1
๊ต์ฐจ๊ฒ€์ฆ (out-of-fold) 1,846 0.6018 0.5507 0.5956
ํ…Œ์ŠคํŠธ (์•™์ƒ๋ธ”) 206 0.5825 0.5303 0.5780
ํ…Œ์ŠคํŠธ (๋‹จ์ผ ์ตœ๊ณ  ๋ชจ๋ธ) 206 โ€” 0.5233 โ€”

๊ต์ฐจ๊ฒ€์ฆ ์ˆ˜์น˜๊ฐ€ ํ‘œ๋ณธ์ด 9๋ฐฐ ๋งŽ์•„ ๋” ์•ˆ์ •์ ์ž…๋‹ˆ๋‹ค. ๋ฌด์ž‘์œ„ ์ถ”์ธก์˜ macro-F1 ์€ ์•ฝ 0.14 ์ž…๋‹ˆ๋‹ค.

ํด๋ž˜์Šค๋ณ„ (ํ…Œ์ŠคํŠธ 206๊ฑด, ์•™์ƒ๋ธ”)

๋ถ„๋ฅ˜ precision recall F1 ํ‘œ๋ณธ
๊ฐ•์กฐ/๊ฐ•ํ•œ ๊ธ์ • 0.417 0.455 0.435 11
๋†€๋žŒ/๊ฐํƒ„ 0.537 0.550 0.543 40
๋ฐฉ์–ด/ํ•ฉ๋ฆฌํ™” 0.588 0.435 0.500 23
๋ถ€์—ฐ/์ƒ์„ธํ™” 0.333 0.182 0.235 11
๋ถ€์ •/๋ฐ˜๋ฐ• 0.556 0.682 0.612 66
์ฆ‰๊ฐ ์ˆ˜์ • 0.739 0.680 0.708 25
ํ™”์ œ ์‹œ์ž‘/์ „ํ™˜ 0.731 0.633 0.679 30

๋ชจ๋‹ฌ๋ฆฌํ‹ฐ ๊ธฐ์—ฌ๋„ (ํ…Œ์ŠคํŠธ)

๊ฐ™์€ ๋ชจ๋ธ์—์„œ ํ•œ์ชฝ ๋ฒกํ„ฐ๋ฅผ 0์œผ๋กœ ๋งŒ๋“ค์–ด ์ธก์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ž…๋ ฅ ์ •ํ™•๋„ macro-F1
ํ…์ŠคํŠธ + ์Œ์„ฑ 0.5825 0.5303
ํ…์ŠคํŠธ๋งŒ 0.5194 0.4874
์Œ์„ฑ๋งŒ 0.5000 0.3649

์Œ์„ฑ๋งŒ์œผ๋กœ๋„ ๋ฌด์ž‘์œ„(0.14)๋ฅผ ํฌ๊ฒŒ ์›ƒ๋Œ๊ณ , ํ…์ŠคํŠธ์— ์Œ์„ฑ์„ ๋”ํ•˜๋ฉด macro-F1 ์ด 4.3์  ์˜ค๋ฆ…๋‹ˆ๋‹ค.

ํ…์ŠคํŠธ ๋ฐฑ๋ณธ ๋น„๊ต

๋ฐฑ๋ณธ ๊ต์ฐจ๊ฒ€์ฆ macro-F1 ํ…Œ์ŠคํŠธ macro-F1
klue/roberta-large (5 fold) 0.5485 0.5317
beomi/KcELECTRA-base-v2022 (5 fold) 0.5337 0.5023
๋‘˜์„ ํ•ฉ์นœ 10๋ชจ๋ธ ์•™์ƒ๋ธ” 0.5507 0.5303

์ €์žฅ์†Œ ํŒŒ์ผ

ํŒŒ์ผ ๋‚ด์šฉ
best_model.pt ๋‹จ์ผ ์ตœ๊ณ  ๋ชจ๋ธ (fold5, klue/roberta-large ๊ธฐ๋ฐ˜, fp16, ์•ฝ 864MB)
config.py model.py data.py audio_utils.py inference.py ์ถ”๋ก ์— ํ•„์š”ํ•œ ์ฝ”๋“œ ์ „๋ถ€
use_model.py ๋‚ด๋ ค๋ฐ›์•„ ๋ฐ”๋กœ ๋Œ๋ ค ๋ณด๋Š” ์˜ˆ์ œ
model_config.json label_map.json ๊ตฌ์กฐยทํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ ์š”์•ฝ, ๋ผ๋ฒจ ๋งคํ•‘
metrics.json summary.md classification_report.txt confusion_matrix.png ์ „์ฒด ํ‰๊ฐ€ ๊ฒฐ๊ณผ
predictions.csv ํ…Œ์ŠคํŠธ 206๊ฑด์˜ ์ƒ˜ํ”Œ๋ณ„ ์ •๋‹ตยท์˜ˆ์ธกยทํ™•๋ฅ 

์•™์ƒ๋ธ” ์ „์ฒด(10๊ฐœ ์ฒดํฌํฌ์ธํŠธ, 6.2GB)๋ฅผ ์˜ฌ๋ ธ๋‹ค๋ฉด fold*_*.pt ํŒŒ์ผ๋„ ํ•จ๊ป˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ๋ฒ•

pip install torch transformers librosa soundfile huggingface_hub
from huggingface_hub import hf_hub_download, snapshot_download

REPO = "<์‚ฌ์šฉ์ž๋ช…>/<๋ชจ๋ธ์ €์žฅ์†Œ์ด๋ฆ„>"

# ์ฝ”๋“œ + ์ฒดํฌํฌ์ธํŠธ ๋‚ด๋ ค๋ฐ›๊ธฐ
snapshot_download(repo_id=REPO, local_dir="ani_model",
                  allow_patterns=["*.py", "*.json", "best_model.pt"])

import sys; sys.path.insert(0, "ani_model")
from inference import Predictor

p = Predictor("ani_model/best_model.pt")

# ํ…์ŠคํŠธ + ์Œ์„ฑ
res = p.predict(text="์•„๋‹ˆ ์ด๊ฒŒ ์™œ 9์ ๋Œ€ ์ผ๊นŒ...;;;", audio="sample.wav")
print(res["label"], round(res["confidence"], 3))

# ์Œ์„ฑ ์—†์ด ํ…์ŠคํŠธ๋งŒ (์Œ์„ฑ ๋ฒกํ„ฐ๋ฅผ 0์œผ๋กœ)
import numpy as np
res = p.predict(text="ํ–‰๋ณต... ์•„๋‹ˆ ์˜ค๋ž˜ ์‚ฌ์„ธ์š”", audio=np.zeros(16000, dtype="float32"), drop_audio=True)
print(res["label"], res["probs"])

์•™์ƒ๋ธ”๋กœ ์“ฐ๋ ค๋ฉด ์ฒดํฌํฌ์ธํŠธ ๊ฒฝ๋กœ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋„˜๊น๋‹ˆ๋‹ค. ๋ชจ๋ธ 1๊ฐœ๋‹น ๋žจ ์•ฝ 1.8GB(roberta) / 0.9GB(KcELECTRA)๊ฐ€ ๋“ญ๋‹ˆ๋‹ค.

p = Predictor(["ani_model/fold1_roberta.pt", "ani_model/fold2_roberta.pt"])

์ž…๋ ฅ ํ˜•์‹

  • text: '์•„๋‹ˆ'๊ฐ€ ํฌํ•จ๋œ ํ•œ๊ตญ์–ด ๋ฌธ์žฅ. ์ตœ๋Œ€ 192 ํ† ํฐ.
  • audio: wav/mp3/m4a ๋“ฑ ์–ด๋–ค ํฌ๋งทยท์ƒ˜ํ”Œ๋ ˆ์ดํŠธ๋“  ๋ฉ๋‹ˆ๋‹ค(๋‚ด๋ถ€์—์„œ 16kHz ๋ชจ๋…ธ๋กœ ๋ณ€ํ™˜). ๋˜๋Š” 16kHz float32 numpy ๋ฐฐ์—ด. 10์ดˆ๋ณด๋‹ค ๊ธธ๋ฉด ํ…์ŠคํŠธ์ƒ '์•„๋‹ˆ' ์œ„์น˜๋ฅผ ์ถ”์ •ํ•ด ๊ทธ ์ฃผ๋ณ€ 10์ดˆ๋งŒ ์”๋‹ˆ๋‹ค.

๋ชจ๋ธ ๊ตฌ์กฐ

ํ…์ŠคํŠธ โ”€โ–บ RoBERTa/ELECTRA โ”€โ–บ [CLS] โŠ• '์•„๋‹ˆ' ํ† ํฐ ํ‰๊ท  โ”€โ–บ Linear+LayerNorm 512 โ”€โ”
                                                                            โ”œโ”€ concat โ”€โ–บ Dropout โ”€โ–บ Linear 512 โ”€โ–บ GELU โ”€โ–บ Dropout โ”€โ–บ Linear 7
์Œ์„ฑ  โ”€โ–บ WavLM โ”€โ–บ 13๊ฐœ ์ธต ๊ฐ€์ค‘ํ•ฉ โ”€โ–บ attention pooling โ”€โ–บ Linear+LayerNorm 512 โ”€โ”˜

๋ฌธ์žฅ ์ „์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ '์•„๋‹ˆ' ํ† ํฐ ์œ„์น˜์˜ ํ‘œํ˜„์„ ๋”ฐ๋กœ ๋ฝ‘์•„ [CLS]์— ์ด์–ด ๋ถ™์ด๋Š” ๊ฒƒ์ด ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค. ์Œ์„ฑ ์ชฝ์€ ๋งˆ์ง€๋ง‰ ์ธต๋งŒ ์“ฐ์ง€ ์•Š๊ณ  13๊ฐœ ์ธต์„ ํ•™์Šต ๊ฐ€์ค‘์น˜๋กœ ํ•ฉ์นœ ๋’ค, ํ”„๋ ˆ์ž„๋ณ„ attention ์œผ๋กœ ํ’€๋งํ•ฉ๋‹ˆ๋‹ค.

ํ•™์Šต ๋ฐฉ๋ฒ•

ํ•ญ๋ชฉ ๊ฐ’
๋ถ„ํ•  ์ธตํ™” 5-fold ๊ต์ฐจ๊ฒ€์ฆ (1,846) + ๊ณ ์ • ํ…Œ์ŠคํŠธ์…‹ (206)
์ตœ์ ํ™” AdamW, cosine + warmup 10%, ์ธต๋ณ„ ํ•™์Šต๋ฅ  ๊ฐ์‡  0.9
ํ•™์Šต๋ฅ  ํ…์ŠคํŠธ 2e-5 / ์Œ์„ฑ 5e-5 / ํ—ค๋“œ 5e-4 (์ธ์ฝ”๋”๋Š” ๋งจ ์œ„์ธต ๊ธฐ์ค€)
์œ ํšจ ๋ฐฐ์น˜ 16 (2 ร— ๋ˆ„์  8), bf16 ํ˜ผํ•ฉ์ •๋ฐ€๋„
์ •๊ทœํ™” R-Drop ฮฑ=1, manifold mixup ฮฑ=0.2, modality dropout 0.15, label smoothing 0.05, weight decay 0.05
๊ธฐํƒ€ ๊ฐ€์ค‘์น˜ EMA 0.99, ํด๋ž˜์Šค ๊ฐ€์ค‘(sqrt), macro-F1 ๊ธฐ์ค€ best ์„ ํƒ, patience 6
์˜ค๋””์˜ค 16kHz ๋ชจ๋…ธ, '์•„๋‹ˆ' ์ถ”์ • ์œ„์น˜ ์ค‘์‹ฌ 10์ดˆ ์ฐฝ, ๊ฒŒ์ธยท๋…ธ์ด์ฆˆยท์ฐฝ ์œ„์น˜ ์ฆ๊ฐ•
์‹œ๊ฐ„ RTX 5060 Ti 16GB ์—์„œ 10๊ฐœ ๋ชจ๋ธ ์•ฝ 4.9์‹œ๊ฐ„

๋ฐ์ดํ„ฐ

  • ํ•œ๊ตญ์–ด ๋Œ“๊ธ€ยท๋ฐœํ™” 2,052๊ฑด. ๊ตญ์–ด ์–ธ์–ดํ•™ ์ „๊ณต ์—ฐ๊ตฌ์ž๊ฐ€ '์•„๋‹ˆ'์˜ ํ™”์šฉ ๊ธฐ๋Šฅ์„ ์ง์ ‘ ๋ถ„๋ฅ˜ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฐ ๋ฌธ์žฅ์„ ํ•œ ๋ช…์˜ ํ™”์ž๊ฐ€ ๋‚ญ๋…ํ•ด ๋…น์Œํ–ˆ์Šต๋‹ˆ๋‹ค(ํ‰๊ท  10.5์ดˆ).
  • ํด๋ž˜์Šค ๋ถ„ํฌ๊ฐ€ ๋ถˆ๊ท ํ˜•ํ•ฉ๋‹ˆ๋‹ค: ๋ถ€์ •/๋ฐ˜๋ฐ• 655, ๋†€๋žŒ/๊ฐํƒ„ 392, ํ™”์ œ ์‹œ์ž‘/์ „ํ™˜ 298, ์ฆ‰๊ฐ ์ˆ˜์ • 245, ๋ฐฉ์–ด/ํ•ฉ๋ฆฌํ™” 236, ๋ถ€์—ฐ/์ƒ์„ธํ™” 117, ๊ฐ•์กฐ/๊ฐ•ํ•œ ๊ธ์ • 109.
  • ์Œ์„ฑ ์›๋ณธ๊ณผ ํ…์ŠคํŠธ ์›๋ณธ์€ ์ด ์ €์žฅ์†Œ์— ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ชจ๋ธ ๊ฐ€์ค‘์น˜๋งŒ ๊ณต๊ฐœํ•ฉ๋‹ˆ๋‹ค.

ํ•œ๊ณ„

  • ํ™”์ž ์ผ๋ฐ˜ํ™” ๋ฏธ๊ฒ€์ฆ: ์Œ์„ฑ์ด ํ•œ ์‚ฌ๋žŒ์˜ ๋‚ญ๋…์ด๋ผ ๋‹ค๋ฅธ ๋ชฉ์†Œ๋ฆฌยท์‹ค์ œ ๋Œ€ํ™”์—์„œ๋Š” ์„ฑ๋Šฅ์ด ๋–จ์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฐ์ดํ„ฐ๋กœ๋Š” ์ธก์ • ์ž์ฒด๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • ๋‚ญ๋…์ฒด: ์ž์—ฐ ๋ฐœํ™”๊ฐ€ ์•„๋‹ˆ๋ผ ํ…์ŠคํŠธ๋ฅผ ๋ณด๊ณ  ์ฝ์€ ์Œ์„ฑ์ด๋ฏ€๋กœ, ์‹ค์ œ ๋Œ€ํ™”์˜ ์šด์œจ๊ณผ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์†Œ์ˆ˜ ํด๋ž˜์Šค ์•ฝ์„ธ: ๋ถ€์—ฐ/์ƒ์„ธํ™”(F1 0.235), ๊ฐ•์กฐ/๊ฐ•ํ•œ ๊ธ์ •(0.435)์€ ํ•™์Šต ํ‘œ๋ณธ์ด ๊ฐ๊ฐ 117๊ฑด, 109๊ฑด์œผ๋กœ ์ ์Šต๋‹ˆ๋‹ค.
  • ์ธ์ ‘ ๊ธฐ๋Šฅ ํ˜ผ๋™: ๋†€๋žŒ/๊ฐํƒ„ โ†” ๋ถ€์ •/๋ฐ˜๋ฐ• ์‚ฌ์ด ํ˜ผ๋™์ด ๊ฐ€์žฅ ๋งŽ์Šต๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋„ ํŒ๋‹จ์ด ๊ฐˆ๋ฆฌ๋Š” ๊ฒฝ๊ณ„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์› ๋ฐ์ดํ„ฐ๊ฐ€ ์˜จ๋ผ์ธ ๋Œ“๊ธ€์ด๋ผ ๊ณต๊ฒฉ์ ยท๋น„์†ํ•œ ํ‘œํ˜„์ด ํฌํ•จ๋˜์–ด ์žˆ๊ณ , ๋ชจ๋ธ์€ ๊ทธ ๋ถ„ํฌ๋ฅผ ํ•™์Šตํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์—ฐ๊ตฌ์šฉ ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค. ์ƒ์—…์  ์ด์šฉ์ด๋‚˜ ์‚ฌ๋žŒ์— ๋Œ€ํ•œ ํŒ๋‹จ ๊ทผ๊ฑฐ๋กœ ์“ฐ์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

์ธ์šฉ

@misc{ani_discourse_marker_2026,
  title  = {๋‹ดํ™” ํ‘œ์ง€์–ด '์•„๋‹ˆ' ๋ฉ€ํ‹ฐ๋ชจ๋‹ฌ ๋ถ„๋ฅ˜๊ธฐ},
  author = {<์ €์ž ์ด๋ฆ„>},
  year   = {2026},
  howpublished = {\url{https://huggingface.co/<์‚ฌ์šฉ์ž๋ช…>/<๋ชจ๋ธ์ €์žฅ์†Œ์ด๋ฆ„>}}
}
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support