NLP(自然言語処理)研究者をスコアリングしてみた

IR研究者をスコアリングしてみた - 睡眠不足?!
http://d.hatena.ne.jp/sleepy_yoshi/20090215/p1


この記事を読んでNLP分野ではどうだろう、と思ったのでやってみました。
対象とした会議は2001年~2008年のACLとEMNLPです(年によっては他会議との併設含む)。
cf. DO++: 自然言語処理の学会 http://hillbig.cocolog-nifty.com/do/2008/04/post_fe44.html

ACL anthologyから以下のページを利用してデータを取得

ACL: http://www.aclweb.org/anthology-new/P/P08/ (2008年の場合。08の部分を変えれば他の年が見られる)
EMNLP: http://www.aclweb.org/anthology-new/sigdat.html

評価方法

冒頭のIR研究者のスコアリングの場合と同様で、登場回数と著者順位による重みづけによる二つの方法を用いました。
「登場回数は名前が出れば1回とカウント」、「著者順位重みづけは1st authorの重要度をそれ以外の著者よりも重くしてスコアづけ」(複数人の著者がいる場合は1st authorを0.8として、残りの0.2を他の著者に分配、1人の場合は1とする)です。
また、Short PaperやPoster, Workshopなどは対象外としました。

コード

書いたコードは下の通り。名前の表記揺れがいくつかあったので「大文字」+.(ピリオド)は除去してカウントしたりして(例: "Christopher D. Manning" => "Christopher Manning")、最後に手作業で補完しました。

$KCODE = 'u'
require 'rubygems'
require 'nokogiri'
require 'open-uri'

