C.W.K.
Stream
Lesson 03 of 04 · published

모델 없는 바닥

~11 min · deterministic, floor, no-model, filler

Level 0불씨 없음
0 XP0/36 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"모델이 차갑고 네트워크가 사라졌을 때도, 뭔가는 네 단어를 정리해야 해. 그 뭔가는 기도가 아니라 코드야."

브레인 없는 프로바이더

Pippa-풀 과 로컬 Mini Pippa 모델 둘 밑에 모델을 아예 안 쓰는 세 번째 정리 프로바이더가 앉아: 결정론적 프로바이더. 순수 코드라, 콜드-스타트 0 이고 절대 타임아웃 안 해. 톤을 재작성하거나 구조를 추론 못 하지만, 원시 전사를 쓸 만하게 만드는 기계적 일은 할 수 있어: 공백 다듬기, 사전 치환 적용, 스니펫 확장, 필러 토큰 벗기기, 간격과 따옴표 정규화, 말한 문장부호 명령 매핑, 그리고 끝에 붙은 '엔터 쳐' 감지. LLM 이 없을 때, 이게 받아쓰기를 계속 돌아가게 해.

결정론적 정리가 실제 하는 일

"어 보고서 보내 쉼표 그다음 은행에 전화해 마침표"
         |  필러 벗기기 ("어")
         |  말한 문장부호 매핑 ("쉼표" -> ",", "마침표" -> ".")
         v
"보고서 보내, 그다음 은행에 전화해."

# 모델 없음. 규칙만: 필러, 문장부호 단어, 사전,
# 스니펫, 공백, 그리고 끝의 "엔터 쳐" 명령.

말한-문장부호와 엔터-치기 처리가 두 언어에서 다 돌아 — Firekeeper 는 영어와 한국어를 동등하게 매핑해("comma" 와 "쉼표", "period" 와 "마침표", "press enter" 와 "엔터 쳐"). 이게 솔직한 오프라인 이야기야: 흉내 내는 쪼그라든 LLM 이 아니라, 기계적인 정리의 80% 를 하는 진짜, 빠른, 규칙 기반 변형.

한국어 필러 함정

자기 경고를 받을 만한 미묘함 하나: 필러 벗기기는 한국어에서 보수적 이어야 해. "um", "uh" 같은 영어 필러는 진짜 단어인 경우가 드무니 제거해도 안전해. 근데 한국어 필러는 진짜 어휘와 겹쳐 — 는 필러지만 진짜 단어이기도 하고, 는 머뭇거림이지만 '저것' 이기도 해. 순진한 모든-필러-벗기기 규칙은 의미를 지워. 그래서 결정론적 한국어 필러 목록은 짧고 조심스럽고, 진짜 단어를 먹는 것보다 단어를 남기는 쪽으로 기울어. 의미를 망치는 공격적 정리는 정리 안 하는 것보다 나빠.

아무것도 필요 없는 바닥을 항상 둬. 시스템에서 제일 안정적인 컴포넌트는 의존성 없는 거야 — 모델 없음, 네트워크 없음, 서비스 없음. 똑똑한 경로 밑에 결정론적 바닥을 지어, 똑똑한 부분이 없을 때 기능이 '고장' 이 아니라 '기계적으로 올바름' 으로 격하되게. 똑똑함은 선택; 바닥은 아냐.
언어-인식 규칙이 보편 규칙을 이겨. 영어에 맞춘 필러-벗기기 규칙은 한국어를 조용히 망쳐, 같은 표면 토큰이 한 언어에선 필러고 다른 언어에선 내용이니까. 여러 언어를 건드리는 결정론적 텍스트 규칙은 언어별로 쓰여야 하고, 보존 쪽으로 기울어야 해. 언어들에 걸쳐 '대체로 맞는' 규칙은 안 맞춘 그 언어를 조용히 뭉개는 규칙이야.

Code

결정론적 정리: 규칙만, 언어-인식, 보존-편향·swift
func deterministicClean(_ raw: String, language: String, dict: [DictEntry]) -> String {
    var t = raw.trimmingCharacters(in: .whitespacesAndNewlines)
    t = mapSpokenPunctuation(t, language: language)   // "comma"/"쉼표" -> ","
    t = stripFillers(t, language: language)           // EN: um/uh; KO: 짧고 조심스러운 목록
    t = applyDictionary(t, dict)                      // 명명 용어 강제
    t = expandSnippets(t)
    return normalizeWhitespace(t)
}

// KO 필러 목록은 일부러 아주 작아: 어 와 그 는 진짜 단어이기도 하니,
// 규칙이 의미 삭제 위험 대신 모호한 토큰을 남겨.

External links

Exercise

평소 LLM 으로 굴릴 기능의 결정론적(모델 없는) 폴백을 설계해. 규칙만으로 할 수 있는 것과 솔직히 못 하는 걸 나열해. 그다음 한 언어나 맥락에선 안전하지만 다른 걸 망칠 규칙 하나를 찾아 — 망침을 피하게 어떻게 스코프할래?
Hint
규칙-만 바닥은 기계적이고 모호하지 않은 부분(포매팅, 알려진 치환, 구조 정규화)을 처리하고 판단 부분(톤, 추론, 재작성)은 솔직히 건너뛰어. 맥락 간 함정은 보통 한 설정에선 잡음이고 다른 데선 신호인 토큰이야 — 해법은 규칙이 맥락(언어, 로케일, 도메인)을 인식하게 하고 불확실하면 보존을 기본으로 하는 거야.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.