Skip to content

IPA辞書を拡充してローマ字駅名の未解決を61件から1件に削減 - #1626

Merged
TinyKitten merged 2 commits into
devfrom
feature/ipa-dictionary-expansion
Aug 12, 2026
Merged

IPA辞書を拡充してローマ字駅名の未解決を61件から1件に削減#1626
TinyKitten merged 2 commits into
devfrom
feature/ipa-dictionary-expansion

Conversation

@TinyKitten

@TinyKitten TinyKitten commented Aug 12, 2026

Copy link
Copy Markdown
Member

概要

make ipa-audit が報告する未解決名 61 件(lines 1 / stations 59 / train_types 1)を解消するため、IPA 辞書を拡充する。あわせて、日本式ローマ字のサーカムフレックス長音がトークン区切りとして扱われ読みが崩れていた問題を修正する。

変更の種類

  • バグ修正
  • 新機能
  • データの修正・追加
  • リファクタリング
  • ドキュメント
  • CI/CD
  • その他

変更内容

  • lookup_english_word_ipa() に 60 語を追加。
    • 英語・カタカナ外来語由来: Disney / Disneyland / Resort / Bayside / Portopia / Playpia / Screen / Socio / Vogel / ROYCE' / YRP / GRAN / St. / Univ. / Pref.Art / Pref.Sports など。
    • romaji_to_katakana() が解釈できない訓令式・非ヘボン式表記: Sirokanedai / Tamati / Mitumatu / Hasirano / saidaizi / suzi / Hatchonawate / 3chōme / Inuboh / Ohmisaki など。
    • 日本語読みの IPA は katakana_to_ipa() の出力に合わせ、長音のみ既存エントリと同じ ː 表記に畳んでいる。
  • 日本式ローマ字のサーカムフレックス長音(â î û ê ô)を is_name_token_char() のトークン文字に加え、normalize_name_char() でマクロンと同じ規則の母音列へ展開。従来は区切り文字扱いだったため KyûjômaeKy / j / mae に割れて読みが崩れていた(該当は球場前・接岨峡温泉・奥大井湖上の 3 駅)。
  • camelCase 分割で現れる sea を追加。DisneySearomaji_to_katakana() で「セア」と読まれていたが、名前全体としては解決扱いになるため監査に現れないケースだった。

監査結果の変化

変更前: lines 1 / stations 59 / train_types 1  (未解決 61 名称)
変更後: lines 0 / stations  1 / train_types 0  (未解決  1 名称)

変更後に残るトークン disneysea / wespa / toyamatoyopet / saishuniryocenter は、監査ツール側の extract_tokens() が camelCase 分割を行わないことによる偽陽性で、名称としてはいずれも解決済み。

検証

CSV 全 12,094 名称の name_roman_ipa を変更前後で突き合わせ、差分は 56 件。すべて意図した改善であることを目視で確認した。

Disney Resort Line          de.izɯɲiːlizoːtola.iɴ  ->  dɪzni ɹɪzɔɹt laɪn
Tokyo DisneySea Station     …de.izɯɲiːɕiː…         ->  tokʲo dɪzni siː steɪʃən
Nishi juitchome             ɲiɕidʑɯ.ɯ.itt͡ɕo.ɯme   ->  ɲiɕi dʑɯːitt͡ɕoːme
St. Mary's Hospital         se.imali.abʲo.ɯ.imma.e ->  seɪnt mɛɹiz hɑspɪtəl
Sessokyô Onsen              sessokʲo.ɯ.onseɴ       ->  sessokʲo.ɯ onseɴ

対応しなかったもの

  • Kii-Hosoakwa(紀伊細川 / キイホソカワ)Hosokawa の綴り誤り(ka の入れ替わり)と判断した。誤った綴りを辞書に登録するのは適切でないため、CSV 側の修正で対応すべきものとして残している。修正すれば romaji_to_katakana() がそのまま解決する。
  • 英語名が実態と合っていない駅ToyamaToyopet-Honsha-mae(現・トヨタモビリティ富山 Gスクエア五福前)や Ehime Univ. Hospital(愛大医学部南口)は、ローマ字が解決するようになった結果、英語表記どおりの古い名称を読むようになる。英語表記と読みが一致する状態なので本 PR では変更していないが、CSV 側の更新が別途必要。

テスト

domain::ipa に訓令式ローマ字・サーカムフレックス長音・oh 長音・丁目表記・施設ブランド名・略記(St. / Univ. / Pref.Art)の 6 テストを追加。

  • cargo fmt --all -- --check が通ること
  • cargo clippy -- -D warnings が通ること
  • cargo testSQLX_OFFLINE=true)が通ること