#ACLの論文著者名を取得
def acl_authours
  authors = []
  (1 .. 8).each do |y|
    doc = Nokogiri::HTML(open("http://www.aclweb.org/anthology-new/P/P0#{y}/"))
    (doc/'p').each do |i|
      num = (i/'a').first.inner_text.scan(/\d{4}$/).to_s.to_i
      if num > 1000 && num < 2000
        next if (i/'b').inner_text.split(//).size < 1
        authors << (i/'b').inner_text.gsub(/(\.)[^ ]/) {$1 + ' '}.gsub('', "'").gsub(/\(.+?\) /, '').gsub(/ {2,}/, ' ').gsub(/[A-Z]\. /, '').split('; ')
      end
    end
    sleep 3
  end
  authors
end

#EMNLPの論文著者名を取得
def emnlp_authors
  authors = []
  doc = Nokogiri::HTML(open("http://www.aclweb.org/anthology-new/sigdat.html"))
  (doc/'li').each do |i|
    num = (i/'a').first.inner_text.scan(/(\d+)-/).to_s.to_i
    if num >= 1 && num <= 8
      next if (i/'b').inner_text.split(//).size < 1
      authors << (i/'b').inner_text.gsub(/([a-z]{2,}|\.)([A-Z])/) {$1 + ' ' + $2}.gsub('', "'").gsub(/ {2,}/, ' ').gsub(/[A-Z]\. /, '').split('; ')
    end
  end
  authors
end

#フラットな配列を引数に取りカウント
def count_authors(authors)
  cnt = Hash.new(0)
  authors.each do |i|
    cnt[i] += 1
  end
  cnt.to_a.sort {|a, b| b[1] <=> a[1]}
end

#配列の配列を引数に取りスコアを分配
FIRST_AUTHOR_SCORE = 0.8
def devide_score(authors)
  score = Hash.new(0)
  authors.each do |i|
    if i.size == 1
      score[i.shift] += 1 
    else
      score[i.shift] += FIRST_AUTHOR_SCORE
      rest_score = (1 - FIRST_AUTHOR_SCORE) / i.size
      i.size.times do |t|
        score[i.shift] += rest_score 
      end
    end
  end
  score.to_a.sort {|a, b| b[1] <=> a[1]}
end

if __FILE__ == $0
  p count_authors((acl_authours + emnlp_authors).flatten)
  p devide_score((acl_authours + emnlp_authors))
end

結果

登場回数順(10回以上)
名前 登場回数 URL
1 Christopher D. Manning 26 http://nlp.stanford.edu/~manning/
2 Dan Klein 21 http://www.cs.berkeley.edu/~klein/
2 Daniel Marcu 21 http://www.isi.edu/~marcu/
4 Mark Johnson 20 http://www.cog.brown.edu/~mj/
5 Hwee Tou Ng 18 http://www.comp.nus.edu.sg/~nght/
6 Ming Zhou 16 http://research.microsoft.com/en-us/people/mingzhou/
6 Mirella Lapata 16 http://homepages.inf.ed.ac.uk/mlap/
8 Eduard Hovy 15 http://www.isi.edu/natural-language/people/hovy.html
8 Regina Barzilay 15 http://people.csail.mit.edu/regina/
10 Jianfeng Gao 14 http://research.microsoft.com/en-us/um/people/jfgao/
10 Jun'ichi Tsujii 14 http://www-tsujii.is.s.u-tokyo.ac.jp/~tsujii/
10 Kevin Knight 14 http://www.isi.edu/~knight/
10 Michael Collins 14 http://people.csail.mit.edu/mcollins/
14 Jason Eisner 13 http://www.cs.jhu.edu/~jason/
15 James R. Curran 12 http://www.cs.usyd.edu.au/~james/
15 Jian Su 12 http://www1.i2r.a-star.edu.sg/~sujian/
15 Yuji Matsumoto 12 http://cl.aist-nara.ac.jp/staff/matsu/home-e.html
15 Noah A. Smith 12 http://www.cs.cmu.edu/~nasmith/
19 Chew Lim Tan 11 http://www.comp.nus.edu.sg/~tancl/
19 Eugene Charniak 11 http://www.cs.brown.edu/people/ec/
19 Hideki Isozaki 11 http://www.kecl.ntt.co.jp/icl/kpro/isozaki/index.html
22 Claire Cardie 10 http://www.cs.cornell.edu/home/cardie/
22 Daniel Gildea 10 http://www.cs.rochester.edu/~gildea/
22 Hermann Ney 10 http://www-i6.informatik.rwth-aachen.de/web/Staff/ney/index.html
22 Kristina Toutanova 10 http://nlp.stanford.edu/kristina/
22 Miles Osborne 10 http://www.iccs.inf.ed.ac.uk/~miles/
22 Ryan McDonald 10 http://ryanmcd.googlepages.com/index.html
22 Stephen Clark 10 http://www.cl.cam.ac.uk/~sc609/index.html
22 Yang Liu 10 http://www.hlt.utdallas.edu/~yangl/
スコア順(有効数字4桁, 4.000以上)
名前 スコア URL
1 Jianfeng Gao 8.417 http://research.microsoft.com/en-us/um/people/jfgao/
2 Mark Johnson 7.523 http://www.cog.brown.edu/~mj/
3 Vincent Ng 6.600 http://www.hlt.utdallas.edu/~vince/
4 Michael Collins 6.233 http://people.csail.mit.edu/mcollins/
5 Daniel Marcu 6.117 http://www.isi.edu/~marcu/
6 Jason Eisner 6.100 http://www.cs.jhu.edu/~jason/
7 Daniel Gildea 6.067 http://www.cs.rochester.edu/~gildea/
8 Dan Klein 5.983 http://www.cs.berkeley.edu/~klein/
9 Noah A. Smith 5.867 http://www.cs.cmu.edu/~nasmith/
10 Kristina Toutanova 5.567 http://nlp.stanford.edu/kristina/
11 Ryan McDonald 5.333 http://ryanmcd.googlepages.com/index.html
12 Regina Barzilay 5.167 http://people.csail.mit.edu/regina/
13 James R. Curran 5.100 http://www.cs.usyd.edu.au/~james/
14 Gerald Penn 4.900 http://www.cs.toronto.edu/~gpenn/
14 Stephen Clark 4.900 http://www.cl.cam.ac.uk/~sc609/index.html
16 Libin Shen 4.800 http://www.libinshen.net/
16 Xiaofeng Yang 4.800 http://www1.i2r.a-star.edu.sg/~xiaofengy/
17 David Chiang 4.700 http://www.isi.edu/~chiang/
18 Rada Mihalcea 4.692 http://www.cse.unt.edu/~rada/
19 Yang Liu 4.687 http://www.hlt.utdallas.edu/~yangl/
20 Hwee Tou Ng 4.583 http://www.comp.nus.edu.sg/~nght/
21 Hal Daumé III 4.300 http://www.cs.utah.edu/~hal/
21 Michel Galley 4.300 http://www-nlp.stanford.edu/~mgalley/
23 Robert C. Moore 4.183 http://research.microsoft.com/en-us/people/bobmoore/
24 Jun Suzuki 4.167 http://www.cs.umb.edu/~jxs/
25 Julia Hockenmaier 4.000 http://www.cs.uiuc.edu/homes/juliahmr/
25 Jun'ichi Kazama 4.000 http://www2.nict.go.jp/x/x161/member/kazama_junichi/index.html
25 Shane Bergsma 4.000 http://www.cs.ualberta.ca/~bergsma/

最後に

URLは適当なものではない可能性があります。
Christopher D. Manning先生が書かれた教科書は輪講などでも広く使われています。
http://nlp.stanford.edu/fsnlp/
Dan Klein先生の担当されている授業の資料などは誰でも見ることができます。
http://www.cs.berkeley.edu/~klein/cs288/sp09/


がんばります。