Skip to content

Rule 35 and 56 fixes for the Roman section boundary - #200

Merged
owjs3901 merged 9 commits into
mainfrom
owjs3901/unit-hyphen-number-chain
Sep 16, 2026
Merged

owjs3901 merged 9 commits into
mainfrom
owjs3901/unit-hyphen-number-chain

Conversation

@owjs3901

@owjs3901 owjs3901 commented Sep 14, 2026

Copy link
Copy Markdown
Contributor

말뭉치 군집 분석으로 찾은 로마자 구간 경계 결함 둘을 고친다. 두 건 모두 역방향 0건이고, 한 건은 CI 워크플로 수정을 동반한다.

1. 제35항 — 단위 뒤 붙임표로 이어지는 숫자

제35항은 붙임표로 이어지는 로마자 식별자의 숫자(D-100)를 열린 구간에 둔다. 제69항 단위 경계는 경계 자리에 숫자가 곧바로 오는 경우만 인정해서, 799cc-7 이 붙임표에서 구간을 닫았다가 다시 열었다.

출력
참조 ⠼⠛⠊⠊⠴⠉⠉⠤⠼⠛
⠼⠛⠊⠊⠴⠉⠉⠲⠴⠤⠼⠛
⠼⠛⠊⠊⠴⠉⠉⠤⠼⠛

단위가 아닌 로마자(abc-1, 3ab-7)는 원래 정상이었다. cc·kg 처럼 단위로 인식되는 낱말에서만 나던 결함이다.

2. 제56항 — 닫는 따옴표 뒤의 괄호

