배경
쉬운 글에서는 숫자를 고유어로 풀어 쓰는 일이 흔합니다 — 3가구 → 세 가구.
또박의 Fidelity 게이트는 이 둘을 같은 값으로 인정합니다. 그래야 왜곡이 아닌 표기
변형을 재교정으로 잘못 돌려보내지 않습니다.
그런데 지금은 1~10까지만 인정합니다.
ttobak/fidelity/normalize.py
_NATIVE_NUMERALS: dict[str, int] = {
"한": 1, "두": 2, "세": 3, "네": 4, "다섯": 5,
"여섯": 6, "일곱": 7, "여덟": 8, "아홉": 9, "열": 10,
}
그래서 원문 23곳 → 쉬운본 스물세 곳 은 값이 보존됐는데도 불일치로 잡혀
사람 검수로 회부됩니다. 안전한 방향의 오류(왜곡을 통과시키지는 않음)지만,
쓰는 사람에게는 거짓 경보라 불편합니다.
할 일
11 이상 고유어 수사를 인정하도록 넓힙니다.
_NATIVE_NUMERALS 에 십 단위(열·스물·서른·마흔·쉰·예순·일흔·여든·아흔) 추가
- 복합 수사 처리 —
스물세(23), 열한(11) 처럼 십 단위 + 낱 단위가 붙는 형태
NATIVE_COUNT_RE 정규식을 복합 수사에 맞게 확장
단위 목록은 같은 파일의 COUNT_UNITS 입니다: 명·건·회·개·가구·세대·곳·세.
주의할 점
- 관대화 방향으로만 동작해야 합니다. 이 정규화는 쉬운본 매칭 전용이고,
왜곡을 통과시키는 쪽으로 작동하면 안 됩니다.
(?<![가-힣]) 룩비하인드가 왜 있는지 보고 유지해 주세요 — 동네 곳 의
네 곳 을 4곳으로 오인하는 것을 막습니다. 복합 수사를 넣을 때 같은 종류의
오인이 늘어날 수 있습니다.
개(?!월) 도 마찬가지입니다 — 6개월 을 6개 로 읽지 않기 위한 장치입니다.
테스트
tests/fidelity/test_normalize_number.py 에 기존 패턴이 있습니다. 실패하는
테스트를 먼저 쓰고 구현하는 흐름을 이 저장소가 따릅니다.
python -m pytest tests/fidelity/test_normalize_number.py -q
관련 파일
ttobak/fidelity/normalize.py (183~221행)
tests/fidelity/test_normalize_number.py
EN — Native Korean numerals are only recognized up to 10, so 23곳 ↔ 스물세 곳
is flagged as a mismatch even though the value is preserved. Extend
_NATIVE_NUMERALS and NATIVE_COUNT_RE to cover tens and compound numerals.
Must stay leniency-only: it must never let a real distortion through.
배경
쉬운 글에서는 숫자를 고유어로 풀어 쓰는 일이 흔합니다 —
3가구→세 가구.또박의 Fidelity 게이트는 이 둘을 같은 값으로 인정합니다. 그래야 왜곡이 아닌 표기
변형을 재교정으로 잘못 돌려보내지 않습니다.
그런데 지금은 1~10까지만 인정합니다.
ttobak/fidelity/normalize.py그래서 원문
23곳→ 쉬운본스물세 곳은 값이 보존됐는데도 불일치로 잡혀사람 검수로 회부됩니다. 안전한 방향의 오류(왜곡을 통과시키지는 않음)지만,
쓰는 사람에게는 거짓 경보라 불편합니다.
할 일
11 이상 고유어 수사를 인정하도록 넓힙니다.
_NATIVE_NUMERALS에 십 단위(열·스물·서른·마흔·쉰·예순·일흔·여든·아흔) 추가스물세(23),열한(11) 처럼 십 단위 + 낱 단위가 붙는 형태NATIVE_COUNT_RE정규식을 복합 수사에 맞게 확장단위 목록은 같은 파일의
COUNT_UNITS입니다: 명·건·회·개·가구·세대·곳·세.주의할 점
왜곡을 통과시키는 쪽으로 작동하면 안 됩니다.
(?<![가-힣])룩비하인드가 왜 있는지 보고 유지해 주세요 —동네 곳의네 곳을 4곳으로 오인하는 것을 막습니다. 복합 수사를 넣을 때 같은 종류의오인이 늘어날 수 있습니다.
개(?!월)도 마찬가지입니다 —6개월을6개로 읽지 않기 위한 장치입니다.테스트
tests/fidelity/test_normalize_number.py에 기존 패턴이 있습니다. 실패하는테스트를 먼저 쓰고 구현하는 흐름을 이 저장소가 따릅니다.
관련 파일
ttobak/fidelity/normalize.py(183~221행)tests/fidelity/test_normalize_number.pyEN — Native Korean numerals are only recognized up to 10, so
23곳↔스물세 곳is flagged as a mismatch even though the value is preserved. Extend
_NATIVE_NUMERALSandNATIVE_COUNT_REto cover tens and compound numerals.Must stay leniency-only: it must never let a real distortion through.