以前の記事でtwitterのタイムラインを取得して音声出力するという記事を書いただが、音声出力させるまでの過程の中で、ひらがなに変換する必要があり、Yahoo日本語形態素解析を利用して変換していた。
よくかんがえたら、このYahoo日本語形態素解析は他にも使うことがあるかもしれないということで、標準入力(STDIN)からうけとったテキストをひらがなに変換するだけのPerlスクリプトを、覚え書きがわりにつくった。
#!/usr/bin/perl -wT
undef %ENV;
use strict;
use Encode;
use LWP::Simple;
use XML::DOM;
my $yahoo_id = '';
my $api_url = 'http://jlp.yahooapis.jp/MAService/V1/parse?appid=%s&sentence=%s&results=ma';
my $txt = <STDIN>;
my $url = sprintf($api_url, $yahoo_id, &enc($txt));
my $xml = get($url);
my $kana = &xml2kana($xml);
print $kana."\n";
sub enc($) {
my $str = shift;
$str =~ s/([^\w ])/'%'.unpack('H2', $1)/eg;
$str =~ tr/ /+/;
return $str;
}
sub xml2kana($) {
my $xml = shift @_;
my $parser = new XML::DOM::Parser;
my $doc = $parser->parse ($xml);
my $list = $doc->getElementsByTagName('reading');
my @kana;
for (my $i=0; $i<$list->getLength; $i++) {
my $text = $list->item($i)->getFirstChild->getNodeValue;
push @kana, $text;
}
return encode_utf8(join("/", @kana));
}
使い方
- 任意の文章が記述されたテキストファイルを用意する。ここでは、test.txtというファイル名で「日本語文を形態素に分割します」という文章が保存されている。
- 上記のソースを任意のファイル名で保存して実行権限をつける。今回はtext2kana.plというファイル名にした。
- YahooアプリケーションIDを取得して10行目に記入する。
- 必要な各種Perlモジュールをインストールする。
- 以下のようなコマンドを実行。パスは環境に合わせて変更すること。
実行例
$ cat test.txt | ./text2kana.pl にほんご/ぶん/を/けいたいそ/に/ぶんかつ/し/ます/。/
Yahoo日本語形態素解析では、単純に分かち書きをすることも可能なので、ブログのタグクラウドを自動的に生成したりなど、いろいろと使い途があるかもしれない。
ところで
先日ご紹介した弊社サービスに関するプレスリリースが、いくつかのメディアに掲載されました。