• 締切済み

対比較データを表データに変換

3つのロボット(Robot: R1, R2, R3)が有する機能(Function: F1, F2, F3)の有無を調べたいと考えています。 (1)元データのファイルが3つ(R1, R2, R3)あります。 (2)(1)の3ファイルを対比較して得た(同じ機能を意味する異なる単語を対応づけた)データのファイルが3つ(R1vsR2, R2vsR3, R1vsR3)あります。 (3)(2)の3ファイルを元に、ロボット(R1, R2, R3)の機能(F1, F2, F3)の有無(1, 0)を示した表を、最終的に得たいのです。 質問:Perlを用いて、(2)の対比較データを(3)の表データに変換にはどうすればよろしいでしょうか? (1)元データ R1,watch,hear,speak R2,look,listen R3,kiku,hanasu (2)対比較して得たデータ R1,R2 watch,look hear,listen R2,R3 listen,kiku R1,R3 hear,kiku speak,hanasu (3)最終的に得たい表データ RF,F1,F2,F3 R1, 1, 1, 1 R2, 1, 1, 0 R3, 0, 1, 1 または、(機能F1,F2,F3をそれぞれ単語watch,hear,speakで代表させて) RF,watch,hear,speak R1, 1, 1, 1 R2, 1, 1, 0 R3, 0, 1, 1 (補足) 以下の機能一覧の情報は未知とします。 見る F1: watch,look,miru 聞く F2: hear,listen,kiku 話す F3: speak,talk,hanasu

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

要するに, (2) のファイルから「それぞれの機能を表す単語」がわかればいい (もしくは, 個々の単語がどの機能に対応するかがわかればいい) ってことですね. グラフ理論の言葉を使えば簡単に書けるけどなぁ. 各単語を「頂点」とし, 同じ機能を表す単語同士を「辺」でむすんだグラフを考えます. これは (2) のファイルから作ることができます. このグラフ上の連結成分は「機能」を表すことになるので, R1~R3 のもつ「単語」から「機能」に変換すればいいということになります. がんばってハッシュなんかを作れば, それほど難しくないような気がします.

ebmokwave
質問者

お礼

ありがとうございました。このような作業(グラフ等)を行ってくれる、Perlスクリプトのサンプル、またはフリーのソフト(R等)をご存知でしょうか?

ebmokwave
質問者

補足

ありがとうございます。この問題を解くのに有用な参考文献(類似の問題が解説されている、サンプルスクリプトが掲載されている、ウェブサイトや参考書)をご存知でしたらご教授ください。

関連するQ&A