スポンサーリンク

YAHOO形態素解析APIで抽出したキーワードでAmazon商品検索

WEBアプリ
スポンサーリンク

マッシュアップ

2つの投稿でAmazon APIとYAHOO形態素解析 APIの事を学んだので、マッシュアップ(何かカッコいい響き!)させてみた。

日本語形態素解析でTwitterの内容を解析して潜在的ニーズを掴んでみよう
潜在的ニーズを掴みたい 以下のような事を書きました。 ツイッターで呟いている内容そのものがもしウインドーショッピングで見かけたら気になってちょっと見てしまう程度の物がどんな物であるかに...
Amazon APIを使ってワクワクしながらショッピングをしたい
便利よりワクワクしたい! インターネットが普及して、世の中がドンドン便利になっていると思いませんか? その中でも、一番かもしれないと思っちゃうのがAmazon。もうとにかく便利。買い物する...

最後に抽出した名詞をキーワードにしてAmazon上で検索した結果を表示している。

「趣味で色々なAPIや画像処理を使ったWEBアプリケーションを作って公開しています。」だと、「公開」なんて言葉を抽出してしまうのか、まぁ当たり前だけど。一般的な名詞は省いてキーとなりそうな名詞だけを使って検索に使いたいなぁ。それができれば、あとはTwitterとマッシュアップ(もはや言いたいだけ)して、完成だな。

<?php
//ここからYAHOO
//アプリケーションIDのセット
$id = "アプリケーションID";
//形態素解析したい文章
$word = "趣味で色々なAPIや画像処理を使ったWEBアプリケーションを作って公開しています。";
//URLの組み立て。名詞だけを抽出している。
$url = "http://jlp.yahooapis.jp/MAService/V1/parse?appid=" . $id . "&results=ma&ma_filter=9&sentence=" . urlencode($word);
//戻り値をパースする
$parse = simplexml_load_file($url);
//戻り値(オブジェクト)からループでデータを取得する
foreach($parse->ma_result->word_list->word as $value){
    //抽出した名詞を「/」で区切って表示
    echo $value->surface;
    echo "/";
}

//ここからAmazon
// Access Key ID と Secret Access Key は必須です
$access_key_id = 'Access Key ID';
$secret_access_key = 'Secret Access Key';
$AssociateTag='findelight-22';//←これを追加

// RFC3986 形式で URL エンコードする関数
function urlencode_rfc3986($str)
{
    return str_replace('%7E', '~', rawurlencode($str));
}

// 基本的なリクエストを作成します
// - この部分は今まで通り
$baseurl = 'https://ecs.amazonaws.jp/onca/xml';
$params = array();
$params['Service']        = 'AWSECommerceService';
$params['AWSAccessKeyId'] = $access_key_id;
$params['Version']        = '2011-08-01';
$params['Operation']      = 'ItemSearch'; // ← ItemSearch オペレーションの例
$params['SearchIndex']    = 'Books';
$params['Keywords']       = $value->surface;     // 最後に抽出した名詞をキーワードにする。
$params['AssociateTag']=$AssociateTag;//自分のアソシエイトIDを追加
$params['ResponseGroup']='Medium';//取得したい情報の種類に合わせ追加

// Timestamp パラメータを追加します
// - 時間の表記は ISO8601 形式、タイムゾーンは UTC(GMT)
$params['Timestamp'] = gmdate('Y-m-d\TH:i:s\Z');

// パラメータの順序を昇順に並び替えます
ksort($params);

// canonical string を作成します
$canonical_string = '';
foreach ($params as $k => $v) {
    $canonical_string .= '&'.urlencode_rfc3986($k).'='.urlencode_rfc3986($v);
}
$canonical_string = substr($canonical_string, 1);

// 署名を作成します
// - 規定の文字列フォーマットを作成
// - HMAC-SHA256 を計算
// - BASE64 エンコード
$parsed_url = parse_url($baseurl);
$string_to_sign = "GET\n{$parsed_url['host']}\n{$parsed_url['path']}\n{$canonical_string}";
$signature = base64_encode(hash_hmac('sha256', $string_to_sign, $secret_access_key, true));

// URL を作成します
// - リクエストの末尾に署名を追加
$url = $baseurl.'?'.$canonical_string.'&Signature='.urlencode_rfc3986($signature);

$amazon_xml=simplexml_load_string(@file_get_contents($url));//XMLをオブジェクトに代入
foreach((object) $amazon_xml->Items->Item as $item_a=>$item){//ここに注目
    $title=$item->ItemAttributes->Title;//商品名
    $detail=$item->DetailPageURL;//商品のURL
    $image=$item->MediumImage->URL;//画像のURL
    print '<div style="clear:both;"><a href="'.$detail.'" target="_blank"><img src="'.$image.'" align="left" />'.$title.'</a></div>';
    unset($item);
}
echo "<br>";
?>
<!-- Begin Yahoo! JAPAN Web Services Attribution Snippet -->
<a href="http://developer.yahoo.co.jp/about">
<img src="http://i.yimg.jp/images/yjdn/yjdn_attbtn1_125_17.gif" title="Webサービス by Yahoo! JAPAN" alt="Web Services by Yahoo! JAPAN" width="125" height="17" style="margin:15px 15px 15px 15px"></a>
<!-- End Yahoo! JAPAN Web Services Attribution Snippet -->
WEBアプリ
スポンサーリンク
スポンサーリンク
良いなと思ったら、シェアしてください
このブログをフォローする
Findelight

コメント