CVPRの論文タイトルの頻出単語と可視化
コンピュータビジョン分野の査読つき国際会議であるCVPR(Conference on Computer Vision and Pattern Recognition)の論文題名を
http://www.cvpapers.com/
から取得し、その変遷をRのtmモジュールを使い分析、可視化してみました。
CVPR2007からCVPR2013までの論文タイトルが対象となります。
2014/12/9追記
http://colinlea.com/guides/cvpr2013.html
では本文の単語を用いたトピックモデルで論文が分類された結果を見ることが出来ます。
NIPS,ICMLのものもあります。
for i in `seq 2007 2013`;do wget http://www.cvpapers.com/cvpr${i}.html done
scrapingは以下のようにしました。
grep '<dt>' $1 |sed 's/<[^>]*>//g'|sed 's/(.*PDF.*)//g' > $2
(タイトル部分のみ抽出し、(PDF)などの不要な文字列を削除しました。)
library(tm) library(Snowball) gencorpus <- function(dat,stemn=T){ corpus <- Corpus(DataframeSource(data.frame(as.character(dat[,1])))) corpus <- tm_map(corpus, removePunctuation) corpus <- tm_map(corpus, tolower) corpus <- tm_map(corpus, stripWhitespace) corpus <- tm_map(corpus, function(x) removeWords(x,stopwords("english"))) if(stemn==T){ corpus <- tm_map(corpus, stemDocument) } tdm <- TermDocumentMatrix(corpus) ap.m <- as.matrix(tdm) ap.v <- sort(rowSums(ap.m),decreasing=TRUE) ap.d <- data.frame(word = names(ap.v),freq=ap.v) } gencorpus.fromfile <- function(fname,stemn=T){ dat <-read.csv(fname,col.names=F,sep="\n") gencorpus(dat,stemn) }
英単語のstemming, stop wordsの削除などを行っています。
years<-(2007:2013) for( i in years ){ cvlist[[i]]<-gencorpus.fromfile(paste("cvpr",i,"_title.txt",sep=""))} for( i in years ){ colnames(cvlist[[i]])<-c("word",i)} for( i in years ){ tot<-sum(cvlist[[i]][,2]) cvlist[[i]]<-cbind(cvlist[[i]],cvlist[[i]][,2]/tot)} for( i in years ){ colnames(cvlist[[i]])<-c("words",i,paste("rate",i,sep=""))} cvlrate<-cvlist[[years[1]]][-2] for( i in years[-1] ){ cvlrate<-merge(cvlrate,cvlist[[i]][,-2],all=T)} cvlrate<-cvlrate[with(cvlrate,order(-cvlrate[,2])),] cvlrate[is.na(cvlrate)]<-0 coefs<-c() for(i in 1:nrow(cvlrate)){r<-lm(as.data.frame(cbind(years,t(cvlrate[i,-1]))));coefs<-c(coefs,r$coefficients[2])} cvlrate<-as.data.frame(cbind(cvlrate,coefs)) #出現回数の少ない語の削除 calczeros<-function(a){p=0;for(i in 2:(length(a)-1)){p=p+(a[[i]]==0.)};p} znum<-data.frame() for(i in 1:nrow(cvlrate)){znum<-rbind(znum,calczeros(cvlrate[i,]))} cvlrate.mt3<-cvlrate[which(znum<4),] cvlrate<-cvlrate[with(cvlrate,order(-cvlrate$cc)),] for(i in 1:nrow(cvlrate)){r<-lm(as.data.frame(cbind(years,t(cvlrate[i,-1]))));coefs<-c(coefs,r$coefficients)}
出現頻度は総単語数で規格化した値になります。
総数3064語 big dataというほどではありません。概要、全文を用いればトピックモデルなどを用いてより詳細な解析ができるかもしれません。
- CVPR2013での出現回数上位の単語
words | rate2007 | rate2008 | rate2009 | rate2010 | rate2011 | rate2012 | rate2013 | cc |
imag | 0.0256 | 0.0312 | 0.0341 | 0.0309 | 0.0382 | 0.0277 | 0.0245 | -45.4917 |
learn | 0.0123 | 0.0201 | 0.0194 | 0.0154 | 0.0175 | 0.023 | 0.0228 | 388.176 |
detect | 0.0113 | 0.0096 | 0.019 | 0.0158 | 0.0118 | 0.0166 | 0.0179 | 331.8485 |
object | 0.0184 | 0.0158 | 0.0143 | 0.0171 | 0.0128 | 0.0155 | 0.0169 | -315.6493 |
model | 0.0189 | 0.0204 | 0.0167 | 0.0161 | 0.0157 | 0.0162 | 0.0159 | -933.1417 |
use | 0.0184 | 0.0254 | 0.0182 | 0.0217 | 0.0185 | 0.0115 | 0.0152 | -316.6366 |
recognit | 0.0154 | 0.0145 | 0.0131 | 0.0151 | 0.0121 | 0.0139 | 0.0146 | -594.1153 |
video | 0.0056 | 0.0056 | 0.006 | 0.0079 | 0.01 | 0.0095 | 0.0099 | 981.8036 |
segment | 0.0123 | 0.0145 | 0.0083 | 0.0115 | 0.01 | 0.0098 | 0.0099 | -593.2248 |
via | 0.0056 | 0.0068 | 0.006 | 0.0053 | 0.0064 | 0.0105 | 0.0083 | 782.5329 |
estim | 0.0056 | 0.0096 | 0.0103 | 0.0089 | 0.0078 | 0.0101 | 0.0083 | 414.1751 |
visual | 0.0072 | 0.0068 | 0.0052 | 0.0069 | 0.0075 | 0.0084 | 0.0079 | 1205.6288 |
track | 0.0118 | 0.013 | 0.0075 | 0.0079 | 0.0103 | 0.0084 | 0.0079 | -633.2044 |
scene | 0.0036 | 0.0053 | 0.0048 | 0.0076 | 0.0068 | 0.0098 | 0.0076 | 878.8559 |
structur | 0.0077 | 0.0046 | 0.0052 | 0.0056 | 0.0082 | 0.0074 | 0.0076 | 678.7717 |
spars | 0 | 0.0012 | 0.0032 | 0.0049 | 0.0078 | 0.0064 | 0.0076 | 659.9667 |
human | 0.0041 | 0.0065 | 0.006 | 0.0046 | 0.0053 | 0.0037 | 0.0076 | 378.7 |
motion | 0.0092 | 0.0114 | 0.0083 | 0.0069 | 0.0078 | 0.0064 | 0.0069 | -955.5507 |
discrimin | 0.0041 | 0.0059 | 0.0048 | 0.0039 | 0.0039 | 0.0068 | 0.0066 | 892.8704 |
pose | 0.0026 | 0.0056 | 0.0052 | 0.0036 | 0.0053 | 0.0037 | 0.0066 | 735.3733 |
use,viaなどはstop wordでは除去されませんでしたが、その他の単語は分野特有のものと言えそうです。この中ではvideo,visual,scene,discmiminationなどの言及が多くなってきているようです。
- 単語出現頻度の変遷
3年分以上出現した単語の頻度の変動を線形回帰でfittingし、上昇率の高いもの順にソートしました。
words | rate2008 | rate2009 | rate2010 | rate2011 | rate2012 | rate2013 | cc |
handl | 0.000619 | 0.000397 | 0.000657 | 0.000713 | 0.000676 | 0.000662 | 11754.562549 |
auxiliari | 0 | 0 | 0.000328 | 0.000357 | 0.000338 | 0.000331 | 10287.960558 |
extens | 0 | 0 | 0.000328 | 0.000357 | 0.000338 | 0.000331 | 10287.960558 |
product | 0 | 0 | 0.000328 | 0.000357 | 0.000338 | 0.000331 | 10287.960558 |
epitom | 0.000309 | 0.000397 | 0.000328 | 0.000357 | 0.000338 | 0.000331 | 9561.668921 |
vari | 0.000309 | 0.000397 | 0.000328 | 0.000357 | 0.000338 | 0.000662 | 8951.218631 |
grammar | 0 | 0 | 0.000328 | 0.000357 | 0.000338 | 0.000662 | 7906.299359 |
reidentif | 0 | 0 | 0.000328 | 0.000357 | 0.000338 | 0.000662 | 7906.299359 |
superpixel | 0.000309 | 0 | 0.000328 | 0.000357 | 0.000338 | 0.000662 | 7620.173933 |
groupwis | 0 | 0.000397 | 0 | 0.000357 | 0.000338 | 0.000331 | 7425.987594 |
imagenet | 0 | 0.000397 | 0 | 0.000357 | 0.000338 | 0.000331 | 7425.987594 |
convolut | 0.000309 | 0.000397 | 0.000657 | 0.000357 | 0.000676 | 0.000662 | 7216.027657 |
leverag | 0 | 0 | 0.000328 | 0.000357 | 0.000676 | 0.000662 | 6773.2128 |
egocentr | 0 | 0 | 0.000328 | 0.000713 | 0.000338 | 0.000662 | 5884.774022 |
fisher | 0 | 0 | 0.000657 | 0.000357 | 0.000338 | 0.000331 | 5360.434432 |
spheric | 0 | 0 | 0.000657 | 0.000357 | 0.000338 | 0.000331 | 5360.434432 |
relationship | 0 | 0.000397 | 0.000328 | 0 | 0.000676 | 0.000662 | 5325.600243 |
link | 0.000309 | 0.000397 | 0.000328 | 0.000713 | 0.000338 | 0.000331 | 5273.502525 |
quantiz | 0.000309 | 0 | 0.000328 | 0.000357 | 0.000338 | 0.000993 | 5153.547134 |
topic | 0.000619 | 0.000397 | 0.000328 | 0.000357 | 0.000676 | 0.000993 | 5120.518252 |
intrins | 0.000309 | 0.000397 | 0.000657 | 0.00107 | 0.000676 | 0.000993 | 5048.845481 |
crfs | 0.000309 | 0 | 0.000328 | 0 | 0.000676 | 0.000662 | 5025.904292 |
network | 0.000619 | 0.00119 | 0.000985 | 0.000713 | 0.001014 | 0.001324 | 5017.29978 |
unlabel | 0 | 0.000397 | 0.000328 | 0.000357 | 0 | 0.000662 | 4911.436736 |
consensus | 0.000619 | 0.000397 | 0.000328 | 0.000357 | 0.000338 | 0.000662 | 4840.023755 |
wild | 0 | 0.000397 | 0.000328 | 0 | 0.000676 | 0.000331 | 4832.980156 |
partbas | 0 | 0.000397 | 0 | 0.000357 | 0.000338 | 0.000993 | 4731.53994 |
confid | 0.000309 | 0 | 0.000328 | 0.000357 | 0 | 0.000662 | 4572.652372 |
hand | 0.000309 | 0 | 0.000328 | 0 | 0.000676 | 0.000331 | 4499.789422 |
window | 0.000309 | 0 | 0.000328 | 0 | 0.000676 | 0.000331 | 4499.789422 |
出現頻度が1桁台のものが多いため分散が大きいのですが、以下のような傾向が読み取れます。
- handle,extension,auxiliaryなど割合一般的な単語が上昇率が高いようです。
- productは製品という意味と積という意味があるので、分離が必要かもしれません。
- grammar,superpixel,egocentricなどは特筆すべき単語かと思われます。
- link, relationship, networkなどは似たような意味で、関係性に関する研究が多くされていることを示しているようです。
- imagenetはdatasetの名称です。利用している人が多くなっているのだと思います。
- fisherはfisher計量、fisher情報量のことかと思われます。
- crfsはConditional Random Fieldの略かと思われます。
最後にWordCloud化したものです。
stemming前版
単語の見栄えは良いですが単数、複数が重複したりしてしまっています。
CVPR2013
CVPR2012
stemming後版
語幹だけになってしまっています。
CVPR2013
CVPR2012
library(tm) library(wordcloud) library(RColorBrewer) source("gencorpus.R") wcimage <- function(imagename,ap.d){ pal2 <- brewer.pal(8,"Dark2") png(imagename, width=1280,height=800) wordcloud(ap.d$word,ap.d$freq, scale=c(8,.2),min.freq=3, max.words=Inf, random.order=FALSE, rot.per=.15, colors=pal2) dev.off() } genwc <- function(dat,imagename,stemn){ cp <- gencorpus(dat,stemn) wcimage(imagename,cp) } genwc.fromfile <- function(fname,imagename,stemn=T){ dat <-read.csv(fname,col.names=F,sep="\n") genwc(dat,imagename,stemn) }
Reference
こちらのコードを参考にしました。というかほとんど同じです。