関連記事取得フォーム

タイトル
本文

   

関連記事API

関連記事APIは、全国加盟社のWebページにある地域情報をクロールし、集約、分類、自然言語処理、クラスタリングを行ったデータと、ポストされた記事のタイトルと本文を解析して得られた記事のテーマをマッチングさせ関連する記事を抽出する仕組みです。 デバッグモードを有効にすることで関連記事を特定するために必要な処理結果を見ることができます。これらの機能を使ってブログツールは自動生成されており、「今日のニュースオントロジー」はどのようなワードとひもづけられ構造化されているかの相関関係を見る事が出来ます。これらの技術を総合的に組み合わせたものがThe 47 News 言葉ランキングです。

【重要】
関連記事サーバーのURLがnewsmapから47newsサーバーへ変更となりました。
http://newsmap.kyodo.co.jp/nmap/crawler/related_article.cgi

http://www.47news.jp/cgi-bin/ra/related_article.cgi
皆さんご対応宜しくお願いします

Version 6 仕様ドキュメント

Version 6
bt_maxline2009年09月07日追記
bt_maxline を指定することで関連記事の出力件数を抑制することができます。詳しくは下記の説明をご覧下さい。

Version 5
関連記事に表示しない社を bt_except 変数にて指定できます。2007年11月13日追記
bt_except を指定することで関連記事に表示しない社を半角スペース区切りで指定することができます。詳しくは下記の説明をご覧下さい。

Version 4
2007年11月リリース。Version 3の関連ズーム表示機能に加え47NEWSで導入されている画像・動画の中から関連性の高いものを抽出する関連画像・動画表示機能を追加。
bt_movie を指定することで関連動画表示/非表示を切り替えることができます。詳しくは下記の説明をご覧下さい。

Version 3
2007年9月27日 関連ズーム表示機能を追加しました。
bt_zoom を指定することで関連ズーム表示/非表示を切り替えることができます。詳しくは下記の説明をご覧下さい。

