機械が人間の感情を読み取ることは可能でしょうか?「空気を読む」「そこは察する」ということは難しいかもしれませんが、使われている単語からポジティブな内容かネガティブな内容かは判断できるかもしれません。
関白宣言の歌詞の心情の動きを可視化してみたいと思います。
余談ですがこの歌、時代の流れから男尊女卑などと言われることもありますが、個人的にはとても素敵な歌だと思っています。
この歌詞の夫は、結婚する段階で一生添い遂げることを宣言していますが、決して聖人君子ではない等身大の自分から精いっぱいの言葉で表現した歌だと思うからです。
感情面から読んだときネガティブ要素はないのですが、さて機械ではどうなるでしょうか。
ネガポジ分析
トライすることはこのようなことです。
- 歌詞を形態素解析で単語に分ける
- ポジティブ(ネガティブ)な単語数をカウントする
- 時系列のグラフにして可視化する
下記の書籍を参考にしています。
歌詞の単語を「日本語評価極性辞書」というものに照らし、ポジティブとネガティブをカウントしています。
sada_text = "お前を嫁にもらう前に言っておきたい事がある\n\
かなりきびしい話もするが俺の本音を聴いておけ\n\
俺より先に寝てはいけない\n\
俺より後に起きてもいけない\n\
めしは上手く作れ。いつもきれいでいろ\n\
できる範囲でかまわないから\n\
忘れてくれるな仕事もできない男に家庭を守れるはずなどないってことを\n\
お前にはお前にしかできないこともあるからそれ以外は口出しせず黙って俺についてこい\n\
\n\
お前の親と俺の親をどちらも同じだ大切にしろ\n\
姑、小姑かしこくこなせ\n\
たやすいはずだ愛すればいい\n\
人の陰口言うな聞くな\n\
それからつまらぬ嫉妬はするな\n\
俺は浮気はしない、たぶんしないと思う\n\
しないんじゃないかな\n\
ま、ちょっと覚悟はしておけ\n\
しあわせは二人で、育てるもので\n\
どちらかが苦労して つくろうものではないはず\n\
お前は俺のところへ 家を捨てて来るのだから\n\
帰る場所はないと思え これから俺がお前の家\n\
\n\
子供が育って年をとったら俺より先にしんではいけない\n\
例えばわずか一日でもいい\n\
俺より早く逝ってはいけない\n\
何もいらない俺の手を握り涙のしずくふたつ以上こぼせ\n\
お前のおかげで いい人生だったと俺が言うから 必ず言うから\n\
忘れてくれるな 俺の愛する女は愛する女は 生涯お前ひとり\n\
忘れてくれるな 俺の愛する女は\n\
愛する女は 生涯お前ただひとり"
mero_list = sada_text.split('\n')
# グラフ作成用のx軸, y軸
# X座標(物語の進行の時間軸として、それまでの単語総数を入れる)
x = []
# Y座標は2種類=y1にポジティブ度合い、y2にネガティブ度合いとする
y1 = []
y2 = []
total_word_count = 0
# 作ったリストの各要素に対して処理を行う
for mero_str in mero_list:
# リストの中身=文字列に対してネガポジ分析を行う。
pos_count, neg_count, word_count = np_rate(mero_str)
# 単語数が0となる行があった場合、その行を飛ばす(0除算防止)
if word_count <1 :
continue
# 全単語数に対するポジティブの比率を、リストに追加する
y1.append(pos_count/word_count)
# 全単語数に対するポジティブの比率を、リストに追加する
y2.append(neg_count/word_count)
# これまでに出てきた単語数の合計をX軸とする
total_word_count += word_count
x.append(total_word_count)
# グラフのフォーマットを指定してプロット
plt.plot(x, y1, marker="o", color = "red", linestyle = "--")
plt.plot(x, y2, marker="x", color = "blue", linestyle = ":")
ネガポジ分析結果

横軸が歌の時系列、赤いグラフがポジティブ度合い、青いグラフがネガティブ度合いです。
きれい、大切、おかげなどのワードで赤グラフ(ポジティブ)が上がり、
陰口、嫉妬、浮気などのワードで青グラフ(ネガティブ)が上がっています。
「陰口を言うな聞くな」「浮気はしない」という箇所は、意味としてはポジティブだと思うのですが、仕様として文脈まで評価していないのでネガティブになっています。
しかしそのお陰で今回、青グラフもちゃんと機能していることが確認できました。(ポジティブな解釈笑)
まとめ
何はともあれ、形態素解析を使うことで文章中に含まれる感情を加味できる点がおもしろいです。
感情や意味の評価ではなく、形態素分析を利用した文章の加工は下記の記事でトライしています。
下記の書籍の第三章を利用しました。
形態素解析とは直接関係なのですが、書籍中では青空文庫から『走れメロス』の全文を取得、加工するスクレイピングの手順も紹介されていて、これがとても参考になります。
「”データさえあれば自動でやってくれるシステム”の運用がとても大変」という経験は皆さんにもあるかもしれません。
データ分析において、データの用意は一番大変な作業といえるかもしれないです。
コメント