<commit_before>Complete FST
============

非決定性FST (有限状態トランスデューサ) の実装 Complete FST と、それを利用したローマ字カタカナ変換ライブラリです。

変換ルール (変換元と変換先の組) を書くことで、FST のみを利用することもできます。これにより、任意の文字列変換に利用することができます。

Complete FST をベースに、ローマ字 <-> ひらがな変換はもちろん、半角全角変換、かな漢字変換を作ることもできます（氏名の変換など、限られた用途なら実用的に動作するはずです）。

変換ルールは、JavaScript オブジェクト形式 ({"key":"value"} の形) で記述できます。

与えられたルールに基づいて、文字列を変換しますが、変換先が複数あって一意に決まらないような変換ルールでも、全ての変換候補を列挙することができるのが特徴です。



内容物
------

Complete FST を利用した応用として、ローマ字カタカナ変換ライブラリ
complete-romaji.js を同梱しています。

    complete-fst/
    ├── complete-fst.js         // Complete FST 本体
    ├── complete-romaji.js      // ローマ字カタカナ変換ライブラリ
    ├── demo/                   // ローマ字カタカナ変換のデモ<commit_msg>Add a description about demo page<commit_after>Complete FST
============

非決定性FST (有限状態トランスデューサ) の実装 Complete FST と、それを利用したローマ字カタカナ変換ライブラリです。

変換ルール (変換元と変換先の組) を書くことで、FST のみを利用することもできます。これにより、任意の文字列変換に利用することができます。

Complete FST をベースに、ローマ字 <-> ひらがな変換はもちろん、半角全角変換、かな漢字変換を作ることもできます（氏名の変換など、限られた用途なら実用的に動作するはずです）。

変換ルールは、JavaScript オブジェクト形式 ({"key":"value"} の形) で記述できます。

与えられたルールに基づいて、文字列を変換しますが、変換先が複数あって一意に決まらないような変換ルールでも、全ての変換候補を列挙することができるのが特徴です。



デモ
----

[ローマ字カタカナ変換のデモサイト](http://takuyaa.github.io/complete-fst/demo/complete-romaji.html)を公開しています。



内容物
------

Complete FST を利用した応用として、ローマ字カタカナ変換ライブラリ
complete-romaji.js を同梱しています。

    complete-fst/
    ├── complete-fst.js         // Complete FST 本体
    ├── complete-romaji.js      // ローマ字カタカナ変換ライブラリ
    ├── demo/                   // ローマ字カタカナ変換のデモ
{'fraction_non_alphanumeric': 0.15643180349062702, 'fraction_numerical': 0.0, 'mean_word_length': 4.629090909090909, 'pattern_counts': {'":': 2, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '278096', 'n_tokens_mistral': 1227, 'n_tokens_neox': 1009, 'n_words': 86}