カラクリスタ

「輝かしい青春」なんて失かった人のブログ

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 !

成果物 #Perl - #2010-04 #2010-04-19