Skip to content

feat: 文字種境界スコアリング + OOV姓ペナルティ + カタカナ姓例外フロー#7

Merged
tk1024 merged 5 commits intomainfrom
feat/boundary-heuristic
Mar 22, 2026
Merged

feat: 文字種境界スコアリング + OOV姓ペナルティ + カタカナ姓例外フロー#7
tk1024 merged 5 commits intomainfrom
feat/boundary-heuristic

Conversation

@tk1024
Copy link
Owner

@tk1024 tk1024 commented Mar 22, 2026

Summary

文字種境界(漢字↔かな)を活用したスコアリング改善。辞書未収録の名前でも文字種の切り替わりを手がかりに分離精度を向上。

1. 文字種境界スコアリング (calcScore に直接組み込み)

  • 漢字→かな / かな→漢字 の唯一の境界位置を検出
  • 境界で切る候補: +1.2 ボーナス(辞書ヒットありなら +0.8 追加)
  • 境界より手前で切る: -3.0 ペナルティ
  • 境界より後ろで切る: -1.8 ペナルティ

2. OOV 姓の文字種混在ペナルティ

  • 辞書未ヒットの姓にかなが含まれる場合に大きく減点
  • 漢字+カタカナ1文字末尾: -3.0(例: 宝鐘マ)
  • 漢字+ひらがな1文字末尾: -2.5
  • 漢字+かな2文字以上末尾: -1.5
  • 辞書ヒットする姓には適用しない

3. 姓ヒットボーナス (+0.5)

  • 姓辞書ヒットは名辞書ヒットより強い根拠(苗字は有限の既知セット)
  • 松井/珠理奈 (sei=surface) vs 松井珠/理奈 (mei=surface) の逆転を防止

4. カタカナ姓の例外フロー

  • 前半が全カタカナの場合、芸名パターンとして後半を姓辞書で照合
  • 例: ジャガー横田 → 「横田」が姓辞書ヒット → 採用 (confidence 0.8)

Before / After

カテゴリ main normal now normal main lowConf now lowConf
MVP (208件) 94.7% 94.7% 98.1% 99.5%
VTuber名 (30件) 3.3% 6.7% 3.3% 93.3%
漢字姓+カタカナ名 75.0% 100% 91.7% 100%
かな姓+漢字名 18.8% 87.5% 56.3% 100%
漢字姓+ひらがな名 100% 100% 100% 100%
名前内部にかな混在 70.0% 70.0% 100% 100%
1文字姓 92.3% 92.3% 100% 100%
3文字以上の姓 75.0% 75.0% 100% 100%
異体字・旧字体 86.7% 86.7% 100% 100%
ノ・ヶ・々を含む姓 81.8% 81.8% 100% 100%
全ひらがな/全カタカナ 86.7% 86.7% 100% 100%
分割が曖昧な名前 80.0% 80.0% 100% 100%

通常モードの誤分割: 全カテゴリ 0 件のまま

残り lowConf wrong (3件)

名前 結果 原因
池井戸潤 池井/戸潤 「池井戸」が姓辞書未収録、「池井」がヒット
もこ田めめめ もこ/田めめめ 遷移2回、境界対象外
鳳玲天々 鳳/玲天々 全漢字、境界なし

Closes #6

Test plan

  • 84 ユニットテスト全パス(findSingleScriptBoundary, OOV姓ペナルティ, 姓ヒットボーナス, カタカナ姓例外フローの関数テスト含む)
  • 12カテゴリのデータドリブンテスト全パス
  • 通常モード・lowConf の両方で精度計測

🤖 Generated with Claude Code

tk1024 and others added 5 commits March 22, 2026 21:44
文字種境界(漢字→ひらがな/カタカナ)で分割される候補を、通常スコアが
閾値未満のときにフォールバックで救済する仕組みを追加。

- findSingleKanjiToKanaBoundary(): 遷移1回の漢字→かな境界を検出
- tryBoundaryFallback(): 姓側に辞書根拠がある場合のみ rescue
- confidence 0.8 で返す(通常の 1.0 と区別)
- 既存の辞書高信頼ケースには影響なし(MVP 94.7% 維持)

Closes #6

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
辞書未ヒットの姓にひらがな/カタカナが含まれる場合に減点する。
日本人の苗字はほぼ漢字のみで構成されるため、
「宝鐘マ」のような漢字+かな混在の姓は不自然と判定できる。

- 漢字+カタカナ1文字末尾: -3.0
- 漢字+ひらがな1文字末尾: -2.5
- 漢字+かな2文字以上末尾: -1.5
- 辞書ヒットする姓には適用しない
- BOUNDARY_AFTER_PENALTY を -1.2 → -1.8 に強化

VTuber名 [lowConf]: 3.3% → 93.3%(28/30正解)
既存精度への影響なし(MVP 94.7%、誤分割0%)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- findSingleScriptBoundary() で漢字→かな/かな→漢字の両方向を検出
- かな→漢字方向でも境界ボーナス/ペナルティが効くように
- mei 側の混在ペナルティは除外(よね子、ルミ子等の自然な名前を保護)
- かな姓+漢字名 [lowConf]: 56.3% → 87.5%
- 名前内部にかな混在 [lowConf]: 100% 維持(リグレッションなし)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
0.8 だと1文字姓の辞書ヒットが強すぎて、上白石萌音、柳樂優弥等で
正しい複数文字姓に勝ってしまうリグレッションが発生していた。
0.5 で松井珠理奈等の改善を維持しつつリグレッションを解消。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- カタカナ姓の例外フロー: 前半が全カタカナの場合、後半を姓辞書で照合
  して一致すれば芸名パターンとして採用(confidence 0.8)
  例: ジャガー/横田、ダン/池田、マイク/眞木
- SEI_HIT_BONUS: 0.8 → 0.5 に調整(1文字姓リグレッション防止)
- ユニットテストを大幅拡充:
  - findSingleScriptBoundary の関数テスト
  - OOV姓混在ペナルティのテスト
  - 姓ヒットボーナスのテスト
  - カタカナ姓例外フローのテスト
  84テスト全パス

かな姓+漢字名 [lowConf]: 81.3% → 100%
MVP [lowConf]: 99.5% (1 wrong: 池井戸潤)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@tk1024 tk1024 force-pushed the feat/boundary-heuristic branch from ab06f03 to a020453 Compare March 22, 2026 13:25
@github-actions
Copy link

Test Results

Category Correct Wrong Unsplit Accuracy
名前内部にかな混在 7/10 0 3 70.0%
名前内部にかな混在 [lowConf] 10/10 0 0 100.0%
全ひらがな/全カタカナ 13/15 0 2 86.7%
全ひらがな/全カタカナ [lowConf] 15/15 0 0 100.0%
漢字姓+カタカナ名 12/12 0 0 100.0%
漢字姓+カタカナ名 [lowConf] 12/12 0 0 100.0%
ノ・ヶ・々を含む姓 9/11 0 2 81.8%
ノ・ヶ・々を含む姓 [lowConf] 11/11 0 0 100.0%
漢字姓+ひらがな名 15/15 0 0 100.0%
漢字姓+ひらがな名 [lowConf] 15/15 0 0 100.0%
分割が曖昧な名前 8/10 0 2 80.0%
分割が曖昧な名前 [lowConf] 10/10 0 0 100.0%
異体字・旧字体 13/15 0 2 86.7%
かな姓+漢字名 14/16 0 2 87.5%
異体字・旧字体 [lowConf] 15/15 0 0 100.0%
かな姓+漢字名 [lowConf] 16/16 0 0 100.0%
3文字以上の姓 9/12 0 3 75.0%
3文字以上の姓 [lowConf] 12/12 0 0 100.0%
MVP (208件) 196/207 0 11 94.7%
MVP (208件) [lowConf] 206/207 1 0 99.5%
1文字姓 12/13 0 1 92.3%
1文字姓 [lowConf] 13/13 0 0 100.0%
VTuber名 2/30 0 28 6.7%
VTuber名 [lowConf] 28/30 2 0 93.3%

Unit Tests: 13 passed files, 84 passed tests

@tk1024 tk1024 changed the title feat: 漢字→かな境界ヒューリスティックによる低信頼時の分離改善 feat: 文字種境界スコアリング + OOV姓ペナルティ + カタカナ姓例外フロー Mar 22, 2026
@tk1024 tk1024 merged commit 5539507 into main Mar 22, 2026
1 check passed
@tk1024 tk1024 deleted the feat/boundary-heuristic branch March 22, 2026 13:27
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.

漢字・かな境界でのスコアリング改善(VTuber名等の分離精度向上)

1 participant