neologd と TinySegmenterMaker を 手軽に組み合わせられる様にしてみた

と言う話です。なお実際の成果物はこちら:

nyarla/tinydictgen: Makefile and scripts for make model files for TinySegmenter

Makefile and scripts for make model files for TinySegmenter - nyarla/t...

https://github.com/nyarla/tinydictgen

前提となる知識

そもそも Neologd とか TinySegmenter とか何やねんと言うと、

  • Neologd は今時の新語などを良い感じに処理するための辞書
  • TinySegmenter は元は JavaScript で書かれたわかち書きのライブラリ

で、TinySegmenterMaker はその TinySegmenter のモデルを作り、 カスタマイズされたTInySegmenter を作るためのツールチェイン一式、という感じです。

なお、それぞれのリンクは以下:

neologd/mecab-ipadic-neologd: Neologism dictionary based on the language resources on the Web for mecab-ipadic

Neologism dictionary based on the language resources on the Web for me...

https://github.com/neologd/mecab-ipadic-neologd

shogo82148/TinySegmenterMaker

Contribute to shogo82148/TinySegmenterMaker development by creating an...

https://github.com/shogo82148/TinySegmenterMaker

私の成果物は何をするためのモノか

で。私の成果物である、

nyarla/tinydictgen: Makefile and scripts for make model files for TinySegmenter

Makefile and scripts for make model files for TinySegmenter - nyarla/t...

https://github.com/nyarla/tinydictgen

は、何をしているかというと、

  1. neologdTinySegmenterMaker の DL をサクっと行う
  2. neologd + mecab でテキストを分析して TInySegmenterMaker で使える様にする
  3. この一連の流れをmake コマンド一発で行える様にする

と言う感じのコトをやっているパッケージです。

なお私は普段使いの OS が NixOS なんで、 nix-shell 経由で作業が出来る様に default.nix が 付属していますが、 他の Linux環境でもコマンドさえ揃ってれば Makfile のタスクを実行できると思います。

なお細かい流れとかについては、

tinydictgen/Makefile at master · nyarla/tinydictgen

Makefile and scripts for make model files for TinySegmenter - nyarla/t...

https://github.com/nyarla/tinydictgen/blob/master/Makefile

を見てくれーと言う感じですが、だいたいコレを参考にしてカスタムな Makefile を作れば、 おおよそ手軽に再現性のある TinySegmenter が作れると思います。

ちなみに

自分は TinySegmenterMaker のコーパスを作るために、 自分のブログ(つまりこの WebSiteです)の過去記事をプレーンテキストにして合体させたモノを使いました。やってて良かったブログ歴13年。

ただこれ、自分のブログを元ネタにしたんで、 今回作ったモデルだと自分のブログに最適化された形で分かち書きされる、 と言う様な気はしているんですが、 いかんせん TinySegmenter も含めテキスト処理についてはあまり詳しくないので、 今回作ったモデルで精度とか出るのか、と言うと正直良く判りません。

あと今回作ったパッケージには scripts/model-to-json.pl と言う謎スクリプトが付属していますが、 これを上手いこと使うと以前自分が作った、

nyarla/go-japanese-segmenter: A TinySegmenter implementation of golang but zero allocation inside this library

A TinySegmenter implementation of golang but zero allocation inside th...

https://github.com/nyarla/go-japanese-segmenter

で使える JSON ファイルが得られるので、上記ライブラリは Golang 製ですが、 わりと手軽に精度とかをチェックするのが出来るんじゃないかと思います。

以上

と言うコトで、

neologdTinySegmenterMaker を手軽に組み合わせられる様にしたよー

と言う話でした。

まぁ結果として出来上がったモデルが実用できるのかどうかは今一つピンと来てないんですが、 今回作ったパッケージでモデルを作る作業は大分ラクになったので、良かったら使ってみて下さい。

と言う事で今回の話は以上です。はい。

nyarla が大体

Scrapbox でコメントや意見を書く