要件整理と既存調査
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 サンプルを添付し導入障壁を下げた