tl;dr
- 「Perfume FES!! 2017」ということで、歌詞分析してみました(先に断っておきますが、精度は低いのであしからず)
- 分析対象総曲数: 91曲
- 総単語数: 11854単語
- 結果:
部門 | 単語 | 回数 |
---|---|---|
総合部門1位 | ない | 402回 |
名詞部門1位 | キミ | 227回 |
動詞部門1位 | 好き | 66回 |
調査に関して
1. ツール
◆MeCab
http://taku910.github.io/mecab/
mecabコマンド: 日本語の形態素解析するために使用。
◆Data Scinece at the Command Line
https://github.com/jeroenjanssens/data-science-at-the-command-line
headerコマンド: csvにheader行を加えるために使用(無くてもよい)。
◆CSVKit
http://csvkit.readthedocs.io/en/1.0.2/
csvlookコマンド: カンマ区切りのデータをコマンドラインから確認するために使用(無くてもよい)。
2. データ獲得
歌詞の取得はrubyのnokogiriで行いました。今回は割愛。
※複製権侵害の防止のためか、歌詞掲載サイトによってはソースコードがuglifyされていたり、403ステータスを返したりします。
3. 総単語数
- 11854単語
< all_lyrics.txt mecab -Owakati | tr '[:upper:]' '[:lower:]' |
grep -oE '\S{2,}' | wc -w
◆mecabコマンド
日本語を形態素解析したり、漢字の読みがなを取得したりする。
- -Owakati
分かち書き。単語を半角スペースに区切った形での出力。
◆trコマンド
文字の一括置換を行う。translateの略。
今回は集計のために、アルファベットの大文字を小文字に統一するために使用。
◆grepコマンド
文字列の検索を行う。Global Regular Expression Printの略。
今回のケースだと、egrep
(Extended GREP)のoオプションでも同じ結果が得られる。
- -E, --extended-regexp
拡張正規表現。半角スペースやタブ以外の2回以上(2語以上の単語)を一致させるために使用。
- -o, --only-matching
マッチング部分のみ抽出するオプション。
◆wcコマンド
指定したファイルの行数・単語数・バイト数を表示する。
- -w
単語数のみ表示。
4. ランキング結果出力
< all_lyrics.txt mecab -Owakati | tr '[:upper:]' '[:lower:]' |
grep -oE '\S{2,}' | sort | uniq -c | sort -nr |
awk '{print $2","$1}' | header -a word,count > perfume.csv
◆sortコマンド
行を並び替える。
- -n, --numeric-sor
先頭の数字や記号("+" , "-" , "." など)を数値とみなして,ソートする。先頭の空白は無視する。
- -r, --reverse
逆順にソートする。
◆uniqコマンド
ソート済みのファイルから重複した行を削除する。
- -c, --count
行表示の際,それぞれの行の数も表示する
※sort | uniq -c | sort -nr
はランキング表示によく用いるので、もはやイディオム。
◆awkコマンド
空白などで区切られたテキストを処理する。
※今回は、集計数と単語の順を入れ替え、またカンマを挿入するために使用。
◆headerコマンド
ヘッダー行を追加、置換、削除する。
- -a
ヘッダー行の追加。
◆csvlookコマンド
カンマ区切りのデータをコマンドラインから確認する。
※リダイレクトで結果をcsvファイルに格納していますが、csvlookコマンドでターミナル上で以下のように整形された形で確認可能です。
word | count |
---|---|
ない | 402 |
キミ | 227 |
たい | 104 |
you | 102 |
この | 96 |
てる | 94 |
なる | 81 |
から | 80 |
ah | 74 |
こと | 73 |
けど | 69 |
きっと | 68 |
me | 67 |
好き | 66 |
よう | 64 |
そう | 64 |
wah | 60 |
だけ | 59 |
でも | 56 |
その他: 調査対象に関して等
総曲数
- 91曲
調査対象: 歌詞一覧
- 1mm
- 23:30
- 575
- Baby cruising Love
- Butterfly
- Baby Face
- Clockwork
- Cling Cling
- Cosmic Explorer
- Dream Fighter
- Dream Land
- DISPLAY
- edge
- edge(⊿-mix)
- Enter the Sphere
- FAKE IT
- FLASH
- FLASH (Album-mix)
- GAME
- GLITTER
- GLITTER(Album-mix)
- Have a Stroll
- Hurly Burly
- Handy Man
- Hold Your Hand
- I still love U
- Kiss and Music
- love the world
- MY COLOR
- Magic of Love
- Miracle Worker
- NIGHT FLIGHT
- Next Stage with YOU
- Perfume
- Puppy love
- plastic smile
- Party Maker
- Pick Me Up
- Relax In The City
- SEVENTH HEAVEN
- Speed of Sound
- Spring of Life
- Spending all my time
- Sleeping Beauty
- Sweet Refrain
- STORY
- TwinkleSnow Powdery Snow
- Take me Take me
- The best thing
- TOKYO GIRL
- VOICE
- wonder2
- Zero Gravity
- 引力
- いじわるなハロー
- エレクトロ・ワールド
- エレベーター
- おいしいレシピ
- 微かなカオリ
- コンピュータードライビング
- コンピューターシティ
- 心のスポーツ
- コミュニケーション
- 恋は前傾姿勢
- シークレットメッセージ
- シークレットシークレット
- ジェニーはご機嫌ななめ
- スウィートドーナッツ
- スパイス
- セラミックガール
- だいじょばない
- チョコレイト・ディスコ
- 時の針
- 透明人間
- ナチュラルに恋して
- 願い
- 願い(Album-mix)
- ねぇ
- パーフェクトスター・パーフェクトスタイル
- ビタミンドロップ
- ファンデーション
- 不自然なガール
- ふりかえるといるよ
- 宝石の雨
- ポリリズム
- ポイント
- マカロニ
- 未来のミュージアム
- モノクロームエフェクト
- ワンルーム・ディスコ
- リニアモーターガール
- レーザービーム
参考資料
- 「コマンドラインではじめるデータサイエンス」(https://goo.gl/WBGm1s)
- ITPro (http://itpro.nikkeibp.co.jp/)
- Linux Man Pages (https://linux.die.net/man/)
※manコマンドで参照