ํ๋ฌธ ๊ณ ์ ์๋ฌธ-๋ฒ์ญ๋ฌธ ์ ๋ ฌ ํ์ดํ๋ผ์ธ
CSP๋ ํ๋ฌธ ๊ณ ์ ๋ฌธํ์ ๋ฌธ๋จโ๋ฌธ์ฅ์ผ๋ก ๋ถํ (P2S) ํ๊ณ ๋ฌธ์ฅโ๊ตฌ๋ก ๋ถํ ํ์ฌ 1:1 ์ ๋ ฌ(S2P) ํ๋ ์์ ์ ์๋ํํ๋ ์์คํ ์ ๋๋ค.
- P2S (Paragraph to Sentence): ๋ฌธ๋จ์ ๋ฌธ์ฅ์ผ๋ก ๋ถํ
- S2P (Sentence to Phrase): ๋ฌธ์ฅ์ ๊ตฌ๋ก ๋ถํ ํ๊ณ 1:1 ์ ๋ ฌ (๊ฒฝ๊ณ ๋ชจ๋ธ v3 ๊ธฐ๋ณธ ์ ์ฉ)
- ๋ฌด๊ฒฐ์ฑ ๋ณด์ฅ: ์๋ฌธ ๋ฌธ์ 100% ๋ณด์กด (๊ณต๋ฐฑ ์ธ ์์ค ์์)
- GPU ๊ฐ์: CUDA ๊ธฐ๋ฐ ๊ณ ์ ์ฒ๋ฆฌ
docker-compose up -d
docker-compose exec csp bashpython p2s/main.py <input.csv> <output.xlsx>python s2p/main.py <input.csv> <output.xlsx> [--batch-size 32]์๋ ์์ (๊ถ์ฅ):
# Windows (CMD) - ์ต์์ ๋๋ ํ ๋ฆฌ์์
start_md_server.bat
# Windows (PowerShell) - hyeonto ๋๋ ํ ๋ฆฌ์์
.\hyeonto\start_md_server.ps1
# ๋๋ ๋น ๋ฅธ ์ด๊ธฐ
open_dashboard.bat๋๋ ์๋ ์คํ:
cd hyeonto
python md_server.py --port 8080
# ๋ธ๋ผ์ฐ์ ์์ http://127.0.0.1:8080/dashboard.html ์ด๊ธฐ- K=3 ํด๋ฌ์คํฐ ๋ถ์: ํํ ๋ง์ปค & ์์ข ๋ถํฌ ๋ถ์
- ์๋ฒ ๋ฉ ์๊ฐํ: 2D/3D UMAP ์ค๋ฒ๋ ์ด (ํ๋ฐฑ ์ธํฌ๊ทธ๋ํฝ)
- Sankey ๋ค์ด์ด๊ทธ๋จ: P2S โ S2P ํ๋ฆ ๋ถ์ (ํ๋ฐฑ)
- ๊ฒ์ฆ ๋ถ์: ๊ณต๊ธฐ์ด & ์ด์์น ํ์ง
- ๋ผ๋ฒจ ๋ณํ: 1:1 vs 3:1 ๊ฐ์ค์น ๋น๊ต
- ๋งํฌ๋ค์ด ๋ทฐ์ด: ๋ชจ๋ ๋ถ์ ๋ฆฌํฌํธ ๋ ๋๋ง
- ๋ชจ๋ํฐ๋ง ๋์๋ณด๋: analytics/monitoring_dashboard.html
- ์ต์ ๋ถ์ ์์ฝ: hyeonto/KEY_FINDINGS.md
- ์๊ฐํ ํด์ ๊ฐ์ด๋: hyeonto/VISUALIZATION_GUIDE.md
์ ๋ ฅ:
| ๋ฌธ๋จ(์๋ฌธ) | ๋ฌธ๋จ(๋ฒ์ญ๋ฌธ) |
|---|---|
| ๅ ฌๅญ้ๆนไบๅ ไธๆญธ่ฆๆญป็ถ. ่กๆฟๅ ฌๅฅฝ้ถด ไธๆคๆญปๅ. ้ฝๆกๅ ฌๅพๅญไบๅ | ๊ณต์๊ฐ๋ฐฉ์ด ๊ตฐ์ฃผ๋ฅผ ์ฌ๊ธฐ๋ฉฐ ์ฃฝ์ ์๋ฒ์ง๋ฅผ ๋์๋ณด์ง ์์๋ค. ์์๊ณต์ ํ์ ์ข์ํ์ฌ ๋๋ผ๊ฐ ์ฃฝ๋ ๊ฒ์ ๋๋ณด์ง ์์๋ค. ์ ํ๊ณต์ ์๋๊ตญ์ ์ป์๋ค |
์ถ๋ ฅ:
| ๋ฌธ๋จID | ๋ฌธ์ฅID | ์๋ฌธ(๋ถํ ) | ๋ฒ์ญ๋ฌธ(๋ถํ ) |
|---|---|---|---|
| 1 | 1 | ๅ ฌๅญ้ๆนไบๅ ไธๆญธ่ฆๆญป็ถ | ๊ณต์๊ฐ๋ฐฉ์ด ๊ตฐ์ฃผ๋ฅผ ์ฌ๊ธฐ๋ฉฐ ์ฃฝ์ ์๋ฒ์ง๋ฅผ ๋์๋ณด์ง ์์๋ค |
| 1 | 2 | ่กๆฟๅ ฌๅฅฝ้ถด ไธๆคๆญปๅ | ์์๊ณต์ ํ์ ์ข์ํ์ฌ ๋๋ผ๊ฐ ์ฃฝ๋ ๊ฒ์ ๋๋ณด์ง ์์๋ค |
| 1 | 3 | ้ฝๆกๅ ฌๅพๅญไบๅ | ์ ํ๊ณต์ ์๋๊ตญ์ ์ป์๋ค |
์ ๋ ฅ:
| ์๋ฌธ(์ํ) | ๋ฒ์ญ๋ฌธ(์ํ) |
|---|---|
| ๅ ฌๅญ้ๆนไบๅ ไธๆญธ่ฆๆญป็ถ | ๊ณต์๊ฐ๋ฐฉ์ด ๊ตฐ์ฃผ๋ฅผ ์ฌ๊ธฐ๋ฉฐ ์ฃฝ์ ์๋ฒ์ง๋ฅผ ๋์๋ณด์ง ์์๋ค |
์ถ๋ ฅ (๊ตฌ๋ณ๋ ฌ):
| ๋ฌธ์ฅ์๋ณ์ | ๊ตฌ์๋ณ์ | ์๋ฌธ๊ตฌ | ๋ฒ์ญ๊ตฌ |
|---|---|---|---|
| 1 | 1 | ๅ ฌๅญ้ๆน | ๊ณต์๊ฐ๋ฐฉ์ด |
| 1 | 2 | ไบๅ | ๊ตฐ์ฃผ๋ฅผ ์ฌ๊ธฐ๋ฉฐ |
| 1 | 3 | ไธๆญธ่ฆๆญป็ถ | ์ฃฝ์ ์๋ฒ์ง๋ฅผ ๋์๋ณด์ง ์์๋ค |
CSP/
โโโ p2s/ # Paragraph to Sentence ๋ชจ๋
โโโ s2p/ # Sentence to Phrase ๋ชจ๋
โโโ common/ # ๊ณตํต ์ ํธ๋ฆฌํฐ (embedders, tokenizers ๋ฑ)
โโโ accuracy/ # ํ๊ฐ ์คํฌ๋ฆฝํธ
โโโ datasets/ # ์
๋ ฅ ๋ฐ์ดํฐ์
โ โโโ paragraph/ # ๋ฌธ๋จ ๋จ์ (P2S ์
๋ ฅ)
โ โโโ sentence/ # ๋ฌธ์ฅ ๋จ์ (P2S ์ ๋ต / S2P ์
๋ ฅ)
โ โโโ phrase/ # ๊ตฌ ๋จ์ (S2P ์ ๋ต)
โโโ models/ # ํ์ต๋ ๊ฒฝ๊ณ ๋ชจ๋ธ
โโโ test_results/ # ํ
์คํธ ๊ฒฐ๊ณผ๋ฌผ
| ์งํ | ๊ฐ |
|---|---|
| F1 | 0.8724 (87.24%) |
| ์๋ฌธ ์ ์ฌ๋ | 0.9174 (91.74%) (๋ฒ์ญ๋ฌธ ์ผ์น ๋ฌธ์ฅ ๊ธฐ์ค) |
| ์งํ | ๊ฐ |
|---|---|
| F1 | 0.8091 (80.91%) |
| ๋ฒ์ญ๋ฌธ ์ ์ฌ๋ | 0.8323 (83.23%) |
| ํ์ดํ๋ผ์ธ | ์ ์ญ ๋ฌด๊ฒฐ์ฑ | ์ค๋ช |
|---|---|---|
| P2S | PASS | ์๋ฌธ ํ ์คํธ 100% ๋ณด์กด (์ ๊ทํ ๊ธฐ์ค) |
| S2P | FAIL (-1 char) | 1๊ธ์(ๆฐ) ๋๋ฝ ํ์ธ๋จ. ๊ทธ ์ธ 99.999% ์ผ์น. |
- ํด๋๋ช
๋ณ๊ฒฝ:
pa/โp2s/,sa/โs2p/ - ๋ฐ์ดํฐ์
์ฌ๊ตฌ์ฑ:
datasets/paragraph,datasets/sentence,datasets/phrase
- ๊ธฐ๋ณธ๊ฐ ๋ณ๊ฒฝ:
--use-boundary-model์ ๊ธฐ๋ณธTrue๋ก ์ค์ (F1 0.8315 ์ฌํ์ฉ) - ์ธ์ ์ถ๊ฐ:
--batch-size์ธ์ ์ถ๊ฐ (๊ธฐ๋ณธ 32) - ๋ฌด๊ฒฐ์ฑ ์ฒดํฌ ๊ฐ์ : ๊ณต๋ฐฑ/๊ฐํ/ํญ ๋ฌด์ํ์ฌ ์คํ ํด๊ฒฐ
- P2S: F1 0.85, ๋ฒ์ญ๋ฌธ ์ผ์น์จ 100%
- S2P: ํ ์คํธ ์ค (๊ฒฝ๊ณ ๋ชจ๋ธ v3 ์ ์ ๋์)
- ์๋ฒ ๋: BGE-M3 FlagModel (GPU ๊ฐ์)
- ๊ฒฝ๊ณ ๋ชจ๋ธ: Cross-Attention ๊ธฐ๋ฐ Boundary Tagger v3
- ๊ตฌ๋ฌธ๋ถ์: SuPar-Kanbun (ํ๋ฌธ) + Stanza (ํ๊ตญ์ด)
- ํ ํฌ๋์ด์ : SikuBERT (ํ๋ฌธ) + Kiwipiepy (ํํ )
GPU/CUDA ์์กด์ฑ๊ณผ ์ฌํ์ฑ์ ์ํด Docker ์ฌ์ฉ์ ๊ถ์ฅํฉ๋๋ค.
# ์ปจํ
์ด๋ ๋น๋ ๋ฐ ์คํ
docker-compose up -d
docker-compose exec csp bash
# ํฌํผ ์คํฌ๋ฆฝํธ (Windows)
./docker.ps1 python scripts/example.py- Docker:
uv๋ฅผ ์ฌ์ฉํ ๊ณ ์ ํจํค์ง ์ค์น (pip ๋๋น 2-10๋ฐฐ ๋น ๋ฆ) - ๋ก์ปฌ:
.venv+requirements.txt(torch 2.9.1) - ๋ฒ์ ์ฐจ์ด: Docker๋
torch==2.6.0(๊ณต์ ์ด๋ฏธ์ง ๊ธฐ์ค), ๋ก์ปฌ์torch==2.9.1
# ๋ก์ปฌ ํ๊ฒฝ ์ทจ์ฝ์ ์ ๊ฒ
./scripts/safety_check.ps1
# Docker ํ๊ฒฝ ์ทจ์ฝ์ ์ ๊ฒ
./scripts/safety_check.ps1 -Docker
# ์๋ ์์ ์๋
./scripts/safety_check.ps1 -Fix์ต์ข ์ ๋ฐ์ดํธ: 2026๋ 02์ 04์ผ - ๋ชจ๋ํฐ๋ง ๋์๋ณด๋ ๋ฐ K=3 ๋ถ์ ๋ฌธ์ ์ ํฉํ