revise-ai 카테고리
revise-ai 카테고리 — 비표준어/오타/띄어쓰기 분류
revise-ai는 바른의 LLM 기반 교정과 혼동어 교정을 담당하는 구성요소입니다.
LLM이 어절을 고친 뒤 그 교정이 어떤 종류인지를 함께 돌려주고, 바른은 이 종류를 교정 카테고리(RevisionCategory)로 매핑합니다.
이 글은 LLM 응답의 category가 어떻게 분류·매핑되는지와, 혼동어 교정이 어떻게 동작하는지를 설명합니다.
LLM 응답 category → RevisionCategory 매핑
LLM 폴백 교정은 어절을 고치면서 교정의 종류를 함께 표시합니다.
이 category 문자열은 바른 내부의 RevisionCategory enum으로 변환되어 응답에 실립니다.
| LLM 응답 category | RevisionCategory | 의미 | 예시 |
|---|---|---|---|
NONSTANDARD |
STANDARD |
비표준어 → 표준어 | 글장이 → 글쟁이 |
TYPO |
TYPO |
오탈자 | 스빈다 → 습니다 |
SPACING |
SPACING |
띄어쓰기·붙여쓰기 | 그다음 → 그 다음 |
왜 category를 따로 매핑하나요?
LLM은 "무엇을 어떻게 고쳤는지"를 자유로운 문자열로 말합니다. 이를 바른의 정해진 카테고리 체계(RevisionCategory)로
매핑하면, 규칙 교정과 LLM 교정의 결과를 같은 분류 체계로 일관되게 사용자에게 보여줄 수 있습니다.
예를 들어 비표준어 교정은 규칙으로 했든 LLM이 했든 모두 STANDARD로 통일됩니다.
graph LR
A[어절 LLM 폴백 교정] --> B[LLM 응답: 교정문 + category];
B --> C{category 분류};
C -- NONSTANDARD --> D[STANDARD];
C -- TYPO --> E[TYPO];
C -- SPACING --> F[SPACING];
D --> G[교정 결과에 카테고리 부착];
E --> G;
F --> G;
혼동어 교정
혼동하기 쉬운 단어는 대부분 발음이 비슷한 데서 비롯됩니다. 반드시와 반듯이처럼 소리는 닮았지만 뜻이 다른
단어쌍은 표기만 봐서는 어느 쪽이 맞는지 알 수 없고, 문장의 맥락 의미를 봐야 적절한 쪽을 고를 수 있습니다.
그래서 바른은 이 판단을 LLM에 맡깁니다.
예를 들어 그는 걸을 때도 반드시 자세를 유지한다.라는 문장에서는, 후보를 LLM에 다음과 같이 질의합니다.
// 질의: 문장의 4번째 위치에 어느 단어가 맞나
{ "offset": 4, "options": ["반드시", "반듯이"] }
// 응답: 자세를 곧게 한다는 맥락 → 두 번째 후보 선택
{ "select": 1, "token": "반듯이" }
발음·표기가 비슷해 헷갈리는 단어쌍은 별도의 혼동어 사전으로 후보를 잡고, 최종 선택은 위처럼 맥락으로 판단합니다. 혼동어 교정은 다음과 같이 후보를 고릅니다.
- 최장일치: 문장에서 사전에 등록된 혼동어 표현 중 가장 길게 매칭되는 후보를 우선합니다.
- 비겹침 선택: 선택된 후보끼리 구간이 겹치지 않도록 골라, 한 글자가 두 교정에 동시에 묶이는 일을 막습니다.
혼동어 교정은 RevisionConfig의 disable_confusion 옵션으로 비활성화할 수 있습니다(기본값 false).
자주 묻는 질문
Q. LLM이 돌려준 교정 종류는 어떻게 분류되나요?
LLM 응답의 category가 바른의 RevisionCategory로 매핑됩니다.
NONSTANDARD는 STANDARD로, TYPO는 TYPO로, SPACING은 SPACING으로 변환되어 교정 결과에 카테고리가 붙습니다.
Q. 혼동어 교정은 어떻게 후보를 고르나요?
혼동어 사전에서 가장 길게 매칭되는 후보(최장일치)를 우선하고, 선택된 후보끼리 구간이 겹치지 않도록(비겹침) 골라 충돌을 막습니다.
Q. 반드시와 반듯이처럼 발음이 비슷한 단어는 어떻게 가려내나요?
혼동어는 대부분 발음 유사성에서 비롯되어 표기만으로는 정답을 알 수 없으므로 LLM에 맥락을 줘 판별합니다.
예를 들어 후보를 {offset:4, options:["반드시","반듯이"]}로 질의하면, 자세를 곧게 한다는 맥락을 읽고
{select:1, token:"반듯이"}처럼 적절한 단어를 골라 줍니다.
Q. 혼동어 교정을 끌 수 있나요?
네. RevisionConfig의 disable_confusion을 true로 설정하면 혼동(혼동어) 모델 교정이 비활성화됩니다.
기본값은 false입니다.
도움이 되었나요?