新型コロナウイルス感染者情報の特徴をwordcloudで可視化してみた

# 概要

- 新型コロナウイルス(COVID-19)の日本の感染者情報を取得
- mecabで形態素解析
- wordcloudで特徴語を可視化

# 参考

### 新型コロナウイルス(COVID-19)の感染者情報

- https://qiita.com/ryo-ma/items/20db8cd20f1086838249
    - 感染者情報と思われるデータ: https://raw.githubusercontent.com/swsoyee/2019-ncov-japan/master/Data/resultSignateDetail.csv

### config

- config.py

```python
import re
import os

### MeCab
POS_LIST = [10, 11, 31, 32, 34]
POS_LIST.extend(list(range(36,50)))
POS_LIST.extend([59, 60, 62, 67])
STOP_WORDS = ["する", "ない", "なる", "もう", "しよ", "でき", "なっ", "くっ", "やっ", "ある", "しれ", "思う", "今日", "それ", "これ", "あれ", "どれ", "どの", "NULL", "れる", "なり", "あっ", "できる", "私"]
RE_ALPHABET = re.compile("^[0-9a-zA-Z０-９ .,*<>]+$") # alphabet, number, space, comma or dot
current_dir = os.getcwd()
OUTPUT_PNG_FILE = os.path.join(current_dir, "wordcloud.png")
```

- 前処理

（略）

### 形態素解析

```python
import MeCab
from os import path
from wordcloud import WordCloud
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
import re

def create_mecab_list(text_list):
	mecab_list = []
	mecab = MeCab.Tagger("-Ochasen -d /usr/local/lib/mecab/dic/mecab-ipadic-neologd") # MacOS
	mecab.parse("")
	# encoding = text.encode('utf-8')
	for text in text_list:
		node = mecab.parseToNode(text)
		while node:
			# [品詞,品詞細分類1,品詞細分類2,品詞細分類3,活用形,活用型,原形,読み,発音]
			# 忙しく  形容詞,自立,*,*,形容詞・イ段,連用テ接続,忙しい,イソガシク,イソガシク
			morpheme = node.feature.split(",")[6]
			if RE_ALPHABET.match(morpheme):
				node = node.next
				continue
			if morpheme in STOP_WORDS:
				node = node.next
				continue
			if len(morpheme) > 1:
				if node.posid in POS_LIST:
					mecab_list.append(morpheme)
			node = node.next
	return mecab_list
```

### wordcloud

```python
import MeCab
from os import path
from wordcloud import WordCloud
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
import re

def create_wordcloud(morphemes):
	# fpath = "/usr/share/fonts/truetype/takao-gothic/TakaoPGothic.ttf" # Ubuntu
	fpath = "/System/Library/Fonts/ヒラギノ丸ゴ ProN W4.ttc" # Mac OS X
	wordcloud = WordCloud(
		background_color="whitesmoke",
		collocations=False,
		stopwords=set(STOP_WORDS),
		max_font_size=80,
		relative_scaling=.5,
		width=800,
		height=500,
		font_path=fpath
		).generate(morphemes)
	plt.figure()
	plt.imshow(wordcloud)
	plt.axis("off")
	wordcloud.to_file(OUTPUT_PNG_FILE)
```

# 結果

![wordcloud (5).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133933/fd0db12d-eca6-8aff-d355-88b5e6824ccc.png)

- 「女性」より「男性」のほうが感染者が多い
    - → 「女性」より「男性」のほうが文字サイズが大きい
- 「20代」が以外に多い
- 「マスク」大事…

# その他新型コロナ関連情報

- 厚生労働省
    - 新型コロナウイルスに関するQ&A:
        - https://www.mhlw.go.jp/stf/seisakunitsuite/bunya/kenkou_iryou/dengue_fever_qa_00001.html
    - 新型コロナウイルス感染症についての相談・受診の目安
        - https://www.mhlw.go.jp/content/10900000/000596905.pdf
- 東京都
    - 新型コロナウイルス感染症対策サイト
        - https://stopcovid19.metro.tokyo.lg.jp/
- 世界の感染者可視化
    - https://github.com/sorxrob/covid-3d
        - 地球儀 https://covid3d.live
    - ウーバーのエンジニアの方が作ったダッシュボード
        - PC版: https://www.arcgis.com/apps/opsdashboard/index.html#/bda7594740fd40299423467b48e9ecf6
        - Mobile版: https://www.arcgis.com/apps/opsdashboard/index.html#/85320e2ea5424dfaaa75ae62e5c06e61