Version 2
2007年5月までのバージョンではCGI POSTで関連記事を取得する方法のみでしたが、今回のバージョンアップ(Ver. 2)ではJavaScriptによる実装が簡単な方法をご用意致しました。
また、各社工夫して頂いている関連記事部分を囲むデコレーション枠もフラグのON/OFFによって付与することができます。(枠ありのサンプル

Version 1
2006年8月リリース。POSTされた記事タイトル、本文を解析し、その中に含まれる重要語の構造をスコアリングした上でその重要語を持つ共同通信記事および加盟社の記事から抽出し関連記事として表示する。現バージョンではCGI POSTによる実装。


設置の手順

1. Flashファイルの設置
47サーバーとの通信用に こちらのFlashファイル(約2KB)をダウンロードしてドキュメントルートに設置して頂く必要がございます。
例えば www.47news.jp というサーバーであれば http://www.47news.jp/47gateway.swf でアクセスできる位置に置いて下さい。
このファイルは加盟社と47NEWSサーバー間の通信を可能とするために必要なもので、このファイルを設置することにより加盟社以外(ブログユーザーなど)による関連記事APIの利用を制限できます。
他のディレクトリや別のファイル名にてswfを置く場合には次の [2. 記事ページへの埋め込み] において bt_flashPath 変数を指定して頂く必要がございます。詳細は下記の説明をご覧下さい。

なお47gateway.swfはウェブブラウザ上でのみ動作し、ブラウザ<—>47NEWSサーバー間でHTTP POSTメソッドによる通信を行うものですので加盟社様側でのポートの開放は必要ございません。

2. 記事ページへの埋め込み
記事ページのHTMLに以下のように直接埋め込んで下さい。
タイトルおよび本文を指定して頂く必要がありますが、その際次のいずれかの方法をお選び下さい。

  [A] HTMLタグで指定する場合
  [B] JavaScriptの変数で指定する場合


[A] HTMLタグで指定する場合 は以下のように関連記事を表示できます。
タイトルを id="bt_title" を指定した任意のタグで囲って下さい。
本文を id="bt_body" を指定した任意のタグで囲って下さい。
<h3 id="bt_title">安明進被告に猶予判決  北朝鮮元工作員、控訴審で</h3>
<p id="bt_body">
 九州厚生局の松嶋賢前局長が社会福祉法人「枚方療育園」(大阪府枚方市)の理事長にホテル代を肩代わりしてもらったとして、厚生労働省は23日、松嶋前局長に対し、約240万円を理事長側に自主返還するよう求めることを決めた。
 同省の聴取に対し、松嶋前局長は「理事長が上京した際、一緒にホテルに宿泊し、代金を肩代わりしてもらった。正確な記憶がないが、相当の回数であることは事実」と答えたという。
 肩代わりの期間が不明なため、同省は国家公務員倫理法が施行された2000年4月から計約60回宿泊したと推定、1回約4万円として総額約240万円の返還を求めることにした。
 松嶋前局長は9月、同法人の前理事長から金品を受け取っていたとして、停職10カ月分の給与相当額である約1063万円を国庫に返納した。
</p>
既存のページから表示を変えないようにするには <span id="bt_body"> ... </span> タグを追加することで囲って下さい。
<br> <p> <img> 等のタグや改行を内側に含んでいても関連記事抽出には影響ありません。

上記のようにタイトルおよび本文をタグで囲って頂いた上で、関連記事を表示したい箇所に以下のソースを貼り付けて下さい。
width: で表示幅を指定できます(width:650pxwidth:100% など)。
<div style="width:650px" id="bt_ra">
 <img src="http://www.47news.jp/cgi-bin/ra/image/indicator.gif" width="16" height="16" alt="ロード中"> 関連記事を取得中...
</div>
<script type="text/javascript">
<!--
// 通信用Flashファイルのパスを指定してください。2007年5月29日追記
// 埋め込むページから 47gateway.swf への相対パスを指定してください。
// bt_flashPath の指定がない場合はサーバールートの /47gateway.swf を探します。
var bt_flashPath = '47gateway.swf'; // ←ページと同じディレクトリに 47gateway.swf がある場合
// 外枠をつけるか否かを bt_deco 変数にて指定することができます。
//   0: 外枠なし [デフォルト](サンプル ソース)
//   1: 外枠あり(サンプル ソース)
var bt_deco = 1;
// 関連ズームを表示するか否かを bt_zoom 変数にて指定することができます。2007年9月27日追記
//  0: ズームなし(サンプル ソース)
//  1: ズームあり [デフォルト](サンプル ソース)
var bt_zoom = 1;
// 関連動画を表示するか否かを bt_movie 変数にて指定することができます。2007年10月23日追記
//  0: 動画なし(サンプル ソース)
//  1: 動画あり [デフォルト](サンプル ソース)
var bt_movie = 1;
// 関連写真を表示するか否かを bt_photo 変数にて指定することができます。2009年1月28日追記
//  0: 写真なし(サンプル ソース)
//  1: 写真あり [デフォルト](サンプル ソース)
var bt_photo = 1;
// 関連記事に表示しない社を bt_except 変数にて指定できます。2007年11月13日追記
//var bt_except = '共同通信'; // サンプル ソース
// 関連記事に出力する件数をbt_maxline 変数にて抑制することができます。2009年09月07日追記
// 0で抑制なし
var bt_maxline = 0 ; 
-->
</script>
<script type="text/javascript" src="http://www.47news.jp/cgi-bin/ra/bt_related_article.js" charset="utf-8"></script>
charset="utf-8" の部分は貼り付けるページの文字コードにかかわらず utf-8 としてください。



[B] JavaScriptの変数で指定する場合 は以下のように関連記事を表示できます。
※ スクリプト変数内での改行はエラーとなりますので bt_title , bt_body ともに改行を含まない一行で書く必要があります。
関連記事を表示したい箇所に以下のソースを貼り付けて下さい。 width: で表示幅を指定できます(width:650pxwidth:100% など)。
<div style="width:650px" id="bt_ra">
 <img src="http://www.47news.jp/cgi-bin/ra/image/indicator.gif" width="16" height="16" alt="ロード中"> 関連記事を取得中...
</div>
<script type="text/javascript">
<!--
var bt_title = '安明進被告に猶予判決  北朝鮮元工作員、控訴審で';
var bt_body = '九州厚生局の松嶋賢前局長が(中略)約1063万円を国庫に返納した。';
// 通信用Flashファイルのパスを指定してください。2007年5月29日追記
// 埋め込むページから 47gateway.swf への相対パスを指定してください。
// bt_flashPath の指定がない場合はサーバールートの /47gateway.swf を探します。
var bt_flashPath = '47gateway.swf'; // ←ページと同じディレクトリに 47gateway.swf がある場合
// 外枠をつけるか否かを bt_deco 変数にて指定することができます。
//  0: 外枠なし [デフォルト](サンプル ソース)
//  1: 外枠あり(サンプル ソース)
var bt_deco = 1;
// 関連ズームを表示するか否かを bt_zoom 変数にて指定することができます。2007年9月27日追記
//  0: ズームなし(サンプル ソース)
//  1: ズームあり [デフォルト](サンプル ソース)
var bt_zoom = 1;
// 関連動画を表示するか否かを bt_movie 変数にて指定することができます。2007年10月23日追記
//  0: 動画なし(サンプル ソース)
//  1: 動画あり [デフォルト](サンプル ソース)
var bt_movie = 1;
// 関連写真を表示するか否かを bt_photo 変数にて指定することができます。2009年1月23日追記
//  0: 写真なし(サンプル ソース)
//  1: 写真あり [デフォルト](サンプル ソース)
var bt_photo = 1;
// 関連記事に表示しない社を bt_except 変数にて指定できます。2007年11月13日追記
var bt_except = '共同通信'; // サンプル ソース
// 関連記事に出力する件数をbt_maxline 変数にて抑制することができます。2009年09月07日追記
// 0で抑制なし
var bt_maxline = 0 ;
-->
</script>
<script type="text/javascript" src="http://www.47news.jp/cgi-bin/ra/bt_related_article.js" charset="utf-8"></script>
charset="utf-8" の部分は貼り付けるページの文字コードにかかわらず utf-8 としてください。

CGI POSTによる投入記事を解析しメタデータを抽出する方法

変数 title に記事タイトルを代入して下さい。
変数 body に記事本文を代入して下さい。
変数 enc には入出力文字コードを指定することが出来ます。指定しない場合はUTF-8として解釈します。
値の指定方法:
 シフトJISなら sjis
 EUC-JPなら euc-jp
 JIS(ISO-2022-JP)なら jis
 UTF-8なら utf-8
のいずれかを指定してください。
変数 debug はPOSTの場合は0を代入して下さい。


【Perlの場合】
#!/usr/bin/perl
use LWP::UserAgent;
$ua = LWP::UserAgent->new;
$ua->timeout(5); # 5秒以内に取得できなければタイムアウトする
$response = $ua->post('http://www.47news.jp/cgi-bin/ra/post.cgi',
  {
    'title' => '北朝鮮船の入港全面禁止へ 政府、追加制裁の方針決定',
    'body' => '政府は11日、北朝鮮が核実験実施を発表したことに対し、北朝鮮籍船舶の日本入港全面禁止や、アサリ、マツタケなど北朝鮮産品の輸入制限など独自の追加制裁措置を講じる方針を決めた。特定船舶入港禁止法や改正外為法に基づく措置で、同日夜の安全保障会議で確認した上で、13日に閣議決定する。 安倍晋三首相は、核実験を実施したとの北朝鮮の発表自体が、核開発放棄を求める国際社会への重大な挑戦と重視。実験実施の事実を最終的に確認しないまま、「総合的な判断」で制裁強化に踏み切る。 政府は、核実験とみられる地震波を観測したことに加え、北朝鮮が核弾頭を搭載可能な弾道ミサイル開発を進めていることや、安倍政権の北朝鮮に対する強硬姿勢に高い世論の支持があることから、追加制裁決定の環境が整ったと判断した。 このほか(1)北朝鮮国籍保有者の新規入国禁止(2)現在日本に停泊中の北朝鮮籍船舶への退去命令−なども盛り込まれる見通し。 政府は7月5日の北朝鮮の弾道ミサイル発射を受て、独自の経済制裁を発動したが、船舶の入港禁止は貨客船「万景峰(マンギョンボン)92」に限っていたほか、入国禁止も北朝鮮政府関係者が対象だった。 ',
    'enc'  => 'utf-8', # 入出力文字コードがUTF-8
    'debug' => '0' # 0:false 1:true
  }
);

if ($response->code == 200) { # 成功
  print $response->content;
} else { # タイムアウトなどのエラー発生
  # エラーの場合の処理を記述
}

【PHPの場合】
<?php
if(!function_exists('http_build_query')) {
  function http_build_query($data,$prefix=null,$sep='',$key='') {
    $ret = array();
    foreach((array)$data as $k => $v) {
      $k = urlencode($k);
      if(is_int($k) && $prefix != null) {
        $k = $prefix.$k;
      }
      if(!empty($key)) {
        $k = $key."[".$k."]";
      }
      if(is_array($v) || is_object($v)) {
        array_push($ret,http_build_query($v,"",$sep,$k));
      } else {
        array_push($ret,$k."=".urlencode($v));
      }
    }
    if(empty($sep)) {
      $sep = ini_get("arg_separator.output");
    }
    return implode($sep, $ret);
  }
}
$query = array(
    'title' => '北朝鮮船の入港全面禁止へ 政府、追加制裁の方針決定',
    'body' => '政府は11日、北朝鮮が核実験実施を発表したことに対し、北朝鮮籍船舶の日本入港全面禁止や、アサリ、マツタケなど北朝鮮産品の輸入制限など独自の追加制裁措置を講じる方針を決めた。特定船舶入港禁止法や改正外為法に基づく措置で、同日夜の安全保障会議で確認した上で、13日に閣議決定する。 安倍晋三首相は、核実験を実施したとの北朝鮮の発表自体が、核開発放棄を求める国際社会への重大な挑戦と重視。実験実施の事実を最終的に確認しないまま、「総合的な判断」で制裁強化に踏み切る。 政府は、核実験とみられる地震波を観測したことに加え、北朝鮮が核弾頭を搭載可能な弾道ミサイル開発を進めていることや、安倍政権の北朝鮮に対する強硬姿勢に高い世論の支持があることから、追加制裁決定の環境が整ったと判断した。 このほか(1)北朝鮮国籍保有者の新規入国禁止(2)現在日本に停泊中の北朝鮮籍船舶への退去命令−なども盛り込まれる見通し。 政府は7月5日の北朝鮮の弾道ミサイル発射を受て、独自の経済制裁を発動したが、船舶の入港禁止は貨客船「万景峰(マンギョンボン)92」に限っていたほか、入国禁止も北朝鮮政府関係者が対象だった。',
    'enc' => 'utf8',
    'debug' => '0'
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.47news.jp/cgi-bin/ra/post.cgi');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 5); //5秒でタイムアウト
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($query));
$data = curl_exec($ch); //$dataに関連記事出力結果が入ります
curl_close($ch);
echo $data;
?>

解析結果
1 <KEYS><KEY>入港全面禁止<SCORE>13</SCORE></KEY><KEY>追加制裁<SCORE>12</SCORE></KEY><KEY>方針決定<SCORE>11</SCORE></KEY><KEY>北朝鮮船<SCORE>10</SCORE></KEY><KEY>北朝鮮<SCORE>9</SCORE></KEY><KEY>核実験<SCORE>8</SCORE></KEY><KEY>北朝鮮籍船舶<SCORE>7</SCORE></KEY><KEY>入港禁止<SCORE>6</SCORE></KEY><KEY>入国禁止<SCORE>5</SCORE></KEY><KEY>実験実施<SCORE>4</SCORE></KEY><KEY>日本入港全面禁止<SCORE>3</SCORE></KEY><KEY>制裁強化<SCORE>2</SCORE></KEY></KEYS> 2 <NAMES><NAME>安倍晋</NAME></NAMES> 3 <GEOS></GEOS> 4 <ORGS></ORGS> 5 <CATEGORIES><CATEGORY>政治-防衛<SCORE>19772</SCORE></CATEGORY><CATEGORY>政治-外交<SCORE>17938</SCORE></CATEGORY><CATEGORY>政治-政府<SCORE>11846</SCORE></CATEGORY><CATEGORY>政治-防衛-核兵器<SCORE>11172</SCORE></CATEGORY><CATEGORY>経済・産業-エネルギー・資源<SCORE>6300</SCORE></CATEGORY><CATEGORY>犯罪・司法-犯罪<SCORE>5900</SCORE></CATEGORY><CATEGORY>経済・産業-金融・サービス業<SCORE>5516</SCORE></CATEGORY><CATEGORY>経済・産業-メディア<SCORE>5290</SCORE></CATEGORY><CATEGORY>政治-国際機関<SCORE>5284</SCORE></CATEGORY><CATEGORY>経済・産業-マクロ経済<SCORE>5178</SCORE></CATEGORY></CATEGORIES> 6 <SUMMARY>政府は11日、北朝鮮が核実験実施を発表したことに対し、北朝鮮籍船舶の日本入港全面禁止や、アサリ、マツタケなど北朝鮮産品の輸入制限など独自の追加制裁措置を講じる方針を決めた。 7 政府は、核実験とみられる地震波を観測したことに加え、北朝鮮が核弾頭を搭載可能な弾道ミサイル開発を進めていることや、安倍政権の北朝鮮に対する強硬姿勢に高い世論の支持があることから、追加制裁決定の環境が整ったと判断した。 8 このほか(1)北朝鮮国籍保有者の新規入国禁止(2)現在日本に停泊中の北朝鮮籍船舶への退去命令−なども盛り込まれる見</S UMMARY><SUMMARY_RATIO>51.0%</SUMMARY_RATIO>

より細かなカスタマイズの手引き

・ロード中である旨を表示する(JavaScript版)
関連記事JavaScript版ではCGI POST版と異なる点として、関連記事抽出の結果を待つことなくページが表示されるようになりました。
そのためページが表示されてから関連記事が表示されるまでに若干のタイムラグがありますが、その際にロード中である旨をユーザーに知らせることができます。
<div id="bt_ra"></div>
このように id="bt_ra" で指定した <div> タグの内側が関連記事で置き換えられますので、ここを利用してロード中と表示させておくことができます。
例えば以下のようなソースになります。
<div style="width:500px" id="bt_ra">
 <img src="http://www.47news.jp/cgi-bin/ra/image/indicator.gif" width="16" height="16" alt="ロード中"> 関連記事を取得中...
</div>
サンプル ソース


・記事解析結果を利用した処理を行う

関連記事の処理過程で抽出された重要語、人名、地名、組織名、IPTCカテゴリ分類結果を他の処理に利用できます。
bt_doLater という変数に関数を代入しておくと、解析が終わったタイミングで bt_semantics という変数に解析結果が入ります。
<h2 id="bt_title">タイトル</h2>
<div id="bt_body">
本文
</div>
<script type="text/javascript>
<!--
var bt_deco = 1;
var bt_doLater = function() {
  alert(bt_semantics);
}
-->
</script>
bt_doLater で指定した関数は関連記事取得後すぐに実行されます。
bt_semantics には以下の5行からなるデータが入ります。
<KEYS><KEY>安明進被告<SCORE>11</SCORE></KEY><KEY>猶予判決北朝鮮<SCORE>10</SCORE></KEY><KEY>工作員<SCORE>9</SCORE></KEY><KEY>控訴審<SCORE>8</SCORE></KEY><KEY>理事長<SCORE>7</SCORE></KEY><KEY>理事長側<SCORE>6</SCORE></KEY><KEY>厚生労働省<SCORE>5</SCORE></KEY><KEY>九州厚生局<SCORE>4</SCORE></KEY><KEY>国家公務員倫理法<SCORE>3</SCORE></KEY><KEY>給与相当額<SCORE>2</SCORE></KEY></KEYS>
<NAMES><NAME>松嶋賢</NAME></NAMES>
<GEOS><GEO>大阪府 大阪府枚方市  34.8143397222222  135.650658055556</GEO><GEO>大阪府 枚方  34.8143397222222  135.650658055556</GEO><GEO>福岡県 九州  33.8833422222222  130.874968333333</GEO></GEOS>
<ORGS><ORG>労働省</ORG></ORGS>
<CATEGORIES><CATEGORY>政治-政府<SCORE>1516</SCORE></CATEGORY><CATEGORY>犯罪・司法-犯罪<SCORE>1352</SCORE></CATEGORY><CATEGORY>犯罪・司法-裁判<SCORE>1192</SCORE></CATEGORY><CATEGORY>政治-外交<SCORE>556</SCORE></CATEGORY><CATEGORY>経済・産業-金融・サービス業<SCORE>356</SCORE></CATEGORY><CATEGORY>経済・産業-マクロ経済-貿易<SCORE>348</SCORE></CATEGORY><CATEGORY>教育-学校<SCORE>292</SCORE></CATEGORY><CATEGORY>健康-病院・診療所<SCORE>260</SCORE></CATEGORY><CATEGORY>経済・産業-メディア<SCORE>260</SCORE></CATEGORY><CATEGORY>社会-家族<SCORE>220</SCORE></CATEGORY></CATEGORIES>
それぞれ以下を表します。
<KEYS> ... </KEYS>   ←   重要語とそのスコア
<NAMES> ... </NAMES>   ←   人名
<GEOS> ... </GEOS>   ←   地名
<ORGS> ... </ORGS>   ←   組織名
<CATEGORIES> ... </CATEGORIES>   ←   IPTCカテゴリとそのスコア

サンプル ソース