8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

自然言語処理Advent Calendar 2020

Day 20

“私”を歌うのが中島さんで“あなた”を歌うのがユーミン なのか分析してみた

Last updated at Posted at 2020-12-28

元ネタ

記事の中では、以下のように書かれています。

“私”を歌うのが中島さんで“あなた”を歌うのがユーミン。
“夜”“泣く”“嘘”を歌うのが中島さんで、
“朝”“愛”“好き”を歌うのがユーミンなんです。

確かに、そんな気がします。
あまり詳しくない私にはそうおもいます。
元記事のダブルクォーテーションの気持ち悪さ以外は、すんなりですね。

せやろか?

でも少しキャッチーすぎる気がします。
本当にそうなのか、少し分析して、自分なりのコピーをつけてみます。

せっかくなので、普段使わない、ライブラリのお勉強も兼ねてやってみます。

どう進めるか

  • スクレイピングして
  • 形態素解析して
  • いい感じに出力する

これなら、IT業界の隅っこで体育座りをしている、私にもできるかもしれません。

いい感じのライブラリを作ってくれる人に感謝です。

スクレイピングして

スクレイピングはいつもお世話になっている、beautiful soupです。
さくっと歌詞をスクレイピングしますが、少し気になることがあります。
著作権です。

歌詞の著作権について

ふむふむ、データ分析に使うぐらいなら問題なそうです。
ただ、歌詞を垂れ流すと問題です。
最近gitに挙げることが多いですが、うっかりscraping後の元データを上げたりすると、
↓にエントリーすることになりそうなので気を付けます。
https://qiita.com/advent-calendar/2020/yarakashi-production

形態素解析して

今までMeCab使うことが多かったのですが、ここぞとばかりに、普段からストックして気になっていた、
GINZAを早速つかってみます。
日本語NLPライブラリGiNZAのすゝめ

さっそく横道にそれて 依存構造解析・可視化をしてみます。

なぜなら仕事でほとんど使わなからです、こういうの憧れます・・・・・・
ワイ「ユーザー辞書、手で作るの苦しいです。サンタマリア」

 ある晩象は象小屋で、三把の藁をたべながら、十日の月を仰あおぎ見て、
「苦しいです。サンタマリア。」と云ったということだ。
出典:青空文庫 オツベルと象 宮沢賢治

象の渾身の一言もこんな感じで可視化できます。

displacy.PNG

なにこれ?3行っすか?

nlp = spacy.load('ja_ginza')
doc = nlp('ある晩象は象小屋で、三把の藁をたべながら、十日の月を仰あおぎ見て、「苦しいです。サンタマリア。」と云ったということだ。')
displacy.serve(doc, style='dep')

形態素解析に戻る

サラリーマンとしては象に激しく同情しますが、涙をぬぐってGINZAでの作業を進めます。
形態素解析でやりたいこと、品詞と基本型に戻すところです。
そもそも元ネタは歌詞なので、名詞だけでもいいかと思ってやってみましたが、あまりに寂しかったので
名詞、形容詞、動詞で、取得したワードは基本型に戻します。

def make_words_list(text: str) -> list:
    rs = []
    doc = nlp(text)
    for sent in doc.sents:
        for token in sent:
            tag = token.tag_.split('-')[0]
            if tag in ['名詞','形容詞','動詞']:
#            if tag in ['名詞']:
                rs.append(token.lemma_)
    return rs

上記のようにspaCyも素晴らしいですが、日本語周りを整備してくれるGINZAの人たちに感謝です。

DataFrameの状態

ポイントはPandasのデータフレームというところです。
この後 nlplot を使っていい感じの可視化をしますがDataSeries直渡しができるので、非常に気持ちがいいです。

割愛してしまいましたが、titleとlyricsはscrapingで取得している状態です。

title lyrics words
やさしさに... いいかんじの詩 [単語1,単語2,単語3]
ひこうき... いいかんじの詩 [単語4,単語5,単語6]

いい感じに出力する

可視化について考えてみる

今回はnlplotを使ってみます。
これも前から気になっていたのですが、いままで使う機会もなかったので、これを機にやってみます。

  1. N-gram bar chart
  2. N-gram tree Map
  • wordcloud
  • co-occurrence networks 共起ネットワーク
  • sunburst chart

特に3-5はいままでやったことがなく、気になります。

N-gram bar chart

おぉー、いいですね!
きれいにでてます。pyplotでブラウザに表示されるので、インタラクティブ性もあります。

newplot.png

N-gram tree Map

bar chartよりも派手ですね。細かい数値というより、ざっくりした雰囲気を見たいときはこれがいいですね。
プレゼンの閑話休題的や章表紙的な使い方がいいかもしれません

newplot (1).png

newplot (2).png

wordcloud

ワードクラウドにするとこんな感じですね
ワードクラウドってある程度、長い単語がないと見栄えがしないんですね。

松任谷由美
Figure 2020-12-28 161908.png

中島みゆき
Figure 2020-12-28 161847.png

co-occurrence networks 共起ネットワーク

こちらもpyplotでブラウザに表示されるので、インタラクティブ性もあります。
今回のようなワード間の関連性をみるなら、共起ネットワークは面白いですね。
なによりも、簡単に作れるのが、うれしいですね。

松任谷由美
newplot (3).png

中島みゆき
newplot (4).png

sunburst chart

これもすごいですね、かなりきれいに出力されています。
見方もそうなんですが、もう少し強いメッセージ性があれば、いいんですが、私の手落ちですね。
ストップワード入れればよかった。。。

newplot (5).png

newplot (6).png

私がコピーをつけるとしたら

「ユーミンは時間を歌い、中島みゆきは場所を歌う。」 です。
分析してみて驚いたのですが、上位の単語は結構同じですよね。

っということは、件数が少ないものの方が、特徴がでている可能性がありますので、少なめの件数のものを見てみます。
ユーミンは動詞が多く、中島みゆきは名詞が多い傾向がありそうです。
そして中島みゆきは、「空」や「海」などの自然に関するワード、ユーミンは「二人」や「ユー」などの人称に関するワードが多い気がします

分析者について

年齢はユーミン世代より少し下で、「みちょぱ」と「ゆきぽよ」の区別がつかない年齢

松任谷由実さんについて
・埠頭を渡る風
・リフレインが叫んでる
が好きで
埠頭を渡る風は基準ピッチより高めの450Hzでチューニングされているという話もあります。
あのすっきりした感じは自然言語の分析ではなく、音声系の分析をかければなにかでるのかもしれませんね。

中島みゆきさんについて
・ファイト!
・浅い眠り
が好きです。たくさんのアーティスに楽曲の提供もしておられます。

github

8
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?