Skip to content

단위 동의어를 등가로 인정하기 (65세 ↔ 65살, 6개월 ↔ 여섯 달) #10

Description

@needsbuilder

배경

쉬운 글로 바꾸면 단위 표현이 자연스럽게 바뀝니다.

원문 쉬운본 지금 판정
65세 65살 불일치 → 사람 검수
6개월 여섯 달 불일치 → 사람 검수
3세대 세 가구 불일치 → 사람 검수

값은 그대로인데 표기만 바뀐 경우인데도 게이트가 잡습니다. normalize.py 주석에
알려진 한계로 적어 뒀습니다(190~193행).

왜곡을 통과시키는 방향은 아니라서 위험하지는 않습니다. 다만 쉬운 글일수록
이런 표현을 쓰기 때문에, 정작 가장 잘 쓴 쉬운본이 가장 많이 걸리는 역설이
생깁니다.

할 일

값이 같은 단위 쌍을 등가로 인정합니다.

  • 나이: 세 ↔ 살
  • 기간: 개월 ↔ 달
  • 가구/세대처럼 문맥에 따라 같은 것을 세는 단위

어려운 지점 — 여기가 이 이슈의 핵심입니다

단위를 무르게 볼수록 진짜 왜곡을 놓칠 위험이 커집니다. 예를 들어 세대
가구 를 무조건 같게 보면, 정말로 대상 범위가 바뀐 문서를 통과시킬 수 있습니다.

그래서 이 이슈는 "사전에 쌍을 추가"로 끝나지 않습니다. 어디까지 같다고 볼지의
경계를 정하고, 그 경계를 테스트로 고정
하는 일이 같이 필요합니다.

이 저장소의 원칙은 쉬움과 충실성이 부딪히면 충실성이 이긴다 입니다. 애매하면
좁게 인정하는 쪽을 택해 주세요.

적대적 케이스는 tests/fidelity/test_gate_adversarial.py 에 모아 두었습니다.
새 등가 규칙이 기존 케이스를 뚫지 않는지 반드시 확인해야 합니다.

테스트

python -m pytest tests/fidelity -q

관련 파일

  • ttobak/fidelity/normalize.py (180~221행, COUNT_UNITS · _NATIVE_NUMERALS)
  • tests/fidelity/test_gate_adversarial.py
  • tests/fidelity/test_normalize_number.py

관련 이슈

#8 (고유어 수사 11 이상) 과 같은 코드 영역입니다. 먼저 #8 을 보시면 맥락이 잡힙니다.


EN — Unit synonyms (세↔살, 개월↔달, 세대↔가구) are not treated as equivalent, so
well-written easy-read output gets flagged even when the value is preserved. The hard
part is not adding pairs — it's deciding how far equivalence may go without letting a
real scope change through, and pinning that boundary with tests. When in doubt, be
strict: fidelity beats easiness in this project.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requesthelp wantedExtra attention is needed

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions