![見出し画像](https://assets.st-note.com/production/uploads/images/26594717/rectangle_large_type_2_a8f4bbd136b00248e5e1f0b3a5305405.png?width=1200)
seabornで見てみる「ぼっちゃん」(お遊びpythonシリーズ)
またまた昨日の記事の続き。昨日は夏目漱石の「ぼっちゃん」をメカブを使って形態素解析をしてWord Cloudに読み込ませてみたが、今日は頻出名詞をカウントしてグラフにしてみるテスト。
Pythonでグラフを描くのはseabornというライブラリが有名みたいで、これを使ってみる。一緒に文字数をカウントするためにコンテナデータ型とか言う標準ライブラリのcollectionsも使う。
サンプルコードは以下の通り。昨日はstop_wordsで要らない単語を使わない様にしたけど、今回はcollectionsに入ってるのでそれをdelで削除。most_commonというメソッドで頻出上位30位までの単語をグラフ描画に使う。
あっという間にタイトル画像の様なナイスなグラフが完成。めちゃくちゃ簡単。Python素敵。seabornは他にも色んなグラフが描けるみたいで、ちょっといじってみたいなー。仕事でも使えるグラフを書いて見ようっと。
import MeCab
import collections
import seaborn as sns
import matplotlib.pyplot as plt
f = open('sample.txt',encoding='utf-8')
text = f.read()
f.close()
m = MeCab.Tagger ('-Ochasen')
node = m.parseToNode(text)
words=[]
while node:
#print(node.feature)
hinshi = node.feature.split(",")[0]
hinshi2 = node.feature.split(",")[1]
if hinshi in ["名詞"]:
if hinshi2 in ['一般']:
origin = node.feature.split(",")[6]
words.append(origin)
node = node.next
c = collections.Counter(words)
del c['*']
sns.set(context="paper")
fig = plt.subplots(figsize=(8, 8))
sns.countplot(y=words,order=[i[0] for i in c.most_common(30)])
plt.show()
ちなみにフルサイズのグラフは以下。赤シャツだけで175回くらい出てきてるんだな。