##はじめに
はじめまして。立夏と申します。
この間ヒプマイというコンテンツの番組の中で『楽曲に1番多く出てくる言葉は何か』を当てるコーナーがありました。
私はちょうどプログラミングの勉強中で「これって形態素解析を使って求めたのでは??」と思い練習として私もやってみました。初心者故至らぬ点が多いと思いますが暖かく見守っていただければ幸いです。
##目的
伊弉冉一二三の楽曲に1番多く使われている言葉を調べる
##準備
〈環境〉
Calaboratory
〈使用言語〉
python
まずは形態素分析をしてくれるTokenizerをインストールします
!pip install Janome==0.3.7
仕様が変わっているので今回は旧バージョンで進めていきます
▼必要なモジュールをインポートしておきます
import glob
from janome.tokenizer import Tokenizer
from collections import Counter
▼歌詞について
スクレイピングは歌詞だとできないかもということと担当パートを判断し抜き出すことは不可能だと思いソロ曲と全員曲の一二三の担当パートの歌詞をまとめたテキストを用意しました
今回は10曲を対象にしています
(初心者故ここはアナログの方が早いと判断しましたがもっといい方法があったのかも…)
##分析開始
▼単語を取り出すための関数を設定します
ヨコハマのときと同じで名詞、動詞、形容詞、形容動詞に限定しています
歌詞内の!や()も名詞として取り出していたのでそれらを除くコードと英語の大文字を小文字に直すコードを足しました
# 品詞を取り出し「名詞、動詞、形容詞、形容動詞」のリスト作成
def tokenize(part):
part = part.lower()
t = Tokenizer()
tokens = t.tokenize(part)
words = []
for token in tokens:
part_of_speech = token.part_of_speech.split(",")[0]
if part_of_speech in ["名詞", "動詞", "形容詞", "形容動詞"]and not token.surface in ["!", "!!", "(", ")", "'", "?"] :
words.append(token.surface)
return words
▼歌詞を書いたテキストを読み込み先程の関数に適用します
f = open("/content/drive/MyDrive/hihumi.txt", "r", encoding="utf-8")
song = f.read()
song = tokenize(song)
これで単語を取り出せました
['oh', 'yeah', '持っ', 'こい', 'シャンパン', '終わら', 'party'・・]というようなリストになっています
▼それぞれの単語数を数え出力します
#単語の出現回数をカウント
counts = Counter(song)
sorted(counts,key=counts.get,reverse=True)
print(counts)
##結果
上のコードを実行すると
{'シャンパン': 28, '僕': 21, '終わら': 14, 'party': 14, '朝': 13, 'グイ': 10, 'こい': 9, '円': 9, 'さ': 9,・・
このような結果が出ました(長いので載せるのは途中までにしています)
「さ」が気になりますが概ねちゃんとした結果が出ていると思います
##まとめ
今回の結果上位をまとめると
1位 シャンパン 28回
2位 僕 21回
3位 終わら 14回
3位 party 14回
4位 朝 13回
となりました
やはりシャンパンが1位ですね!ファンの方は予想通りだったのではないでしょうか?
複数曲で出てきている分ナゴヤの『伽』32回を越せるかと思っていましたが…空却くん強し
今後もたくさんシャンパンコールして欲しいですね
##最後に
今回は1つのテキストを対象にしているので多少荒いコードになっていますが
他のキャラでも試すときは関数設定や特定の語句の削除などの部分を整えようと思います。
では、今回はここまで!閲覧ありがとうございました。