見出し画像

量子コンピュータの論文スクレイピングしてみました!

論文スクレイピング方法をしてみましたので、備忘録ついでに本記事にて共有させていただきます。
一点注意点としては、作成したコードは、ネットにあるコードを参照させていただきながら、継ぎ接ぎで作ったフランケンシュタインみたいなコードですので、よくわからない書き方をしているかもしれませんのでご了承ください。

最終的なアウトプット

 タイトルにある通り、筆者が量子コンピュータに興味があるので、この界隈の論文スクレイピングをしています。
 論文のスクレイピングを通して、マクロに量子コンピュータの学術的な動向を調査できたらと考えています。
 その最初のステップとして、まずは、図1のように、スクレイピングした論文のSummaryに「どの単語」が「どのくらい使われているか」をWordCloudを使って可視化したいと思います。

図1 最終的なアウトプットの形


アウトプットするためには?

 やり方としては、下記のように進めていきます。

1.Arxiv(※1)から、タイトルに「Quantum Computer」という単語が含まれる論 
  文を1,000個抽出
2.抽出した論文のSummary部だけを抽出してTxtファイルに格納
3.WordCloudのライブラリを使用して、頻出単語を可視化

※1: Arxiv:物理、数学、計算機科学などの様々な分野のプレプリント(査読前の論文)が保存されているサイト

1.論文抽出

以下に示すようなコードを使って、実際に論文の抽出を行っています。
arxiv.Searchを使い、Arxivにアクセスし、指定した条件の論文を探しに行きます。

import arxiv
import csv

#ArxivからTitle(ti)にQuantum computerという単語が含まれる論文を1000個抽出
latest_query = arxiv.Search(query='ti:"quantum computer"',max_results=1000,sort_by=arxiv.SortCriterion.SubmittedDate)
result=latest_query.results()

#結果保存用のリストを準備
list_df=[]

#1000論文のSummaryを用意したリストに追加する。
for i in result:
    data=pd.Series([i.summary])
    list_df.append(data)

 条件の指定方法は、arxiv.Searchの以下のような引数で指定できます。
query='○○:"△△"'→○には検索カテゴリを(作者、タイトルなど)
         △に検索ワードを入れます
max_results→検索する論文数
sort_by→どのように検索をするか。本コードでは、論文の提出年月順に検索 
     しています。

「result」の変数には、タイトルや、著者、発行年月、Summaryなどの様々な情報がArxivのどこにあるかの情報が入っています。
 For文でArxivに情報を一つ一つ取りに行き、リストに封入していっています。このとき、i.summaryが「Summaryを取りに行け」という部分になります。なので、i.authorsなどに変更すると著者に関する情報に変えたりできます。(自分で説明文書いていて、ちゃんと理解できていないことを実感しています。。個々の説明は気にしないで)

2.Txtファイルに格納

 Txtファイルに格納するためにcsvライブラリを使って、Summaryが抽出されたlist_dfをTxtファイルに以下のコードで変換しています。

with open('test.txt','w',newline="") as file:
    writer=csv.writer(file)
    writer.writerows(list_df)

3. WordCloudを使い、頻出単語を可視化

 WordCloudライブラリを使って頻出単語を可視化します。最初にwith文でSummaryが抽出されたTxtファイルである"test.txt"を開く。
 WordCloudとして出力する画像のサイズを定義して、.generate関数を使ってWordCloudの画像を生成し、画像ファイルとして出力しています。

from wordcloud import WordCloud
with open('test.txt','r',encoding="utf-8")as text_file:
    txt=text_file.read()
wc=WordCloud(width=960,height=640)
wc.generate(txt)
wc.to_file('wc1.png')

出力結果

 出力結果が図2になります。とりあえず、イメージ通りのアウトプットができました。最も大きいワードを見てみると、頻出単語はパット見、
第1位:Quantum computer
第2位:Quantum computing
第3位:Qubit

……Quantum computerという検索ワードで検索しているので、そりゃそうだというような単語が羅列されるだけだった。。。他にもQuantum computationとか、Algorithmとか。「だから何?」と言いたくなるような結果となってしまった。
 ここまで来るのにググりまくって、丸1日かかったが、拍子抜けの結果になったが一旦可視化できたという点は、自分を褒めてあげよう
 今後は、他の人がスクレイピングをどのように論文調査に活用しているかを調査し、方法を真似して研究動向を炙り出せるようにしていきたい。

図2 Quantum computerと検索したときのWordCloud

この記事が気に入ったらサポートをしてみませんか?