home about terms twitter

(Python)ArxivのAPIでハッピーな論文を探してWordCloud

date: 2021-05-22 | mod: 2021-05-23

前回

前書き

前回([(Python)Arxivの論文情報からWordCloudを作成する])までの内容で、Arxivの論文情報からWordcloudを作成することができました。

Wordcloudは一目である文章中のキーワードの傾向を見ることができます。前回の結果では、Arxivで「mouse」と検索したときにはネズミではなくコンピュータ機器としてのマウスが多くヒットしました(関連記事5件の要旨の結果)。

何かと暗い話題の多い昨今なので、今回は「happy」について検索を行いWordCloudを作成します。

方法

実行環境

Environment
Google Colaboratory Ver:2021/05/22
Python 3.7.10

Google ドライブのマウント

  • Google ドライブのマウントを行います。
from google.colab import drive
drive.mount('/gdrive')
  • 上記のコードを実行後に得られるURLへアクセスし、移動先に従って各種の許可をした後にコードを取得します。
  • 得られたコードをボックスに入力してEnterします。

API

import urllib.request, csv
import xml.etree.ElementTree as ET

keyword = 'happy'
size = 10

with open('/gdrive/My Drive/output.csv', 'w', encoding='UTF-8', newline='') as csv_file:
    writer = csv.writer(csv_file)
    
    fieldnames = ['Title', 'Link', 'Abstract']
    writer = csv.DictWriter(csv_file, fieldnames=fieldnames)
    writer.writeheader()
    
    url = 'http://export.arxiv.org/api/query?search_query=all:'+keyword+'&sortBy=submittedDate&start=0&max_results='+str(size)
    req = urllib.request.Request(url)
    with urllib.request.urlopen(req) as res:
        xmlres = res.read()
            
    root = ET.fromstring(xmlres)

    size_int = int(size)
    for i in range(size_int):
        try:
            title = root[7+i][3].text
            link = root[7+i][0].text
            abst = root[7+i][4].text
            writer.writerow({'Title':title, 'Link':link, 'Abstract':abst})
        except (KeyError, IndexError, UnicodeEncodeError) as e:
            print(e)
            pass
  • &sortBy=submittedDateをクエリに追加し、提出された日付で結果がソートされます。
  • search_query=absをクエリに追加し、要旨の中から検索します。

WordCloud

import os
from os import path
from wordcloud import WordCloud
import matplotlib.pyplot as plt


text = open('/gdrive/My Drive/output.csv').read()


wordcloud = WordCloud().generate(text)

def color_func(word, font_size, position, orientation, random_state, font_path):
    return 'black'
wordcloud = WordCloud(
    max_font_size=None,
    color_func=color_func, 
    background_color="white",  
    width=800,
    height=600).generate(text)
plt.figure(figsize=(12,10))
plt.imshow(wordcloud, interpolation="bilinear")
plt.axis("off")
plt.show()

結果

WC

得られたタイトルを以下に示します。

(例のウィルス)は現在流行しているウィルスです。本ページが機械的にそのウィルスに関する情報ページとして処理されるのを防ぐためにぼかしています。

タイトルはGoogle Translateにまかせてから部分的に修正しています。

  • ヒンディー語 - 英語のコードの混在テキストデータにおける感情の検出
  • 重力波の波面は、部分的に超小型の星の中に閉じ込め
  • 単層グラフェンFETのバイアス依存性真性RF熱雑音モデリングおよび特徴付け
  • 「私はマッドではない」:否定と矛盾の常識影響
  • ソフトウェア工学の人間的側面:課題の調査
  • Eコマース製品のQAのためのDistantly Supervised Transformer
  • 必然的なロボットサウンドを探る:私たちはロボットをQuietでKawaii-etにすべきか?
  • グローバル(例のウィルス)の間に開発を分散
  • 青色はぐれ星の星の若者の万能薬の秘密
  • 私はあなたがトラブルを知っていた:テイラー・スウィフトのレパートリーで感情的な動向

感想

  • 心理、機械、言語が目立ちます。
  • 人間よりもロボットやモデルが前面に出てきています。

今後気になる論文は読み進めてみようと思います。


関連記事