PythonのWordCloudで13連敗した力士に対してどんなツイートがされたか可視化してみた

# はじめに

2018年7月場所、西前頭五枚目の嘉風が初日から13連敗しました。

[前回](https://qiita.com/a0082273/items/4dc077a168fe03733c88)、Twitter APIを使って、場所中に投稿された幕内力士名が含まれるツイートを取得した際、嘉風は休場力士を除き5番目にツイート数が多かったことが分かりました。
![ 2018-08-20 20.09.22のコピー.png](https://qiita-image-store.s3.amazonaws.com/0/224315/6f3a723d-d62f-385c-4e5d-a01998dbfd6b.png)
どんな内容のツイートが多かったのでしょうか。

MeCabで形態素解析し、WordCloudで可視化してみました。



# MeCabで形態素解析

[スタバのTwitterデータをpythonで大量に取得し、データ分析を試みる その３](https://qiita.com/kenmatsu4/items/02034e5688cc186f224b)を参考に、MeCabをインストールして使ってみました。

```python
def words_with_keyword(data):
    m = MeCab.Tagger("-d /usr/local/lib/mecab/dic/mecab-ipadic-neologd/")
    word_list = []
    for i in range(data.shape[0]):
        if type(data.text[i]) == str:
            texts = m.parse(data.loc[i, 'text'])
            texts = texts.split('\n')
            for text in texts:
                text = re.split('[\t,]', text)
                if text[0] == 'EOS' or text[0] == '':
                    pass
                elif text[1] in ['名詞', '形容詞', '動詞', '副詞']:
                    word_list.append(text[0])
    return word_list
```

力士名はユーザー辞書に登録しないと、単語として認識してくれないため、[MeCabにユーザー辞書を追加する](https://qiita.com/urakarin/items/f975b006d6603bba606b)を参考に、

```/usr/local/lib/mecab/dic/userdic/mecab_user_dic.csv
鶴竜,,,1,名詞,固有名詞,人名,名,*,*,*,*,*
白鵬,,,1,名詞,固有名詞,人名,名,*,*,*,*,*
稀勢の里,,,1,名詞,固有名詞,人名,名,*,*,*,*,*
```

このようなファイルを作り、

```
$ /usr/local/Cellar/mecab/0.996/libexec/mecab/mecab-dict-index \
-d /usr/local/lib/mecab/dic/ipadic \
-u /usr/local/lib/mecab/dic/userdic/mecab_user_dic.dic \
-f utf-8 -t utf-8 /usr/local/lib/mecab/dic/userdic/mecab_user_dic.csv
```

このようなコマンドで登録しました。




# WordCloudで可視化

[Word Cloudで文章の単語出現頻度を可視化する。[Python]](https://qiita.com/kenmatsu4/items/9b6ac74f831443d29074)を参考に、上で作ったword_listをWordCloudに食べさせます。
フォントはfont_pathで指定し、あまり意味のない単語はstopwordsで指定して取り除きます。

```python
def make_word_cloud(rikishi, word_list):
    word_list = ' '.join(word_list)

    font_path = "~/Library/Fonts/RictyDiminished-Regular.ttf"
    stopwords = [
        'in', 'bot', 'https', 'co', 'ない', '無い', '投稿', 'ツイート', '今日', '明日',
        'さん', 'こと', 'よう', 'それ', 'どこ', 'これ', 'みたい', '名前', '自分', 'ちゃん',
        '登録', 'くん', 'あと', 'そこ', 'ため', 'うち', 'ここ', 'ところ', 'なん', '感じ',
        'もの', 'とき', 'やつ', 'もん', 'しよう', 'わけ', 'たち', 'とこ', 'つもり', 'こちら',
        'しんみ', 'した', 'せい', 'さま', 'さっき', 'こっち', 'かな', 'まま', '最近', '時間',
        '場所', '本日', '付近', 'よろしくお願いします', '昨日', '今週', '来週', '先週', 'みんな',
        '相撲', '名古屋場所', 'sumo', '大相撲', '力士', '中継', '相撲部', '相撲取り', '情報',
        '大相撲名古屋場所','相手', '土俵', '？？？', 'あれ', '近く', '思っ', 'しまっ', 'どう',
        'てる', 'ある', 'なる', 'なっ', 'やっ', 'あっ', 'ちゃっ', 'くれ', 'する', 'そう',
        'ニュース', 'www', 'スーモ', '…。', 'ww', 'られ', '思い', 'いる', 'ーーー', '思う'
    ]

    wordcloud = WordCloud(background_color="white", font_path=font_path, width=900, height=500,
                          max_words=70, stopwords=set(stopwords)).generate(word_list)

    plt.figure(figsize=(10,8))
    plt.imshow(wordcloud)
    plt.axis("off")
    plt.show()
```

2018年7月場所15日間の、嘉風という単語を含むツイートを可視化したのがこれです。
![jjj.png](https://qiita-image-store.s3.amazonaws.com/0/224315/c83ec21a-ed8c-582a-ff38-8268121b55d3.png)
「引退」「よわ」「つまら」などの単語はなく、「応援」「頑張っ」「良かっ」「よかっ」「調子」「悪い」「心配」などの単語が目立っています。





# まとめ

嘉風は多くの人に愛されている。

コードは全て[github](https://github.com/a0082273/sumo_twitter)にあります。プログラミング、相撲、ともに初心者なのでご教授いただけたらうれしいです。