この記事の目的
- 前回投稿した、arxivデータを利用したトピック解析について、せっかくなので可視化をやった結果の紹介です。
- ついでに、hep(high energy physics)分野のトピック(論文カテゴリー)の投稿数がどのように変化したのかを時間軸で見ていきたいと思います。
- LDAモデルの可視化をやってみたい人向け
トピック解析とは
前の記事で詳しく書いたが、要は大量の文章を、話題(トピック)ごとに自動で分類するように解析すること。学習モデルが作れてしまえば、未知の文章に対しても適切にトピックを振れるようになる。
今回私が解析に使ったデータ元のarxivとは、世界最大の論文投稿プラットフォームである。だれでもAPI経由で投稿された論文のタイトルや要約、著者などの情報を取得できる。
前回の記事では、LDAモデルを使って、hepカテゴリーの論文の過去30年分のデータを学習させるところまでやった。
以下では、得られたモデルを使った可視化を行う。
参考にした記事様
- LDA学習:LDAとそれでニュース記事レコメンドを作った。
- LDAの可視化:LDAによるトピック解析 with Gensim
トピックの可視化
トピック分析の利点の一つとして、事前情報無しに文章のトピックを自動生成できる点が挙げられる。これにより、投稿された論文からどのような分野が形成されているのか調べられる。
問題は、その各トピックが何を意味するのか人間が理解しやすい形で可視化することである。
有名な方法としてWord Cloud
という、各トピックを特徴づける単語を図示するという手法がある。よくビックデータの解析のイメージ図で出てくる絵である。from wordcloud import WordCloud
をして、次のように簡単に生成できる。
# WordCloud
x = dict(lda_model.show_topic(topic_num, 30))
image = WordCloud(
background_color='black',
color_func=color_func,
max_words=400,
width=300, height=300,
random_state=0
).generate_from_frequencies(x)
lda_model
が前回学習させたモデルでtopic_num
が注目しているtopicのidである。
例えば、今回だと次のような図が現れる。
一つの四角が一つのトピックに相当している。右上を見ると、ノーベル賞受賞にもつながったニュートリノ振動のトピックが見えていたり、左下にはAxion関連の用語が出ていたりと、割と体感に合うような結果が出ている。
上に挙げた図の他にもstring theory
などhepの分野ごとのトピックが生成されていた。
個人的に不思議だったのが、超対称性SUSYを表すトピックが出ていなかったことである。おそらく、一時期流行りすぎたせいで、より細かなトピックに細分されてしまって表に出ていないだけかもしれない。
トピックごとの、論文投稿数の年次データ
トピックの特性が大体わかったので、次はそれを使って論文投稿数の時間変化を眺めていきたい。
というのも、この解析を始めた動機の一つが、自分の分野が今どれくらい流行っているのか知りたい、というものだったからである。
例として、次の4つのトピックの投稿数の年度ごとの棒グラフを並べてみた。縦軸が1年あたりの投稿数で、横軸が年度。
キャプションは、先のword cloudから目立った用語を拾ってきたものであり、トピックを大まかに表している。
このグラフは見方によっては結構面白くて、例えば2010年を過ぎた辺りからHiggs
が激増しているのは、2012年にHiggs粒子が発見された影響なのではと思われたりする。
とはいえ、Arxiv自体が使われ始めた時期もあるので、流行り廃りを見るなら投稿数ではなく投稿割合を見たほうが適切かもしれない。
この手の図を自動で生成するwebアプリを作ると、一部界隈に需要があるかもしれない。
# 今後の展望
今回、ざっとうまく分類できた例を見せたが、Word cloudにはよくわからない分類をされているTopicなども存在していた。(review論文や総説に対応するTopic?)
結果を見つつ、前処理を工夫したほうがいいかもしれない。
またトピック分類に関して、時代とともに使われている用語が変わったりするので、本当は30年分全部をやるのではなく、最近の5年分で学習してから、過去のデータを分類する、といった使い方をしたほうが、適切に時間変化を把握できる可能性がある。
このあたりの改善は今後の課題としたい。