Yahoo APIの形態素解析(文書の構成を解析する)をPHPから使ってみる。
サンプル > 実行してみる
$Y_APPID = ""; //yahoo api 開発ID
$sentence = "テスト文書について、形態素解析をかけることでキーワードを抽出してみる。";
$POST_REQUEST = "appid={$Y_APPID}&results=ma&sentence=".urlencode($sentence);$defaults = array(
CURLOPT_POST => 1,
CURLOPT_HEADER => 0,
CURLOPT_URL => "http://jlp.yahooapis.jp/MAService/V1/parse",
CURLOPT_FRESH_CONNECT => 1,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_FORBID_REUSE => 1,
CURLOPT_TIMEOUT => 0,
CURLOPT_POSTFIELDS => $POST_REQUEST
);
$ch = curl_init();
curl_setopt_array($ch, $defaults);
$res = curl_exec($ch);
curl_close($ch);
$xml = simplexml_load_string($res);
$WordsArray = array();
$WordsHashToWord = array();
foreach ($xml->ma_result->word_list->word as $cur){
if($cur->pos == "名詞"){
@$WordsArray[md5($cur->surface)]++;
@$WordsHashToWord[md5($cur->surface)] = $cur->surface;
}
}
arsort($WordsArray);
$i = 1;
echo("<ol>");
foreach($WordsArray as $w=>$n){
echo("<li>{$WordsHashToWord[$w]}[{$n}]</li>");
if($i++ >= 10) break;
}
echo("</ol>");
公式サンプルはGETだけど、長さ制限があるので、CURLを利用してPOSTしている。
最初に入力された文書をYahooに解析してもらって、品詞を登場頻度の多い順に表示する。
例えば、先日のSimpleHTML DOM Parserで拾ったHTMLのBODYを形態素解析して品詞の多い順に解析すれば、ページのキーワード傾向を調べることが出来る。
先日から色々紹介しているPHPサンプルだが、共用レンタルサーバだとモジュール不足で使えないことも多いので、VPSの利用をお勧めしたい。
(496)