
レマタイザ(lemma.pl)はどのようなサーバ環境でも簡便に利用できる点で CGI スクリプトにとっては大変有用なツールといえる。しかし残念なことにいくらか問題(参照)もあるようだ。
こうした点に対処すべくスクリプトを改変する過程でモジュール化も行なってみた。作成したモジュール Lemma.pm の使用法は次の通り。
use Lemma;
### 英語で Lemma.pm を使う場合
$result = Lemma::sparse_tostr($lines);
@words = split(/\n/,$result);
while(@words){
$token = shift(@words);
print "$token\n";
}
$lines には分析対象となる英語文字列が入る。lemma.pl と同一作者による sentseg.pl(センテンス・セグメンタ)の内容を取り込み、文末に「EOS」を入れる仕様にしてある。語数計算機能などは削除した。Lemma.pm 内のサブルーチンは現時点では sparse_tostr だけなので、与えられた文字列の語をレンマ化し、文末に EOS を入れた値(文字列)を返してくるということしか出来ない。
文末マーカー(EOS)を入れることには「同一文内での共起」を調べる際に有効利用できるという利点がある。
とりあえずモジュールとして機能させるには「package 宣言」「サブルーチンの記述」「1;」の三要素が必須となる。
package Lemma;
sub sparse_tostr{
$lines = shift;
#-------------------------------
# 具体的なレンマ化処理
#-------------------------------
return $lemma_results;
}
1;
$lines = shift の部分で CGI スクリプトから送られて来る変数の内容を受け取り、return で処理結果を返している。
上記のようにモジュールの内部構成を認識すれば Lemma::sparse_tostr() は Lemma.pm 内にあるサブルーチン sparse_tostr{} に () 内の値を送る、という意味だとわかる。
モジュール作成については以下のサイトなどが参考になる。
>> 楽:技林ブログ
>> Kihara's home
上記モジュールは以下の CGI スクリプトで使用した。
>> tptb サンプル版
使用法などについてはこちらで簡単な説明をしている。
Copyright(c)2005-2012 ccoe@mac.com Allrights reserved.