닫는 따옴표는 로마자 구간을 닫으므로, 그 뒤의 여는 괄호는 한글에 바로 붙은 괄호(모터보트(, 씨넷()와 같은 자리다. 그런데 따옴표가 한글 글자가 아니라서 기존 판정을 빠져나가 UEB 괄호 ⠐⠣ 와 연속표 ⠰ 로 샜다.

출력
참조 ⠴⠄⠦⠄⠴⠠⠍⠕⠞⠕⠗
⠴⠄⠐⠣⠰⠠⠍⠕⠞⠕⠗
⠴⠄⠦⠄⠴⠠⠍⠕⠞⠕⠗

근거는 말뭉치 전수 집계다. 닫는 따옴표 뒤의 여는 괄호는 한국어 괄호 321 : UEB 괄호 1 이다. 예약된 연속표를 지워 괄호 안 로마자가 제29항의 로마자표로 새로 열리게 했다.

같은 조사에서 더 버지(The Verge), 의 UEB 괄호도 확인했지만, 띄어 쓴 구까지 포함해도 한국어 괄호가 3616 : 439 로 우세해 일반 규칙이 아니었다. 현행 동작이 다수파이므로 건드리지 않았다.

3. CI — changepacks job 의 checkout

이 워크플로의 다른 모든 job 은 checkout 을 PR head 에 고정하는데 changepacks job 만 빠져 있었다. pull_request_target 에서 PR 코드가 아닌 main 을 depth 1 로 받고 있었고, changepacks 는 base branch 와 견주므로 shallow checkout 으로는 그 비교를 할 수 없다.

검증

말뭉치 455,395 (97.4897%) 455,451 (97.5017%)
표지 오류 합계 1692 1681
로마자표 과잉 839 838
로마자표 누락 149 148
종료표 과잉 316 307
종료표 누락 388 388
  • 규정 fixture 5141/5141
  • cargo test --release -p braillify 4,996 + 541 통과, clippy 통과
  • 네 표지 유형 중 악화된 것이 없다. 이 넷은 서로 반대 방향이라 총 정확도만으로는 한쪽을 고치며 다른 쪽을 망가뜨려도 드러나지 않으므로 개별로 확인했다
  • 기존 경계 동작 회귀 확인: 3cal, 1m는, 3m/시, 12km 3구간, 1TB SSD, 모터보트(, 씨넷(CNET)과

Rule 35 keeps the number of a hyphenated Roman identifier (D-100) inside
the open Roman section. The rule 69 unit boundary only recognised a digit
sitting directly at the boundary, so 799cc-7 closed the section at the
hyphen and reopened it, emitting a terminator and a Roman indicator that
the reference does not write.
@codecov

codecov Bot commented Sep 14, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

Files with missing lines Coverage Δ
libs/braillify/src/english_logic.rs 100.00% <ø> (ø)
libs/braillify/src/rules/english_ueb/compound.rs 100.00% <100.00%> (ø)
libs/braillify/src/rules/korean/rule_28.rs 100.00% <100.00%> (ø)
libs/braillify/src/rules/korean/rule_69.rs 100.00% <ø> (ø)
libs/braillify/src/rules/korean/rule_71.rs 100.00% <ø> (ø)
.../braillify/src/rules/korean/rule_english_symbol.rs 100.00% <100.00%> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@github-actions

github-actions Bot commented Sep 14, 2026

Copy link
Copy Markdown
Contributor

Braillify testcase report

Suite Passed Total Failed Success rate
Standard testcases 5141 5141 0 100.00%
NIKL 2021 corpus 91067 93115 2048 97.80%
NIKL 2022 corpus 107829 108795 966 99.11%
NIKL 2023 corpus 122601 126693 4092 96.77%
NIKL 2024 corpus 53467 54990 1523 97.23%
NIKL 2025 corpus 80609 83528 2919 96.51%
NIKL corpus (all years) 455573 467121 11548 97.53%

Command: cargo test test_by_testcase -- --nocapture

devfive added 2 commits September 14, 2026 16:02
Every other job in this workflow pins the checkout to the PR head; the
changepacks job did not, so under pull_request_target it read main at
depth 1. changepacks compares manifests against the base branch, which a
shallow checkout cannot do.
A closing quote ends the Roman section, so the parenthesis that follows
sits where one attached to Hangul does and takes rule 56's Korean form.
The corpus writes the Korean parenthesis there 321 times against 1.
Clearing the reserved continuation lets the Roman run inside open with
rule 29's indicator rather than the continuation sign.
@owjs3901 owjs3901 changed the title Keep a unit's hyphenated number in the same Roman section Rule 35 and 56 fixes for the Roman section boundary Sep 14, 2026
devfive and others added 3 commits September 14, 2026 18:42
PowerShell's Set-Content wrote a UTF-8 byte order mark, and changepacks
reads the file with a parser that rejects it: 'Failed to parse changepack
log ...: expected value at line 1 column 1'. Match the single-line shape
the other logs already use.
Rule 29 keeps a sign attached to Roman letters inside the open section.
An ampersand followed by Hangul closed the section and reopened it for
its own wrapper, writing a terminator and an indicator the reference does
not. The section now closes at the Hangul instead.
@github-actions

Copy link
Copy Markdown
Contributor

Changepacks

braillify@2.1.2 → 2.2.0 - libs/braillify/Cargo.toml

Minor

  • Raise Korean-braille conversion accuracy on the NIKL parallel corpus from 96.5% to 97.38% across its five editions (454,899 of 467,121 sentences), and read Hanja through its Korean reading. All 5,141 rule fixtures still pass.

Patch

  • Narrow what counts as a mathematical expression inside Korean prose; corpus accuracy 455,395 of 467,121 sentences.
  • RUEB 10.7.4: the ever contraction is blocked only by a preceding e or i, not by every vowel
  • Apply the National Institute of Korean Language rulings on Article 51's colon, Article 10's jamo prefix, and Article 46's operator spacing; corpus accuracy 454,990 of 467,121 sentences.

braillify-c@0.1.2 → 0.2.0 - packages/c/Cargo.toml

Minor

  • Raise Korean-braille conversion accuracy on the NIKL parallel corpus from 96.5% to 97.38% across its five editions (454,899 of 467,121 sentences), and read Hanja through its Korean reading. All 5,141 rule fixtures still pass.

Patch

  • Narrow what counts as a mathematical expression inside Korean prose; corpus accuracy 455,395 of 467,121 sentences.
  • RUEB 10.7.4: the ever contraction is blocked only by a preceding e or i, not by every vowel
  • Apply the National Institute of Korean Language rulings on Article 51's colon, Article 10's jamo prefix, and Article 46's operator spacing; corpus accuracy 454,990 of 467,121 sentences.

Braillify@2.1.2 → 2.2.0 - packages/dotnet/Braillify/Braillify.csproj

Minor

  • Raise Korean-braille conversion accuracy on the NIKL parallel corpus from 96.5% to 97.38% across its five editions (454,899 of 467,121 sentences), and read Hanja through its Korean reading. All 5,141 rule fixtures still pass.

Patch

  • Narrow what counts as a mathematical expression inside Korean prose; corpus accuracy 455,395 of 467,121 sentences.
  • RUEB 10.7.4: the ever contraction is blocked only by a preceding e or i, not by every vowel
  • Apply the National Institute of Korean Language rulings on Article 51's colon, Article 10's jamo prefix, and Article 46's operator spacing; corpus accuracy 454,990 of 467,121 sentences.

BraillifyNet@2.1.2 → 2.2.0 - packages/dotnet/BraillifyNet/BraillifyNet.csproj

Minor

  • Raise Korean-braille conversion accuracy on the NIKL parallel corpus from 96.5% to 97.38% across its five editions (454,899 of 467,121 sentences), and read Hanja through its Korean reading. All 5,141 rule fixtures still pass.

Patch

  • Narrow what counts as a mathematical expression inside Korean prose; corpus accuracy 455,395 of 467,121 sentences.
  • RUEB 10.7.4: the ever contraction is blocked only by a preceding e or i, not by every vowel
  • Apply the National Institute of Korean Language rulings on Article 51's colon, Article 10's jamo prefix, and Article 46's operator spacing; corpus accuracy 454,990 of 467,121 sentences.

braillify@2.1.2 → 2.2.0 - packages/node/package.json

Minor

  • Raise Korean-braille conversion accuracy on the NIKL parallel corpus from 96.5% to 97.38% across its five editions (454,899 of 467,121 sentences), and read Hanja through its Korean reading. All 5,141 rule fixtures still pass.

Patch

  • Narrow what counts as a mathematical expression inside Korean prose; corpus accuracy 455,395 of 467,121 sentences.
  • RUEB 10.7.4: the ever contraction is blocked only by a preceding e or i, not by every vowel
  • Apply the National Institute of Korean Language rulings on Article 51's colon, Article 10's jamo prefix, and Article 46's operator spacing; corpus accuracy 454,990 of 467,121 sentences.

braillify@2.1.2 → 2.2.0 - packages/python/pyproject.toml

Minor

  • Raise Korean-braille conversion accuracy on the NIKL parallel corpus from 96.5% to 97.38% across its five editions (454,899 of 467,121 sentences), and read Hanja through its Korean reading. All 5,141 rule fixtures still pass.

Patch

  • Narrow what counts as a mathematical expression inside Korean prose; corpus accuracy 455,395 of 467,121 sentences.
  • RUEB 10.7.4: the ever contraction is blocked only by a preceding e or i, not by every vowel
  • Apply the National Institute of Korean Language rulings on Article 51's colon, Article 10's jamo prefix, and Article 46's operator spacing; corpus accuracy 454,990 of 467,121 sentences.

devfive and others added 3 commits September 14, 2026 21:01
Article 33's slash divides a unit from its base; it is part of article
74's digital notation only when Roman letters sit on its left. With digits
alone (17.1/km, 16/32/64GB) the slash was read as an address separator and
opened a Roman section, writing an indicator the reference does not.
A component of a closed compound is never a single letter, so a seam
after the first letter or before the last is table noise rather than a
real boundary. Article 10.11.1 read the spurious seam in whole as a
boundary that the wh groupsign bridged, and spelled the word out.
@owjs3901
owjs3901 merged commit 721ed33 into main Sep 16, 2026
41 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant