WordPressの記事本文に書いたテキスト情報を自動で解析して、自動で周辺のお店情報を出す例


以下は、WordPressの記事本文に書いたテキスト情報を自動で解析して、自動で周辺のお店情報を出す例です。

行っている手順は以下の通りです。
(1)
WordPressの記事本文に書いた情報(the_content内)を、Yahoo!デベロッパーネットワークの提供している日本語形態素解析WebAPIでWordPressの記事本文の中のテキスト情報を形態素解析して名詞のみを抽出。
(2)
その抽出した名詞をコンテンツジオコーダAPIに渡して分析して地域名を抽出。(1)で最も頻度の高い名詞で、かつ、地域名と認識されたキーワードの住所と緯度経度情報を抽出。
(3)
(2)で抽出した緯度経度情報をリクエストパラメーターとして、ローカルサーチAPIに渡して、レスポンスフィールドとして、Yahooロコに登録している、その緯度経度情報から二点間距離で近い順で上位20件のお店情報を、記事本文の後に自動で出力表示。

ということをWordPressのテーマやプラグインとして、簡単に実装してみました。
(このブログでは、出力例なので、is_single()関数で条件分岐して、他の記事には出ずに、この記事のみに適用されるようにしています。)

なお、この記事は、WordPress Advent Calendar 2011の24日目の記事として、明日に記事を公開する予定の「WordPressをCMS以上のツールとして使うための、外部のWebAPIと連携させてコンテンツをより彩る方法について。」のサンプル例として書いています。
詳しい解説などは、また明日!

例文スタート。
———-
例文:
昨日は、ネスト赤羽IT勉強会があって、久しぶりに赤羽駅で降りました。私がネスト赤羽に入居していた頃には無かった駅ビルのようなものが出来ていてビックリ!
ネスト赤羽IT勉強会の勉強会内容は、「WordPress」についてでした。WordPressというツールがあることを知って、とても使いやすそう!と思いました。
勉強会の後はいつものようにネスト赤羽の周辺で懇親会があって参加しました。他のIT系の方々と知り合えて情報交換ができて、とても有意義でした。
ありがとうございまいた!
———-
例文終わり。
 
 
ネスト赤羽に近いお店20件

(1)の出力
ネスト赤羽
赤羽駅
駅ビル
勉強会
内容
ツール
懇親会
など

(2)の出力
住所:
東京都北区赤羽1丁目59-9
緯度経度:
139.72009131,35.78291319

(3)の出力
以下の通り。


Warning: simplexml_load_file(): php_network_getaddresses: getaddrinfo failed: No address associated with hostname in /home/users/2/communitycom/web/wp3/wp-content/themes/commu/z-api-yahoo-local-kaiseki-20111221.php on line 69

Warning: simplexml_load_file(http://search.olp.yahooapis.jp/OpenLocalPlatform/V1/localSearch?appid=gTva40Cxg678qp5QaTl29fws2le08HbvkWK7hRbzSDAICo9jQEtvwRRU3PVqGRfJHA8vGcWt&lat=35.782914&lon=139.720092&sort=dist&dist=50&results=20&cid=132c700e0ebf5a1d386e9b725d7d1e6b): failed to open stream: php_network_getaddresses: getaddrinfo failed: No address associated with hostname in /home/users/2/communitycom/web/wp3/wp-content/themes/commu/z-api-yahoo-local-kaiseki-20111221.php on line 69

Warning: simplexml_load_file(): I/O warning : failed to load external entity "http://search.olp.yahooapis.jp/OpenLocalPlatform/V1/localSearch?appid=gTva40Cxg678qp5QaTl29fws2le08HbvkWK7hRbzSDAICo9jQEtvwRRU3PVqGRfJHA8vGcWt&lat=35.782914&lon=139.720092&sort=dist&dist=50&results=20&cid=132c700e0ebf5a1d386e9b725d7d1e6b" in /home/users/2/communitycom/web/wp3/wp-content/themes/commu/z-api-yahoo-local-kaiseki-20111221.php on line 69

Fatal error: Uncaught Error: Call to a member function attributes() on bool in /home/users/2/communitycom/web/wp3/wp-content/themes/commu/z-api-yahoo-local-kaiseki-20111221.php:80 Stack trace: #0 /home/users/2/communitycom/web/wp3/wp-content/themes/commu/single.php(35): include() #1 /home/users/2/communitycom/web/wp3/wp-includes/template-loader.php(106): include('/home/users/2/c...') #2 /home/users/2/communitycom/web/wp3/wp-blog-header.php(19): require_once('/home/users/2/c...') #3 /home/users/2/communitycom/web/wp3/index.php(17): require('/home/users/2/c...') #4 {main} thrown in /home/users/2/communitycom/web/wp3/wp-content/themes/commu/z-api-yahoo-local-kaiseki-20111221.php on line 80