Skip to content

fix: 空白を挟む月名の読みを補正する - #37

Merged
owayo merged 1 commit into
mainfrom
fix/issue-36-spaced-month-readings
Oct 20, 2026
Merged

owayo merged 1 commit into
mainfrom
fix/issue-36-spaced-month-readings

Conversation

@owayo

@owayo owayo commented Oct 20, 2026

Copy link
Copy Markdown
Owner

概要

9 月の利用実績 の数詞と月を ク / ガツ と読むよう、解析ライブラリで補正する。半角数字・全角数字・漢数字の1〜12月を対象とし、既存の辞書をそのまま利用できる。

原因

空白があると辞書の月名の複合語に一致せず、数詞と普通名詞の「月」に分かれる。従来の数詞補正は隣接する助数詞だけを扱い、空白を挟む暦月を判定していなかった。

変更内容

  • 入力全体で月名の数詞候補を確定し、前分割で小数点の前半が失われても部分一致を防ぐ。
  • 半角空白・タブを挟む通常表記の1〜12月を補正し、四・七・九の特殊読みと十の長音を反映する。
  • 一語の数詞と月は読み・発音以外を維持する。複数の数詞トークンは既存の数量処理と同じ形式で数の部分だけを合成し、元入力の表層形とバイト範囲を保持する。
  • 期間・曜日・小数・識別子・先頭ゼロ・混在表記・既知の別読みを除外する。改行や全角空白を挟む場合は従来の出力を維持する。

設計判断

Codex の設計レビューを受け、ASCII の独立整数判定を既存の計画に集約し、候補全体を検証してから変更する方針を採用した。実辞書で 10 月 が 1 / 0 / 月 になるため、全トークンを維持する案は採らず、数詞だけを既存の数量と同じ方式でまとめる。数詞と普通名詞に解析された同表記の人名など、意味の曖昧性の解消は対象外。差分レビューで重大な指摘はなかった。

検証

  • Makefile の ci と同等の format・workspace clippy/test、および feature なし・analyzer・download の各 lib clippy/test: pass
  • cargo test --locked --test month_readings -- --ignored: 配布3辞書で1〜12月・3表記の108例が pass
  • 構築辞書の回帰テスト: 空白・タブ、特殊読み、除外条件、UTF-8位置、非ゼロoffset、既存出力・辞書キャッシュの保持を確認
  • 通常コーパス26,392行: 3辞書とも全トークンの全フィールドが変更前と完全一致(各約124〜127万トークン)
  • Kotonoha へ修正後の実トークンを渡す結合検証: 8例で InputToken・NJD・PhoneTone・HTSラベルの整合を確認

Closes #36

数詞と月の間に空白があると辞書の複合語に一致せず、月が普通名詞のツキとして出力されていた。
入力全体で数の境界を確認し、半角空白・タブを挟む1〜12月を暦月の読みへ補正する。
四・七・九はシ・シチ・ク、十の発音はジューとし、半角数字・全角数字・漢数字を扱う。

数詞が一語なら読みと発音以外を保持する。複数の数詞は既存の数量処理と同じ形式で数の範囲だけを合成し、
月の品詞・原形と元入力のバイト範囲を保つ。前分割前に候補を確定して小数・識別子の部分一致を避け、
期間・曜日・不正な数の表記や既知の別読みは変更しない。

構築辞書と配布3辞書の回帰テストを追加し、全feature構成の検査と26,392行の全トークン比較を実施した。
@owayo owayo self-assigned this Oct 20, 2026
@owayo
owayo merged commit 502ed96 into main Oct 20, 2026
8 checks passed
@owayo
owayo deleted the fix/issue-36-spaced-month-readings branch October 20, 2026 09:16
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