🌴

日本語テキスト向けトークナイザcabomaru

に公開

cabomaru(かぼまる)とは

 日本語テキスト向け教師なし学習のトークナイザです。

インストール

Githubで公開しているpackageのインストールを行うことで、実行可能バイナリとライブラリの両方をインストールします。
v0.0.1をmacOS(Apple Silicon)環境にてpython3.14でインストールする場合は、以下のコマンドになります。

() python3.14 on macOS
pip install https://github.com/rabbitfoot530/cabomaru/releases/download/v0.0.1/cabomaru-0.0.1-cp314-cp314-macosx_11_0_arm64.whl

モデル作成

 1行ごとに改行したテキスト形式のファイルを対象として、モデル作成を行います。複数ファイルの場合は、ディレクトリを指定するとディレクトリ配下の全てのファイルを読み込みます。
 30万文を処理するのに30秒ほど必要です。10万文単位で一時保存処理が実行されます。データを追加したい場合は、既存モデルを指定することで追加可能です。

-t: train mode
-i: 入力ファイル or 入力ディレクトリ
-o: モデル出力パス
-m: 既存モデルファイル

() 新規学習(ディレクトリ指定)
cabomaru -t -i "./path/to/data/" -o "./path/to/model.bin"

() 新規学習(ディレクトリ指定)
cabomaru -t -i "./path/to/data/" -o "./path/to/model.bin"

() 追加学習(ディレクトリ指定)
cabomaru -t -i "./path/to/data/" -o "./path/to/new_model.bin" -m "./path/to/model.bin"

ユーザ定義モデル作成

 ベースとなるモデル以外に、トークナイズの動作を変更する手段として、ユーザ定義モデル(ユーザ辞書)が使用可能です。
 テキストファイルにユーザ定義トークンとして使用したいトークンを1行単位で記述します。

ガンダム
関西国際空港
東大通
3.14

 ユーザ定義トークンのファイルを以下のコマンドにて変換します。出力されたユーザ定義モデルをトークナイズ時に指定します。

-b: build mode
-i: 入力ファイル
-o: 出力ファイル

() user.txtの内容をuser.binへ変換
cabomaru -b -i "./path/to/user.txt" -o "./path/to/user.bin"

設定ファイル

 トークナイズ時にモデル・ユーザ定義の設定を記述した設定ファイル(tomlファイル)を指定可能です。

cabomaru.toml
model_path = "/path/to/model.bin"
user_defined_path = "/path/to/user.bin"

 ユーザ定義モデルを使用することで、既存のモデルとは異なるトークナイズ結果とすることが可能です。
 以下の例は、1500万文を学習させた結果です。

() ユーザ定義なし
> cabomaru -m "./path/to/model.bin"
cabomaru🌴> 残りの人生、今日が一番若い
["残りの", "人生", "、今日が", "一番", "若い"]
cabomaru🌴> 円周率は3.14です
["円周", "率は", "3", ".", "14", "です"]

() ユーザ定義あり
> cabomaru -m "./path/to/model.bin" -u "./path/to/user.bin"
cabomaru🌴> 円周率は3.14です
["円周", "率は", "3.14", "です"]

() 設定ファイル使用
> cabomaru -c "./cabomaru.toml"
cabomaru🌴> 円周率は3.14です
["円周", "率は", "3.14", "です"]

開発経緯

 ある程度の単位(細かすぎない)のトークナイズを行いたく、pluggableなユーザ定義によるトークナイズ単位の修正も行いたかった。既存実装を修正するよりゼロから作ったほうが早いと思ったので開発を始めた。

Discussion