10
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

プロトアウトスタジオAdvent Calendar 2019

Day 10

QiitaでアウトプットしたものをWord cloudでまとめてみた

Last updated at Posted at 2019-12-09

プロトアウトスタジオアドベントカレンダー10発目の記事です!

#概要
プロトアウトスタジオに入ってから、Qiitaでアウトプットするようになりました。
(まだまだ全然数少ないですが)

そこで今回は、これまでどんなもの書いたんだっけという振り返りも兼ねて、
自分がアウトプットしたものをPythonのWord Cloudで可視化していこうと思います。

##Word Cloudについて
WordCloudとは、文章の中から出現頻度が高い単語を選んで、単語の出現頻度に応じた大きさで図示していくものです。
Python用のライブラリがあるので、コードもこちらを参考にしていきます。
http://amueller.github.io/word_cloud/index.html

##スクレイピングで文章集める
Word Cloudで可視化するために、自分のQiitaをスクレイピングして、文章(材料)を集めていきます。
自分の過去記事使いながら

まずは記事のタグ情報を集めて可視化します。

scraping.py
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で可視化してみた!

wordcloud.py
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')

###できたものがこちら
wordcloud.png

記事の量少ないのでスカスカですね……
Python成分多めな感じ。厚めに教わったIoTなども入ってますね。

##おまけ
先ほどはタグだけだったので、自分のQiita記事の文章をとってきて、Word Cloudで可視化してみます。
wordcloud2.png

所々変な単語入ってますが、なんとなく言いたいことわかります。
やっぱPythonとか機械学習とかそっちの成分多めですね。
自分の興味もどちらかというと強いですし。傾向がわかるのではないでしょうか。

##終わりに
Qiitaを題材にWord Cloud使ってみましたが、Twitterとか、ブログとかそういう普通の文章から取ってみた方がより個性出てて面白そうですね。歌詞とか小説とかそういう文章でやってみるのも面白そう。

aki_sugaさんです!お楽しみに!

10
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?