モジュール

2012.01.27

レマタイザの改変

■ Lemma.pm

レマタイザ(lemma.pl)はどのようなサーバ環境でも簡便に利用できる点で CGI スクリプトにとっては大変有用なツールといえる。しかし残念なことにいくらか問題(参照)もあるようだ。

こうした点に対処すべくスクリプトを改変する過程でモジュール化も行なってみた。作成したモジュール Lemma.pm の使用法は次の通り。

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.