本ドキュメントははてなダイアリーにおける、『はてなキーワード連想語API』の実装を解説するものです。主にはてなスタッフがその作成と更新を行っています。
キーワードのリストを送信すると、はてなダイアリーのキーワードデータベースと照合し、関連するキーワードを返信するAPIです。
APIはXML-RPC APIを用いて実装を行っており、メソッド名および指定可能な各属性は、以下の通りです。
- uri
- http://d.hatena.ne.jp/xmlrpc
- encoding
- utf8
- methodName
- hatena.getSimilarWord
- parameters
- 以下を参照
- wordlist(array): はてなキーワードを配列で指定します。
このAPIを用いてやり取りを行った場合のサンプルは以下のようになります。
<?xml version="1.0" encoding="UTF-8"?> <methodCall> <methodName>hatena.getSimilarWord</methodName> <params> <param> <value> <struct> <member> <name>wordlist</name> <value> <array> <data> <value> <string>Hatena</string> </value> <value> <string>Perl</string> </value> </data> </array> </value> </member> </struct> </value> </param> </params> </methodCall>
<?xml version="1.0" encoding="UTF-8"?> <methodResponse> <params> <param> <value> <struct> <member> <name>wordlist</name> <value> <array> <data> <value> <struct> <member> <name>word</name> <value><string>wordpress</string></value> </member> </struct> </value> <value> <struct> <member> <name>word</name> <value><string>大文字</string></value> </member> </struct> </value> <value> <struct> <member> <name>word</name> <value><string>インタプリタ</string></value> </member> </struct> </value> <value> <struct> <member> <name>word</name> <value><string>開発者</string></value> </member> </struct> </value> <value> <struct> <member> <name>word</name> <value><string>Larry Wall</string></value> </member> </struct> </value> <value> <struct> <member> <name>word</name> <value><string>リスト</string></value> </member> </struct> </value> <value> <struct> <member> <name>word</name> <value><string>日記</string></value> </member> </struct> </value> <value> <struct> <member> <name>word</name> <value><string>システム</string></value> </member> </struct> </value> <value> <struct> <member> <name>word</name> <value><string>言語</string></value> </member> </struct> </value> <value> <struct> <member> <name>word</name> <value><string>OS</string></value> </member> </struct> </value> <value> <struct> <member> <name>word</name> <value><string>レポート</string></value> </member> </struct> </value> <value> <struct> <member> <name>word</name> <value><string>スクリプト</string></value> </member> </struct> </value> <value> <struct> <member> <name>word</name> <value><string>処理系</string></value> </member> </struct> </value> <value> <struct> <member> <name>word</name> <value><string>はてな</string></value> </member> </struct> </value> <value> <struct> <member> <name>word</name> <value><string>移植</string></value> </member> </struct> </value> <value> <struct> <member> <name>word</name> <value><string>プログラミング言語</string></value> </member> </struct> </value> </data> </array> </value> </member> </struct> </value> </param> </params> </methodResponse>
外部アプリケーションにおいて、あるキーワードに対して関連キーワードを取得するサンプルスクリプトは以下のようになります。
#!/usr/bin/perl use strict; use warnings; use encoding 'utf8'; use XMLRPC::Lite; my $res = XMLRPC::Lite ->new ->proxy('[]http://d.hatena.ne.jp/xmlrpc[]') ->call( 'hatena.getSimilarWord', { wordlist => [ 'Hatena', 'Perl' ] }); if ( my $fault = $res->fault ) { warn "$_ => $fault->{$_}" for ( keys %$fault ); } else { print $_->{word},"\n" for ( @{$res->result->{wordlist}} ); } exit;
#!/usr/bin/env ruby $KCODE = "u" require "xmlrpc/client" server = XMLRPC::Client.new("d.hatena.ne.jp", "/xmlrpc") result = server.call("hatena.getSimilarWord", { "wordlist" => %w[ Hatena Ruby ] }) puts result['wordlist'].map {|v| v['word'] }.join(', ')
任意のテキストに対するはてなキーワードの抽出は、はてなキーワード自動リンクAPIをご利用ください。