結成20周年なのでPerfumeの歌詞をWordCloudで可視化してみた

![perfume.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208648/d746d185-2dfb-ec8f-5029-82794ed0afc1.png)

この記事は[estie Advent Calendar 2019](https://qiita.com/advent-calendar/2019/estie)の6日目の記事となります。
不動産ベンチャー[estie.inc](https://www.estie.co.jp/)でエンジニアやっています、まるしょうです。

#はじめに

最近、こちらの記事が話題になっていましたね！
[【Python】嵐の歌詞をWordCloudで可視化して、結成20年でファンに伝えたかったことを紐解いてみた](https://qiita.com/yuuuusuke1997/items/122ca7597c909e73aad5)

自分の好きなアイドルやアーティストが長年活躍して愛されていると、本当に嬉しい気持ちになりますよね。
ファンとして改めて彼らの言葉や、伝えたかったことを確かめたくなる気持ちがめっちゃわかります。

ところで、偶然にも同じく結成20周年を迎えたアーティストがいるんですよ

そうですみんな大好きPerfumeです。


ご存知の通りPerfumeはテクノロジーとの親和性が高く、[Googleの機械学習](https://cloud.google.com/blog/ja/products/gcp/nhk-perfume-technology-reframe-your-photo-google-tensorflow)を使ったライブ演出や[5Gでのライブ配信](https://www.youtube.com/watch?v=rH8nE-llnEk)してたりと、最先端の表現を発信し続けています。
Rhizomatiksさまさまですね。

ということで、自分も10年ほどPerfumeのライブに通っているファンの一人として
Perfumeの歌詞を形態素解析+WordCloud可視化をやってみようと思います。

##環境
- MacOS Mojave
- Python3.8

##やり方
先人達と同じく
歌詞の取得→形態素解析→WordCloud
でやっていきます。
詳しくは[参考サイト](#参考サイト)をご覧ください

#形態素解析ツール
あまりテキストマイニングをやったことがないので、形態素解析といったらMeCabと思っていたのですが、
調べてみるといろいろな形態素解析ツールがあるみたいです。

今回はその中から

- [MeCab](http://taku910.github.io/mecab/)
- [Janome](https://mocobeta.github.io/janome/)
- [Nagisa](https://github.com/taishi-i/nagisa)

こちらの3人組を試してみたいと思います。

##[MeCab](http://taku910.github.io/mecab/)
現Google日本語入力開発者の方が開発した定番の形態素解析ツールです。
環境を選ばず動作しますが、解析には別途辞書が必要です。
今回は公式に推奨されているIPA辞書+新語辞書を使いました

```macab_.py
import MeCab

# 歌詞ファイルの読み込み
text_data = open("perfume.txt", "rb").read()
text = text_data.decode('utf-8')

# 形態素解析
mecab = MeCab.Tagger("-ochasen")
node = mecab.parseToNode(text)

perfume_list = []
tags = ["名詞","動詞", "副詞", "形容詞", "形容動詞"]

while node:
    #単語の抽出
    word = node.surface
    #品詞の抽出
    word_class = node.feature.split(",")[0]
    
    #特定の品詞のみ抽出
    if word_class in tags:
        perfume_list.append(word)

    node = node.next

print(perfume_list)
```

##[Janome](https://mocobeta.github.io/janome/)
こちらもMeCabに次いでよく使われる解析ツールです。
MeCabより実行速度が劣りますが、辞書内包・依存ライブラリが少なく
`pip install janome`
のみでインストールが終わる手軽さが魅力です。
MeCabの前段の検証で用いられることが多いようです。

```janome_.py
from janome.tokenizer import Tokenizer

# 歌詞ファイルの読み込み
text_data = open("perfume.txt", "rb").read()
text = text_data.decode('utf-8')

# 形態素解析
t = Tokenizer()
seps = t.tokenize(text)

perfume_list = []
tags = ["名詞","動詞", "副詞", "形容詞", "形容動詞"]

for _ in seps:
    #単語の抽出
    if _.base_form == '*':
        word = _.surface
    else:
        word = _.base_form

    #品詞の抽出
    ps = _.part_of_speech
    word_class = ps.split(',')[0]

    #特定の品詞のみ抽出
    if word_class in tags:
        perfume_list.append(word)

print(perfume_list)
```


##[Nagisa](https://github.com/taishi-i/nagisa)
こちらは比較的新しいツールです。Janomeと同様に環境構築が手軽で
`pip install nagisa`
でインストール完了です。
今回は歌詞なので活かせませんが、顔文字やURLに対して頑健な解析ができるようです。
品詞による出力単語のフィルタリングメソッドがあるので簡単に抽出できます。

```nagisa_.py
import nagisa

# 歌詞ファイルの読み込み
text_data = open("perfume.txt", "rb").read()
text = text_data.decode('utf-8')

# 形態素解析・品詞を指定して単語抽出
tags = ["名詞","動詞", "副詞", "形容詞", "形容動詞"]
perfume_list = nagisa.extract(text, extract_postags=tags).words

print(perfume_list)
```

#結果

- Mecab
![mecab.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208648/3c9a70e8-e3f6-4501-97c4-c754fc367787.png)

- Janome
![janome.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208648/9fcf0ec5-a993-5d8b-dcae-4df3d77f47cd.png)

- Nagisa
![nagisa.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208648/70697c51-adf3-a742-2371-976e41a09a05.png)

同じ辞書を使っているMecabとJanomeは似たような結果になりましたね

#おわりに
Pa Pa きっと今日もキミをloving youな気持ち ディスコディスコってところでしょうか
曲名を繰り返す楽曲も多数あるので、その影響も反映されてますね！

テキストマイニングのツールも豊富で手軽なものが増え、気軽にこのような視覚化ができるのは嬉しいです
みなさんもお好きなアーティストで試してみてはいかがでしょうか

* * *
 
ところで、現在私がジョインしているestieではオフィスデータを可視化することで
さまざまな不動産xテクノロジーのサービスを提供しています。
オフィス移転をお考えの方は、ぜひ[estie](https://www.estie.jp)をご利用ください！
ほかにも不動産データ基盤[estie pro](https://pro.estie.jp)も提供してます

またestieではWebエンジニアを募集しています
[Wantedly](https://www.wantedly.com/companies/company_6314859/projects)
お気軽にオフィスに遊びに来てくださいね！

#参考サイト

- 歌詞は[uta-net](https://www.uta-net.com/)より取得
- [【Python】嵐の歌詞をWordCloudで可視化して、結成20年でファンに伝えたかったことを紐解いてみた](https://qiita.com/yuuuusuke1997/items/122ca7597c909e73aad5)
- [[Python]銀河鉄道の夜をWordCloudで可視化してみた！](https://qiita.com/uminchu987/items/07baa1a354cf96d2564b#_reference-b11197acea824b4e8d50)
- [nagisa: RNNによる日本語単語分割・品詞タグ付けツール](https://qiita.com/taishi-i/items/5b9275a606b392f7f58e)