相関スコアからグラフ図作成

 さて、マージして得られたポスターの相関スコアから、各ポスターを中心にした相関グラフを作成しました。今回はポスターの相関ごとに異なるスコアが与えられているので、上位n位までを出力するという前回のアルゴリズムは使えないので、スコアを利用する場合のために新たな出力メソッドを考えました。
 今回考えたアルゴリズムでは、まず中心から出力する相関先をn個と定め、その相関先のさらに先を出力するときに、何個のノードを作成するかを制御するようにしました。
 中心から出力する相関先n個のスコアを見て、それらが大きく分散しないとき、相関先n個は中心に関連するものの集合と考え、その相関先のさらに先がどこに繋がっているかのほうが大事だと思い、さらに先に出力するノード数をn-1個としながら出力していくようにしました。
 また逆に、相関先n個のスコアが大きく分散するとき、それらは中心への関連度が低いものの集合と考え、さらに先に相関しているものをなるべく多く知りたいと考え、さらに先に出力するノード数を減らさずに、探索する深さを減らしながら出力していくようにしました。
 このように設計したメソッドをRubyで実装したのが以下のスクリプトです。再帰的に利用する部分のみ表示しています。またこの中では、中心から生成されたエッジについてのみ、スコアの上昇に一番関係したMeSHワードを表示するようにしました。
 このプログラムから出力されたノードは、中心のものは太い黒線で囲んで表され、相関先のものについては中心からの距離が近いほど大きく濃い青で示され、距離が遠いほど小さく薄い青で示されます。