2008年、Webは文字列解析で変わっていくまとめサイト2.0(6/8 ページ)

» 2007年12月28日 10時44分 公開
[大澤文孝,ITmedia]

PerlからMeCabを使う

 では次に、PerlからMeCabを使ってみよう。PerlからMeCabを利用するには、次のいずれかのモジュールを用いる。

1)MeCabモジュール

 MeCabのサイトで配布されているもの。

2)Text::MeCabモジュール

 cpanで配布されているもの。今回はインストールが容易なText::MeCabモジュールを用いる。


cpan install Text::MeCab

としてインストールしてほしい。

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.

注目のテーマ