関連Issue

スクリーンショット(任意)

Summary by CodeRabbit

  • 新機能
    • ローマ字入力で、â・î・û・ê・ô のサーカムフレックス付き長音表記に対応しました。
    • 長音表記をマクロンと同様に母音列へ正規化します。
    • 施設名、英単語、略語、各種ローマ字表記など、英語IPA辞書の登録語を拡充しました。
    • camelCase、ピリオド付き略語、丁目表記にも対応しました。
  • テスト
    • 追加された表記や正規化ルールの検証を強化しました。

make ipa-audit が報告する未解決名 61 件 (lines 1 / stations 59 /
train_types 1) を解消する。

- lookup_english_word_ipa に 60 語を追加する。英語・カタカナ外来語由来の語
  (Disney / Resort / Bayside / Screen / Vogel など) と、romaji_to_katakana
  が解釈できない訓令式・非ヘボン式表記 (Sirokanedai / Tamati / Mitumatu /
  Hatchonawate / 3chōme など) の両方を対象とする。日本語読みの IPA は
  katakana_to_ipa() の出力に合わせ、長音のみ既存エントリと同じ ː 表記に畳んだ。
- 日本式ローマ字のサーカムフレックス長音 (â/î/û/ê/ô) をトークン文字として
  受け付け、マクロンと同じ規則で母音列へ展開する。従来は区切り文字扱いのため
  "Kyûjômae" が "Ky" / "j" / "mae" に割れて読みが崩れていた。
- camelCase 分割で現れる "sea" を追加する。"DisneySea" が「セア」と誤読されて
  いたが、名前全体としては解決扱いのため監査に現れないケースだった。

CSV 全 12,094 名称の name_roman_ipa を変更前後で突き合わせ、差分 56 件が
すべて意図した改善であることを確認済み。残る未解決 1 件は Kii-Hosoakwa で、
CSV 側の綴り誤り (正: Kii-Hosokawa) のため辞書では扱わない。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Px4SXdeBULB87KqD1TzKfy
@TinyKitten TinyKitten self-assigned this Aug 12, 2026
@github-actions github-actions Bot added feature 要望対応や課題解決 deploy-dev labels Aug 12, 2026
@coderabbitai

coderabbitai Bot commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: e543cf79-c0f7-4b8f-b606-f50ead089648

📥 Commits

Reviewing files that changed from the base of the PR and between aa5af3b and 3324b61.

📒 Files selected for processing (1)
  • stationapi/src/domain/ipa.rs

📝 Walkthrough

Walkthrough

ローマ字トークン解析がサーカムフレックス付き母音に対応した。母音は長母音表記へ正規化される。英語IPA辞書に語彙を追加した。訓令式表記、長音、丁目、施設名、略語の変換テストを追加した。

Changes

ローマ字IPA解析

Layer / File(s) Summary
ローマ字トークンと母音の正規化
stationapi/src/domain/ipa.rs
サーカムフレックス付き母音をトークン内の文字として扱う。大文字と小文字を長母音表記へ正規化する。
IPA辞書と変換テスト
stationapi/src/domain/ipa.rs
施設名、ブランド名、略語、英単語、訓令式・非ヘボン式ローマ字などを辞書へ追加する。長音、丁目、ピリオド付き略語の変換結果を検証する。

Estimated code review effort: 3 (Moderate) | ~20 minutes

Possibly related PRs

Poem

うさぎが辞書をぴょんと拡張
長音の母音をきれいに変換
̂ もマクロンも仲間入り
駅名と略語を正しく読み
IPAの道を月まで進む

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed タイトルはIPA辞書の拡充と未解決ローマ字駅名の削減という主な変更を、具体的かつ簡潔に示しています。
Description check ✅ Passed 概要、変更内容、テスト結果、関連Issue、任意項目をテンプレートに沿って記載し、変更の目的と検証内容を十分に説明しています。
Docstring Coverage ✅ Passed Docstring coverage is 83.33% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/ipa-dictionary-expansion

Comment @coderabbitai help to get the list of available commands.

@TinyKitten
TinyKitten merged commit 4e73e83 into dev Aug 12, 2026
8 checks passed
@TinyKitten
TinyKitten deleted the feature/ipa-dictionary-expansion branch August 12, 2026 00:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

deploy-dev feature 要望対応や課題解決

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant