この前はYahoo!の「日本語係り受け解析」を使って簡単な構文解析をしてみたので,今度は「ウェブ検索」と「日本語形態素解析」を使った簡単なキーワード抽出をしてみる.
今回も言語はPHP(初心者ぺちぱーですw).
大まかな処理の流れは以下.
本当に簡単なキーワード抽出なので,別に有用な語が取れるわけではないし,精度が良いわけでもない点はご了承を.
- -
動作例として,索引語「"福田康夫"」でキーワードを抽出してみる.
検索するドメインは,なんとなくasahi.comで,取得検索件数は30件にした.
以下に取得結果の一部の載せておきます.
◎総取得キーワード数:404個
[キーワード] => 個数
- -
[福田康夫首相] => 25
[辞任] => 12
[自民党総裁選] => 9
[辞意表明] => 4
[閣僚人事] => 3
[退陣] => 3
[辞任表明] => 3
[政権投げ出し] => 3
[解散] => 3
[背水の陣内閣] => 2
[太田昭宏代表] => 2
[中曽根康弘元首相] => 2
[安倍晋三前首相] => 2
[安心実現内閣] => 2
- -
念のため言っておくと,Titleを加工せず形態素解析の対象にしてるので,[asahi]と[com]というキーワードが毎回出力されるけど,不要なら適当に除去すればOK.
まぁ抽出された総キーワード数が404個もあるし,中には意味不明なキーワードもあるけど,
- 1文字のキーワードは削除
- 数字のみのキーワードは削除
あたりを行えば,大体消えると思う.
特に画期的な手法は使わず,ただ単に名詞(と接頭辞)を連結しただけだけど,このレベルのキーワード抽出ならできるんだよーということ.
- -
ソースはこんな感じで.
<?php $apiid = "アプリケーションID"; $text = '"索引語"'; $result = 取得件数(〜50件); $url = "http://search.yahooapis.jp/WebSearchService/V1/webSearch?appid=". $apiid."&query=".urlencode($text)."&results=".$result."&site=www.asahi.com"; $xml = simplexml_load_file($url); //print_r($xml); //アウトプットを確認したいときにコメントアウト $results = $xml->Result; $i=0; foreach ($results as $result) { $query = $result->Title."。".$result->Summary; $url_m = "http://jlp.yahooapis.jp/MAService/V1/parse?appid=".$apiid."&sentence=".urlencode($query); $xml_m = simplexml_load_file($url_m); $words = $xml_m->ma_result; foreach($words as $word){ $morphemes = $words->word_list->word; foreach($morphemes as $morpheme){ if($morpheme->pos == "名詞" || $morpheme->pos == "接尾辞"){ $str[$i] = $str[$i].$morpheme->surface; }else{ $i++; } } } } foreach($str as $noun){ $num[$noun]++; } arsort($num); print_r($num); ?>
こんなところでーす.
- -