カラクリサイクル

『輝かしい青春』なんて無かった人の雑記

Acme::GodoWordなるモジュールを作りました

概要: 統一言語風の文字分解を行うモジュール、Acme::GodoWordを作りました


リンク

これは何?

前に作った統一言語メーカーのコアの部分というか、 統一言語風の文字分解と、統一言語っぽい文字列の生成を行うモジュールです。

使い方

#!perl
# このファイルはUTF-8で保存

use strict;
use warnings;
use utf8;

use Acme::GodoWord;
use Perl6::Say;

# 【あなた」「には」「見えない】と表示される
say Acme::GodoWord->babelize('あなたには見えない');

作った理由

なんとなく。というか統一言語メーカーは作ってみたものの鳴かず飛ばずだったので、 モジュールにすれば多少は注目されるだろうといいことで作ってみました。

ちなみにこのモジュール、統一言語メーカーを作ったときのコアの部分を流用したので、 作成時間は一時間もかかってないと思います。

ぶっちゃけた話コアの部分をコピペしてテスト書いてモジュールとしての体裁を整えただけなので、 たいした作業量ではなかったのですよししょー。

ところで統一言語って何?

前にも統一言語メーカーを作った時にも説明したんですが、 統一言語ってのは奈須きのこ氏の伝奇小説、空の境界 (

空の境界 上  (講談社ノベルス)

空の境界 上 (講談社ノベルス)

空の境界 下 (講談社ノベルス)

空の境界 下 (講談社ノベルス)

) の下巻の第六章、忘却録音に出てくる敵キャラ、黒霧皐月の使う魔術のことです。

まあ正確に言えば魔術ではなく、神に言葉を乱される前の言語、という設定なのですが、 まあそんな細かいところまで気にする人はいないだろうということで、 統一言語は魔術だと言っておきます。

で、結局Acme::GodoWordは何するモジュール?

で、統一言語は作中で、【あなた」「には」「見えない】という感じに表現されているのですが、 Acme::GodoWordではこの統一言語っぽい文字列を生成する、ということをするモジュールという事です。

まあもの自体はたいしたことないと思いますが、IRC botとかTwitter botとかと組み合わせて、 統一言語っぽい言葉をしゃべらせるさっちんもどきbot作れば面白いんじゃないかと思います。

技術的な話

前にも書いた気がするけど、Acme::GodoWordの仕組みとしては、

  1. Text::TinySegmenterでutf8 flag onの日本語文字列を分解
  2. 助詞同士を結合
  3. 助動詞を前の単語にくっつける

という感じです。

まあ言葉にしてみるとシンプルですが、この法則にいたるまでにはそれなりの道のりがあったような気がします。

それとAcme::GodoWordの文字列分解は思いっきりText::TinySegmenterに依存しているので、 Text::TinySegmneterが苦手とする文字列はAcme::GodoWordでもうまく処理できません。

まあ名前空間がAcme::使ってるように、Acme::GodoWordはホビーモジュールなんで、 多少分かち書きに難があっても問題ないと思います。

ちなみに

せっかくAcme::GodoWordを作ったので、あのしょぼさきわまる統一言語メーカーは、 いつの日か作り直したいと思います。まああまりにもしょぼいからウケ無かったというのも考えられるし。

まあモジュール化して誰でも使えるようになったんで、誰かさっちんbotとか作ってみてはどうでしょうか。 意外に受けるやもしれません。

それでは、enjoy !