Google Colaboratory を使ってWordCloudを作ってみた際の覚書。
まずはWordCloudを表示するためのフォントをインストールする。
!apt-get -y install fonts-ipafont-gothic
最小限必要なモジュールをインポートして、
from wordcloud import WordCloud
from google.colab import files
import codecs
import matplotlib.pyplot as plt
テキストファイルを読み込む。
r = files.upload()
list(r.keys())
path = list(r.keys())[0]
file = codecs.open(path,'r', 'utf-8', 'ignore')
text = file.read()
text
読み込んだファイル内容からWordCloudを作成する。
wordcloud = WordCloud(font_path = '/usr/share/fonts/truetype/fonts-japanese-mincho.ttf', background_color="white", width=1000,height=400).generate(text)
plt.figure(figsize=(15,12))
plt.imshow(wordcloud)
plt.axis("off")
plt.savefig("word_cloud1.png")
英文であれば、これだけでWordCloudが出来上がる。
とりあえず試す
オリジナルの文章としてボランティアで翻訳したアランケイの『あらゆる年齢の「子供たち」のためのパーソナルコンピュータ』の文章からWordCloudを作ることにする。
先程のコードに対して、上のサイト文章をテキストファイルにしたものを、そのまま流し込んでWordCloudを作成してみたら以下のようになった。
日本語訳なのに英単語が目立つ。参考文献中の英文がひろわれているので、本文の内容を反映しているとは言い難い。
形態素解析した結果からWordCloudを作る
日本語の場合は形態素に分解し、分かち書きしたものを流し込むとうまくいくらしい。そこでJanome を使って形態素解析してみた。まずはJanome のインストールから。
!pip install janome
Janome のTokenizer を使って一般名詞と固有名詞を抜き出す。
from janome.tokenizer import Tokenizer
token = Tokenizer().tokenize(text)
import re
words = []
for line in token:
tmp = re.split('\t|,', str(line))
if (tmp[1] in ["名詞"]) and (tmp[2] in ["一般", "固有名詞"]):
words.append(tmp[0])
result = " " .join(words)
result
その結果からWordCloudを作る。
wordcloud = WordCloud(font_path = '/usr/share/fonts/truetype/fonts-japanese-mincho.ttf', background_color="white", width=1000,height=400).generate(result)
plt.figure(figsize=(15,12))
plt.imshow(wordcloud)
plt.axis("off")
plt.savefig("word_cloud2.png")
結果として以下のWordCloudが得られた。
今度はそれっぽい感じに出来上がった。よく見るとおかしな単語も混じっているので、ワードリストを調整したほうがいいかも。
Colab へのリンク
https://colab.research.google.com/drive/1y4EcbrPwQyzWJvPPwPOAnKus_M-6Wa4I?usp=sharing