glossary

package
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 21, 2026 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Overview

Package glossary는 위키가 소유한 용어 사전을 읽어 전사에 적용한다.

**사전은 위키의 것이고 이 패키지는 읽기만 한다**(ADR 0079). 사람이 오탈자를 고치면 그 교정이 사전에 쌓이고 git 이 추적하며 다음 전사가 개선된다. 그 되먹임이 여정 2의 핵심이며, 사전이 도구 안에 있으면 끊긴다. 위키마다 용어가 달라 도구가 들고 다닐 수도 없다.

인식 유도는 하지 못한다

upstream 은 사전을 두 자리에 쓴다. 전사 전에 whisper 의 initial_prompt 로 넣어 인식을 유도하고, 전사 후에 자동 교정 항목을 치환한다.

**앞의 것을 여기서는 못 한다.** sherpa-onnx 의 whisper 설정에 프롬프트 자리가 없다. C API 의 SherpaOnnxOfflineWhisperModelConfig 에 encoder, decoder, language, task, tail_paddings, 타임스탬프 플래그뿐이다. hotwords 는 있으나 transducer 계열의 빔 탐색을 건드리는 것이라 whisper 의 greedy 디코딩에 닿지 않는다.

그래서 이 패키지는 후처리 치환만 한다. 그 절반은 오히려 결정론적이라 되먹임 고리에는 더 낫다. 같은 사전에 같은 전사를 넣으면 늘 같은 결과가 나온다.

Index

Constants

This section is empty.

Variables

View Source
var ErrNotFound = errors.New("용어 사전 없음")

ErrNotFound는 위키에 사전이 없을 때의 오류다. 없는 것은 정상이므로 호출자가 이것을 보고 조용히 넘어갈 수 있다.

Functions

func Find

func Find(wikiRoot string) (string, error)

Find는 위키에서 사전 경로를 찾는다.

func TotalReplacements

func TotalReplacements(applied []Applied) int

TotalReplacements는 치환 횟수의 합이다.

Types

type Applied

type Applied struct {
	Rule  Rule
	Count int
}

Applied는 치환 한 건의 결과다.

type Glossary

type Glossary struct {
	// Path는 읽은 파일 경로다. 사용자에게 어느 사전을 썼는지 알린다.
	Path string
	// Rules는 치환 규칙이다. 긴 변형이 앞에 온다.
	Rules []Rule
	// Reviewed는 자동 교정 대상이 아닌 항목 수다. 사전에 있으나
	// 쓰지 않은 것이 얼마나 되는지 알린다.
	Reviewed int
}

Glossary는 읽어 들인 사전이다.

func Load

func Load(wikiRoot string) (*Glossary, error)

Load는 위키의 사전을 읽는다.

func Parse

func Parse(text string) *Glossary

Parse는 사전 본문에서 치환 규칙을 뽑는다.

형식은 마크다운 표이고 칸 넷이다. 첫째가 정규형, 둘째가 변형 목록, 셋째가 자동 교정 여부, 넷째가 설명이다. 칸 이름이 아니라 위치로 읽는다. upstream 파일이 절 여럿에 표를 나눠 두고 머리 행이 여러 번 나오기 때문이다.

**자동 교정은 셋째 칸이 yes 로 시작하는 것만 한다.** review 와 conditional 은 사람이 보라는 표시이므로 건드리지 않는다. "yes when 무엇무엇" 처럼 조건이 붙은 것은 yes 로 친다. 조건 판단은 도구가 할 수 없고, 그 항목을 넣은 사람이 대체로 맞다고 본 것이다.

func (*Glossary) Apply

func (g *Glossary) Apply(text string) (string, []Applied)

Apply는 텍스트에 치환을 적용하고 무엇을 몇 번 바꿨는지 함께 낸다.

무엇을 바꿨는지 반드시 알린다. 조용히 바꾸면 사람이 전사를 검수할 때 도구가 손댄 자리를 모른다. 사전이 틀렸을 때 그것을 발견할 길이 그 목록뿐이다.

**한 번 바꾼 자리를 다시 보지 않는다.** 규칙마다 ReplaceAll 을 돌리면 앞 규칙이 낸 정규형을 뒤 규칙이 다시 잡는다. 실측으로 `임계을`이 `임계값`이 된 뒤 `임계` 규칙에 다시 걸려 `임계값값`이 됐다. 그래서 왼쪽에서 오른쪽으로 한 번만 훑고 맞은 만큼 건너뛴다.

규칙은 이미 긴 변형이 앞에 오도록 정렬되어 있으므로 앞에서부터 처음 맞는 것이 가장 긴 것이다.

type Rule

type Rule struct {
	Variant   string
	Canonical string
}

Rule은 치환 하나다. Variant 를 Canonical 로 바꾼다.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL