🛠️ MorphFoundry ライブラリが完成するまでの流れ

調査 → ラティス実装 → 辞書整備 → テスト → ドキュメント化の順で構築。どの段階で何を検証したかをまとめました。

要件整理と既存調査

Node.js / ブラウザ双方で動く構成を定義。既存ライブラリ (kuromoji.js / TinySegmenter) の長所を洗い出す。

  • UniDic(現代書き言葉)のライセンス確認
  • ブラウザでのJSON辞書ロード方針を検討
  • 最小限の品詞情報で十分か評価
ラティスとコストモデルの実装

単純な Viterbi を採用し、未知語ペナルティ・接続コストを調整。デバッグモードでテーブル出力できるようにした。

  • 最大トークン長と未知語判定ルールを定義
  • connectionCost, unknownCost をパラメータ化
  • バックトラックの可視化ロギングを追加
辞書ビルドとカスタム辞書

UniDicをJSONに変換してMapに格納。追加エントリは専用辞書 "custom" に集約し、CLIからも扱えるように設計。

  • 辞書バージョンを保持し listDictionaries で確認
  • ユーザー辞書の差し込みをaddCustomEntryで提供
  • 辞書サイズを監視できるメタ情報を整備
テストとベンチマーク

小規模データで正答率を測定し、既存ライブラリとの性能比較を実施。プリプロセッサ有無でコスト差を確認。

  • 平均コスト・未知語率をダッシュボード化
  • サンプル文章1,000件で処理時間を算出
  • Web Worker 連携でUIのブロッキングを防止
ドキュメントと配布

README・APIリファレンス・CLIガイドを整備。右クリックでダウンロードできるように配布ファイルを公開。

  • 使用例 (browser / Node.js) をコードで紹介
  • 辞書差し替え手順とライセンス注意を明記
  • Web Worker サンプルを添付し導入障壁を下げた
ダウンロードとリファレンス morphfoundry.js をダウンロード 辞書の作り方(UniDic CSV 版を JSON 化) UniDic 軽量辞書JSON (約46MB / 263,040件) UniDic フル辞書JSON (約152MB) UniDic 変換スクリプトを取得 README (ライブラリ利用ガイド)