このページでは、kizAPIを使ってある言葉の関連語を取得する方法を紹介します。
kizAPIとは
kizAPIとは、kizasi.jpというブログ検索サイトが提供しているWeb APIです。機能としては、ある言葉に関連する言葉を取得したり、今話題になっている言葉を取得できたりします。利用規約はここの最下部「利用規約」にあるので、利用する場合はあらかじめご確認ください。
関連語の取得
下記index.htmlをブラウザで表示すると、「sho」に関連する言葉が表示されます。依存モジュールとしてjQueryとjquery.xdomainajax.jsを利用しています。jquery.xdomainajax.jsはクロスドメイン対策で利用しています。ここからダウンロードして下さい。
<!-- index.html --> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>kizAPI</title> </head> <body> <h1>Terms</h1> <div id="terms"></div> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <script src="js/jquery.xdomainajax.js"></script> <script src="js/kizapi.js"></script> <script src="js/index.js"></script> </body> </html>
kizAPIにアクセスしているのがkizapi.jsです。引数で渡した検索語の関連語を取得できます。
// js/kizapi.js /** * @fileOverview kizapi API */ (function(global) { 'use strict'; var kizapi = { /** * 関連語を取得する * @param {string} key 検索語 * @param {string} span '24':1日, '1w':1週間 or '1m':1月 * @return {object} レスポンス * @property {string[]} terms 関連語 */ getRelatedTerms: function(key, span) { var defer = $.Deferred(); if (this._reqFlag && this._reqId.abort) { this._reqId.abort(); } this._reqFlag = true; var that = this; this._reqId = $.ajax({ type: 'GET', url: 'http://kizasi.jp/kizapi.py', data: { span: span, kw_expr: key, type: 'coll' } }).done(function(data, statusText, jqXHR) { var xml = data.results[0]; var json = $.parseXML(xml); var terms = []; $(xml).find('channel').find('item').each(function() { var item = $(this).text(); var items = item.split(/\r?\n/g); var term = items[1].trim(); terms.push(term); }); defer.resolve({ terms: terms }); }).always(function() { that._reqFlag = false; }); return defer.promise(); }, _reqId: {}, _reqFlag: false }; if ('process' in global) { module.exports = kizapi; } global.kizapi = kizapi; }((this || 0).self || global));
kizAPIを呼び出しているのがindex.jsです。検索語「sho」の関連語を画面に表示しています。
// js/index.js $(function() { var key = 'sho'; kizapi.getRelatedTerms(key, '1m').done(function(data) { var html = ''; var terms = data.terms; for (var i = 0, len = terms.length; i < len; i++) { html += '<span>' + terms[i] + '</span>;'; } $('#terms').html(html); }); });
関連語取得サービス
上記のモジュールを利用して作ったのが「ke」です。「ke」は検索したいキーワードの関連語を表示してくれます。
感想
以上、いろいろなWebAPIを試してみて、何に活用できるかを考えるのは楽しいですね。