Text::MeCab 0.09

http://d.hatena.ne.jp/lestrrat/20060711#1152640821
Text::MeCab 0.09をアップロードしたとのことなので、早速CPANからダウンロードしてRPMパッケージを作ってインストールしてみました。

気になる点

処理速度の問題はほぼ無くなったのですが、気になった点がいくつかあります。

make時のワーニング

make時に次のようなワーニングがでました。

MeCab.xs: In function ‘pmecab_clone_node’:
MeCab.xs:105: warning: comparison is always false due to limited range of data type
MeCab.c: In function ‘XS_Text__MeCab__Node_id’:
MeCab.xs:324: warning: unused variable ‘sv’
MeCab.c: In function ‘XS_Text__MeCab__Node_length’:
MeCab.xs:336: warning: unused variable ‘sv’
MeCab.c: In function ‘XS_Text__MeCab__Node_rlength’:
MeCab.xs:348: warning: unused variable ‘sv’
MeCab.c: In function ‘XS_Text__MeCab__Node_feature’:
MeCab.xs:364: warning: unused variable ‘sv’
MeCab.c: In function ‘XS_Text__MeCab__Node__Cloned_id’:
MeCab.xs:588: warning: unused variable ‘sv’
MeCab.c: In function ‘XS_Text__MeCab__Node__Cloned_length’:
MeCab.xs:600: warning: unused variable ‘sv’
MeCab.c: In function ‘XS_Text__MeCab__Node__Cloned_rlength’:
MeCab.xs:612: warning: unused variable ‘sv’
MeCab.c: In function ‘XS_Text__MeCab__Node__Cloned_feature’:
MeCab.xs:628: warning: unused variable ‘sv’
MeCab.c: In function ‘XS_Text__MeCab__Node__Cloned_surface’:
MeCab.xs:640: warning: unused variable ‘sv’
MeCab.c: In function ‘XS_Text__MeCab__Node__Cloned_enext’:
MeCab.xs:678: warning: unused variable ‘node’
MeCab.xs:677: warning: unused variable ‘sv’
MeCab.c:1053: warning: unused variable ‘self’
MeCab.c: In function ‘XS_Text__MeCab__Node__Cloned_bnext’:
MeCab.xs:689: warning: unused variable ‘node’
MeCab.xs:688: warning: unused variable ‘sv’
MeCab.c:1077: warning: unused variable ‘self’
MeCab.c: In function ‘XS_Text__MeCab__Node__Cloned_prev’:
MeCab.xs:701: warning: unused variable ‘head’
MeCab.c: In function ‘XS_Text__MeCab_xs_new’:
MeCab.xs:218: warning: ‘argv’ may be used uninitialized in this function
parse_wakati.pl

parse_wakati.plが普通にインストールされてしまいます。

blib/lib/Text/parse_wakati.pl

toolsディレクトリに置いた方が良いのではないかと思います。

MeCabのバージョン番号の出力

Text::MeCab->newするとMeCabのバージョン番号等が出力されてしまいます。

version == 0.92, len = 0
argv[0] = --output-format-type=wakati

MeCab.xsで出力するようになっていますね。デバッグ時の残骸でしょうか?

        PerlIO_printf(PerlIO_stdout(), "version == 0.92, len = %d\n", len);
        for (i = 0; i < len; i++) {
            PerlIO_printf(PerlIO_stdout(), "argv[%d] = %s\n", i, argv[i]);
        }


実害は最後のものだけなので、パッチを書いて対応できますが、どうなんでしょうか。

ベンチマーク

こんな結果がでました。

$ perl tools/benchmark.pl
             Rate      mecab text_mecab
mecab      23.9/s         --       -86%
text_mecab  175/s       633%         --

見方がよくわからなかったのでBenchmarkのマニュアルを読んでみました。cmptheseは遅いものから速いものへとソートされると書いてあるので、Text::MeCabの方が6倍速いということで良いのでしょうか。