(Python)オープンアクセス論文の要旨からWordCloudを作成
前:[(Python)オープンアクセス論文の要旨をAPIから取得する]
前書き
Pythonのurllibパッケージを使い、APIからのレスポンスをパースします。
オープンアクセス論文の情報としては、DOAJのAPIを介した検索を行います。DOAJのAPIの仕様につきましては公式のドキュメントをご覧ください。
前半部分は[(Python)オープンアクセス論文の要旨をAPIから取得する]と同様です。必要ならばご参照ください。
また、Arxivから取得したい場合には[(Python)Arxivの論文情報からWordCloudを作成する]もご参照ください。
方法
実行環境の確認
from datetime import datetime as dt
print("Environment")
print("Google Colaboratory Ver:" + str(dt.now().strftime("%Y/%m/%d")))
!python --version
Environment Google Colaboratory Ver:2021/05/16 Python 3.7.10
ドライブのマウント
from google.colab import drive
drive.mount('/gdrive')
出力されるURLからキーを取得して、空欄に入力後Enterを押してマウントします。
CSVファイルの取得
出力の結果は[(Python)オープンアクセス論文の要旨をAPIから取得する]をご参照ください。
今回は「mouse」についてページサイズ「5」として取得しています。
import urllib.request, json, csv
keyword = 'mouse'
size = 5
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 = 'https://doaj.org/api/v2/search/articles/'+keyword+'?pageSize='+str(size)
res = urllib.request.urlopen(url)
res_json = json.loads(res.read().decode('utf8'))
size_int = int(size)
for i in range (size_int):
try:
title = res_json['results'][i]['bibjson']['title']
link = res_json['results'][i]['bibjson']['link'][0]['url']
abst = res_json['results'][i]['bibjson']['abstract']
writer.writerow({'Title':title, 'Link':link, 'Abstract':abst})
except (KeyError, IndexError, UnicodeEncodeError) as e:
print(e)
pass
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()
結果
- mouseよりも複数形のmiceが使われている。
- cell(細胞)がよく使われている。
関連記事