問題:第一著者の所属を数える

ある学会(FIT2005)の発表はどの大学(所属)が多いかを数え、ランキングを付ける。

背景:神奈川工科大学の頑張りを客観的に判断したかった

神奈川工科大学の FIT2005 という学会での発表件数が、14件と大検討していました。 実際にこれは他の大学と比べて、どの位置に占めるのだろうという疑問が湧いてき ました。これを調べたいうというのが動機です。

手順1:講演リストを手に入れる

[データの入手]

まず始めに講演リストを手に入れる必要があります。そのために、FITの ホームページの 一般公演プログラムをブラウザに表示し、テキストエディタにコピー&ペー ストすることで入手しました。もっと効率の良い入手方法があるかも知れません が、 入手するのは一度きり なので、ここに時間を書けても仕方がありません。ですので、これで良し とします。

後で気づいたのですが、 所属索引というものがありました。これも良さそうなのですが、リストに含 まれる所属で分けてあるようです。ですから3人の所属が異なる発表があった時、 3箇所に記述されています。ですので、今回の目的にはそぐわなそうです。

手順2:第一著者を取り出すプログラムを書く

[解析]

研究は複数人で行なわれることが あるため、発表論文には複数の人の名前が書かれています。そして、基本的に第 一著者(一番最初に名前が書かれている人)が書き、発表します。

全ての共同研究者が同一の所属であれば良いのですが、そうでない場合も少なく ありません。ですから、ここでは第一著者の所属を数えることにします。そのた めには第一著者を見つけるプログラムを書かなくてはいけません。そして、第一 著者を求めるためにはデータがどのような形式になっているか調べる、つまりデー タの規則性を見つけなくてはいけません。

9月8日(木) 15:00〜17:30 3号館3階 3300教室 
 5Sセッション [コンピュータシステム] 座長  吉永 努 (電通大) 
C-022  H8マイクロコンピュータを用いた小型バッテリーアナライザの試作
◎鈴木太朗・野木兼六・五百蔵重典(神奈川工科大) 
C-023  マルチボディモデルによる多関節ロボットアームのシミュレーション設計法
○佐藤宏明・高津戸 稔(岩手大)・池田千恵(富士通エフ・アイ・ピー)・柏葉安兵衛・田山典男(岩手大) 
C-024  ウィンドウの透視化と輝度低下機能を持つマルチウィンドウシステムの評価
◎宮崎 仁(岡山県大)・茅野 功(川崎医療短大)・佐藤洋一郎・横川智教・早瀬道芳(岡山県大) 
C-025  (講演取消) 
C-026  リソース融通のためのサーバ移送機構の試作
◎木場雄一・善明晃由・木村哲郎・吉田英樹(東芝) 
C-027  ATAディスク適用ストレージ向け高信頼化技術の開発(1);ATAディスク高信頼化対策
◎新井政弘・中川 豊・松並直人(日立)・八木沢育哉 
C-028  ATAディスク適用ストレージ向け高信頼化技術の開発(2); データインテグリティ向上技術
◎中川 豊・新井政弘・松並直人・八木沢育哉(日立) 

どうやら講演者は、行頭に○または◎で始まっている行に書かれていて、所 属は括弧で囲まれているようです。第1著者と第2著者(以降)の著者の所属が 同じ場合は、第1著者の所属は省略され、それ以降の人の所属が同じ人に所属が 書かれている。ようです。結論からいうと、一番最初に括弧で囲まれている文字 が第一著者の所属のようです。

[プログラム化]

日本語というのは割と厄介で、正規表現を使って、括弧にうまく照合させること ができませんでした。本来ならば、日本語の交じった正規表現の使い方を学習す る必要があります。しかし、それは時間がかかりそうなので、データの方を変更 することにしました。具体的には、エディタ(emacs)で、括弧"(...)"を "<<...>>"に置換しました。

後は以下の正規表現を書けば取り出すことができます。

  • 行頭に○または◎がある行を処理する
  • 最初に"<<...>>"で囲まれた文字を取り出す。
注意点としては、"<<...>>"を取り出す時に、最短一致で取り出すことです。正 規表現のデフォルトである最長一致で取り出すと、不具合が置きます。具体例と して以下の文字列を考えると、赤い文字の部分に照合してしまいます。
人名1<<大学名1>>・人名2<<大学名2>>
取り出すことができたら、後は読み込み部分と、数えあげ部分、表示部分を作る だけです。ここでは省略して、最終的に出来上がったプログラムを以下に示しま す。
#!/usr/bin/perl

while ( <> ) {
    if ( m/^○/ || m/^◎/ ) {
	$count{$1} += 1 if m/<<(.*?)>>/;
    }
}

foreach $key (keys %count) {
    print "$count{$key}	$key\n";
}

実際には、この結果を並べ変えるために、この実行結果に対して"sort -r -n"というフィルタプログラムを通しています。

実行結果:神奈川工科大学の健闘ぶりを見る

データはこちらに置いておきます。著作権は情報 処理学会にあると思われますので、不正な利用はしないで下さい。計算結果の 最初の12行は以下に示します。神奈川工科大学は8位タイであることが分かりま した。
49	早大
27	北大
25	立命館大
21	東大
21	電機大
15	農工大
15	NEC
14	東北大
14	電通大
14	神奈川工科大
14	慶大
14	NTT
計算結果のすべてはこちらに置いておきます。

反省:今後のために

講演者の行を取り出す時に、正規表現で「行頭に○または◎がある行」としま した。○または◎は、講演者を表しています。「第一著者=講演者」とは限ら ないので、この正規表現では、数え洩れが少しありました(あると思います)。

誤差は少しあるようですが、神奈川工科大学の発表者件数の健闘ぶりは十分分かっ たので、ここで終了としました。