プロトアウトスタジオアドベントカレンダー10発目の記事です!
#概要
プロトアウトスタジオに入ってから、Qiitaでアウトプットするようになりました。
(まだまだ全然数少ないですが)
そこで今回は、これまでどんなもの書いたんだっけという振り返りも兼ねて、
自分がアウトプットしたものをPythonのWord Cloudで可視化していこうと思います。
##Word Cloudについて
WordCloudとは、文章の中から出現頻度が高い単語を選んで、単語の出現頻度に応じた大きさで図示していくものです。
Python用のライブラリがあるので、コードもこちらを参考にしていきます。
http://amueller.github.io/word_cloud/index.html
##スクレイピングで文章集める
Word Cloudで可視化するために、自分のQiitaをスクレイピングして、文章(材料)を集めていきます。
自分の過去記事使いながら
まずは記事のタグ情報を集めて可視化します。
import urllib.request
from bs4 import BeautifulSoup
url = "https://qiita.com/sksk_go"
res = urllib.request.urlopen(url)
soup = BeautifulSoup(res, 'html.parser')
#タグ取得用に書き換え
name = soup.find_all("a",class_="u-link-unstyled TagList__label")
ret = []
for t in name:
ret.append(t.text)
print(ret)
集めたテキストをWord Cloudで表現してみます。
##Word Cloudで処理
こちらの記事参考にします。
[Python]銀河鉄道の夜をWordCloudで可視化してみた!
import MeCab
from wordcloud import WordCloud
data = open("data.txt","rb").read()
text = data.decode('utf-8')
mecab = MeCab.Tagger("-ochasen")
node = mecab.parseToNode(text)
data_text = []
while node:
word = node.surface
hinnsi = node.feature.split(",")[0]
if hinnsi in ["動詞","副詞","形容詞","名詞"]:
data_text.append(word)
else:
print("|{0}|の品詞は{1}だから追加しない".format(node.surface,node.feature.split(",")[0]))
print("-"*35)
node = node.next
text = ' '.join(data_text)
#除外ワード
stop_words = [ u'てる', u'いる', u'なる', u'れる', u'する', u'ある', u'こと', u'これ', u'さん', u'して', \
u'くれる', u'やる', u'くださる', u'そう', u'せる', u'した', u'思う', \
u'それ', u'ここ', u'ちゃん', u'くん', u'', u'て',u'に',u'を',u'は',u'の', u'が', u'と', u'た', u'し', u'で', \
u'ない', u'も', u'な', u'い', u'か', u'ので', u'よう', u'']
wordcloud = WordCloud(font_path='/System/Library/Fonts/ヒラギノ明朝 ProN.ttc',width=480, height=300,background_color='white',stopwords=set(stop_words))
# テキストからワードクラウドを生成する。
wordcloud.generate(text)
# ファイルに保存する。
wordcloud.to_file('wordcloud.png')
記事の量少ないのでスカスカですね……
Python成分多めな感じ。厚めに教わったIoTなども入ってますね。
##おまけ
先ほどはタグだけだったので、自分のQiita記事の文章をとってきて、Word Cloudで可視化してみます。
所々変な単語入ってますが、なんとなく言いたいことわかります。
やっぱPythonとか機械学習とかそっちの成分多めですね。
自分の興味もどちらかというと強いですし。傾向がわかるのではないでしょうか。
##終わりに
Qiitaを題材にWord Cloud使ってみましたが、Twitterとか、ブログとかそういう普通の文章から取ってみた方がより個性出てて面白そうですね。歌詞とか小説とかそういう文章でやってみるのも面白そう。
aki_sugaさんです!お楽しみに!