naoki iimura
amatu****@users*****
2007年 2月 28日 (水) 01:55:51 JST
いいむらです。 On 2/27/07, Tadamasa Teranishi <yw3t-****@asahi*****> wrote: > MeCab はそもそもタブを通しません(タブと空白を区別しない)でしたね。 > なので、区切り記号にタブを使うと前処理なしで何とかなりそうです。 > > $ echo -e "filename.jpg 1024バイト" | > mecab -F "%M\t" -U "%M\t" -E "\n" | perl -e 'my $text = <>; > while($text =~ s/([\x00-\x7f])\t([\x00-\x7f])/\1\2/sg){} > $text =~ s/\t/ /sg; print $text;' なるほど! こんなことができるのですね。参考になります。 POPFile もタブと空白を区別していないので、この方法は使えそうです。 ただ、もともとタブで区切られた場所があった場合(例えば "abc\tdef" のような)、 区切りが消えてしまう("abcdef" になってしまう)ようです。 タブの置換処理のところを s/([\x00-\x08\x0a-\x7f])\t([\x00-\x08\x0a-\x7f])/\1\2/sg とすれば大丈夫ですが、これだとタブのところが空白 2 つになってしまいますね。 そこで、とりあえず、 echo -e "\tこれはfilename.jpgに含まれています。ABC\tabc\t\tdef 漢字" | mecab -F "%M\t" -U "%M\t" -E "\n" | perl -e 'my $text=<>; $text=~s/([\x00-\x08\x0a-\x7f])\t(?=\t*[\x00-\x08\x0a-\x7f])/\1/g; $text=~s/\t/ /sg; print $text;' としてみることにしました。 -- naoki iimura (amatubu) e-mail: amatu****@mac***** web: http://amatubu.skr.jp/ diary: http://d.hatena.ne.jp/amatubu/ fingerprint: 1435 5892 86B7 D465 6DBF DFD2 71E1 1AB3 F63F DF62