では次に、PerlからMeCabを使ってみよう。PerlからMeCabを利用するには、次のいずれかのモジュールを用いる。
1)MeCabモジュール
MeCabのサイトで配布されているもの。
2)Text::MeCabモジュール
cpanで配布されているもの。今回はインストールが容易なText::MeCabモジュールを用いる。
cpan install Text::MeCab
としてインストールしてほしい。
Text::MeCabを使って形態素解析をするには、オブジェクトを作り、parseメソッドを呼び出す。
use Text::MeCab;
my $text = 'HTMLを解析し、スクレイピングしたデータを基にグラフ化を行う。';
my $mecab = Text::MeCab->new();
my $result = $mecab->parse($text);
parseした結果、undef値でないなら、解析された形態素分析の結果が存在する。
結果は、すでに示したmecabコマンドと同じ書式となる。タブより左の「表層形(語句そのもの)」は、surfaceメンバで、タブより右側の「カンマで区切られた品詞などの種別」はfeatureメンバで取得できる。
次に示すwhileループ処理をすると、結果を取得できる。
while ($result)
{
my @features = split /,/, $result->feature;
if ($result->surface)
{
print $result->surface . ':' . $features[0] . '/' . $features[1] . '/' . $features[2] . "\n";
}
$result = $result->next;
}
実行結果は、次のようになる。
HTML:名詞/一般/*
を:助詞/格助詞/一般
解析:名詞/サ変接続/*
し:動詞/自立/*
、:記号/読点/*
スクレイピング:名詞/一般/*
し:動詞/自立/*
た:助動詞/*/*
データ:名詞/一般/*
を:助詞/格助詞/一般
基:名詞/一般/*
に:助詞/格助詞/一般
グラフ:名詞/一般/*
化:名詞/接尾/サ変接続
を:助詞/格助詞/一般
行う:動詞/自立/*
。:記号/句点/*
以上で、Webコンテンツをたどり、話題のキーワードの統計を作るための準備が整った。
すべてを合わせて、実際にそのようなプログラムを作ったものがリスト2だ。ここでは、オルタナティブ・ブログの「ブロガー一覧」から、それぞれのブロガー記事を辿り、使われている話題のキーワードを調べていくというものだ。
次ページに示すリスト2の出力結果は、例えば次のようになる。この結果を見るとわかるように、「の」とか「こと」とかが上位に来ているのは、あまり望ましいことではない。
これは、例えば「何文字以下なら除外する」とか「品詞の種類でさらに絞り込む」といった工夫をして、適切なキーワードが出てくるように検討すべきだろう。
<a href='http://www.google.co.jp/search?q=%e3%81%ae&ie=utf-8&oe=utf-8&hl=ja&domains=blogs.itmedia.co.jp&sitesearch=http%3A%2F%2Fblogs.itmedia.co.jp%2F'>の(4683)</a><br>
<a href='http://www.google.co.jp/search?q=%e3%81%93%e3%81%a8&ie=utf-8&oe=utf-8&hl=ja&domains=blogs.itmedia.co.jp&sitesearch=http%3A%2F%2Fblogs.itmedia.co.jp%2F'>こと(4569)</a><br>
…中略…
<a href='http://www.google.co.jp/search?q=%e3%83%93%e3%82%b8%e3%83%8d%e3%82%b9&ie=utf-8&oe=utf-8&hl=ja&domains=blogs.itmedia.co.jp&sitesearch=http%3A%2F%2Fblogs.itmedia.co.jp%2F'>ビジネス(415)</a><br>
<a href='http://www.google.co.jp/search?q=%e5%89%8d&ie=utf-8&oe=utf-8&hl=ja&domains=blogs.itmedia.co.jp&sitesearch=http%3A%2F%2Fblogs.itmedia.co.jp%2F'>前(415)</a><br>
<a href='http://www.google.co.jp/search?q=%e6%8a%80%e8%a1%93&ie=utf-8&oe=utf-8&hl=ja&domains=blogs.itmedia.co.jp&sitesearch=http%3A%2F%2Fblogs.itmedia.co.jp%2F'>技術(413)</a><br>
<a href='http://www.google.co.jp/search?q=%e6%b0%97&ie=utf-8&oe=utf-8&hl=ja&domains=blogs.itmedia.co.jp&sitesearch=http%3A%2F%2Fblogs.itmedia.co.jp%2F'>気(413)</a><br>
<a href='http://www.google.co.jp/search?q=%e6%99%82&ie=utf-8&oe=utf-8&hl=ja&domains=blogs.itmedia.co.jp&sitesearch=http%3A%2F%2Fblogs.itmedia.co.jp%2F'>時(403)</a><br>
<a href='http://www.google.co.jp/search?q=%e4%bb%8a&ie=utf-8&oe=utf-8&hl=ja&domains=blogs.itmedia.co.jp&sitesearch=http%3A%2F%2Fblogs.itmedia.co.jp%2F'>今(396)</a><br>
<a href='http://www.google.co.jp/search?q=%e5%88%a9%e7%94%a8&ie=utf-8&oe=utf-8&hl=ja&domains=blogs.itmedia.co.jp&sitesearch=http%3A%2F%2Fblogs.itmedia.co.jp%2F'>利用(386)</a><br>
Copyright © ITmedia, Inc. All Rights Reserved.