[検証]いろいろ名作を感情分析してみたら、清少納言の怖さを見た。

## はじめに

初めまして。エイチームライフスタイルで、
エンジニア/デザイナー部門のマネージャをしております@b_bと申します。
本記事は[エイチームライフスタイルのアドベントカレンダー2020](https://qiita.com/advent-calendar/2020/ateam-lifestyle)の2日目として執筆いたしました。
昨日、当社が誇るエンジニアマネージャの@aiji42が華麗なトップバッターを飾り、
明日以降も、エイチームライフスタイルのエンジニア/デザイナー/マーケター..等々、
異種格闘技戦な布陣でお届けします。
濃ゆい毎日になるかと思いますので、2日目の今回は、思いっきり力を抜いて読んでいただける記事となっております。
よろしくお願いいたします。

今回はタイトル通り、いろいろな古典文学の名作を感情分析して遊んでみました。

## 今回やること
* 色々な古典の名作について、執筆時の作者の心情がいかなるものだったか分析します
    * 感情分析はGCPのNaturalLanguageAPIを利用
    * サンプルに選定した作品は「私小説」「随筆」「俳句」など、作者の心情が表れてるような気がするものを適当に選んでます
* 感情分析結果はあくまでも、本実験の前提に基づいたものであり、信憑性は保証しかねます
    * 悪ノリにすぎる部分が多々あるかと思いますが、ご容赦ください


## NaturalLanguageAPIとは？

GoogleCloudPlatform(GCP)が提供する、学習済み自然言語解析モデルを用いて、
一般的なコンテンツ分類や感情解析等を提供するAPIです。
機械学習の専門的な知識は必要とせず、手軽に自然言語解析を試みることができます。
今回はシンプルに、「執筆時の作者の感情はいかなるものだったか？」の検証ですので、
以下の属性値に注目していくことになります。

* Score: 感情のネガティブ/ポジティブを表した -1.0〜+1.0範囲の数値
    * 正の数がポジティブ、負の数がネガティブを指す
    * -0.25〜0.25付近が「ニュートラル」と公式は解説しています
        * とはいえ、文章の性質によりスコアの上下変動は変わります
        * この範囲内でも、ネガ/ポジと判断して解説するケースが本検証にも含まれます
* Magnitude: 感情の強さを表す正の数です。仕様上、上限値はなくinfinityです
    * 公式に、「長い文章が高いmagnitude数値を導出しやすい」との解説がされています

* [こちらのデモで単発の解析は実行できます](https://cloud.google.com/natural-language?hl=ja#natural-language-api-demo)
* [クライアントアプリ向けのライブラリも各種言語で公開されています](https://cloud.google.com/natural-language/docs/quickstart-client-libraries?hl=ja)


前置きはこれくらいにして、
さっそく検証を始めていきましょう！



## 実験その１）太宰治の現役時代をグラフ化してみた

太宰治といえば、「走れメロス」「人間失格」など、有名な作品を数多く執筆された昭和の文豪ですね。ピースの又吉さんがリスペクトしていることでも有名です。  
[青空文庫](https://www.aozora.gr.jp/index_pages/person35.html#sakuhin_list_1)で多数の小品が公開されてましたので、一気に解析にかけてみたいと思います。

```rb
require "google/cloud/language"

language = Google::Cloud::Language.language_service
text = "ここに解析したい文章を指定します"
document = { content: text, type: :PLAIN_TEXT }
response = language.analyze_sentiment document: document
sentiment = response.document_sentiment

puts sentiment.score      # scoreは -1.0〜1.0の範囲。正の数値がポジティブ.負の数がネガティブ 0周辺がニュートラル
puts sentiment.magnitude  # 感情の「強さ」を表す正の数。文章の長さに比例して大きくなる傾向がある。
```
こんな感じで簡単に解析結果を取得することができます。

今回は青空文庫さんよりデータ引用して、174作品の解析を試みました。
結果をグラフにまとめたのでご覧ください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/16826/02f6a99d-4340-49ff-1c4b-0e07d64d6392.png)

短編小説やエッセイなどが多く含まれています。「人間失格」などの中〜長編小説は割愛しています。
全体の傾向としては、感情のネガティブ/ポジティブを指すScoreの値は概ねゼロ周辺に偏っています。
文章が長い分、ポジ／ネガが相殺しあってこのような結果になったと思われます。

最高値（ポジティブな感情）は0.2台（1948年「犯人」）
最低値（ネガティブな感情）は-0.4台（1948年「かくめい」）と出ました。

キャリアの前半期は、scoreがほぼゼロの作品が多く、比較的ニュートラルなものが多い中、
後半から晩年にかけて、徐々にscoreの振れ幅が大きくなってきているのが見て取れます。

magnitudeの値については、文章量に比例して大きな数値になる傾向が見えること、
scoreの振れ幅が大きい作品ほど、magnitudeは落ち着いた値（文章量が少ない？）となる傾向も見えますね。


いかがでしょうか？
ふーん、、って感じですねw
構想時点で思っていたほどの感情の振れ幅はありませんでしたが、発表年次ごとに整理すると、
それなりに何かの傾向が見えるようで、個人的には興味深かったです。

どんどん行きましょう

## 実験その２）俳句はどうか？

名作俳句を連続でどうぞ
ここ以降の単発解析は、[デモページ](https://cloud.google.com/natural-language)を利用させていただきました。

```
古池や蛙飛びこむ水の音
作：松尾芭蕉
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/16826/5eefe553-0af9-5499-ec99-723b3f48b68d.png)

```
菜の花や月は東に日は西に
作：与謝蕪村
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/16826/a7a80c0a-3943-9759-1d9f-9b746432e102.png)

```
雪とけて村いっぱいの子どもかな
作：小林一茶
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/16826/2b47c19b-d993-3552-7d13-8e495183046e.png)


。。。ほぼゼロでしたw
小林一茶のみ若干ポジティブ反応。クスッと笑ってもらえたようですが、
芭蕉さんと与謝蕪村さんは、見事にゼロ反応です。
実は他にもいくつかの俳句を解析試みたのですが、結果はどれもゼロ。
このネタは没かな、、と思ったところに小林一茶が反応してくれました。一茶さん、ありがとうございます。

どうやら、俳句はセンテンスが短すぎるのか、
基本的にニュートラルと判定されちゃいました。

それか、そもそも俳句は情景描写を通して作者の心情を”察してよ”な文学なため、
文章そのものから感情解析をするには敷居が高かったのかもしれません。
とはいえ、モデルの学習がどんどん進めば、いつか俳句すらも感情解析ができる未来もくるかもしれませんね。

## 実験その３）詩も試してみます

宮沢賢治の「雨ニモマケズ」
小学校の国語の教科書に載ってましたね。暗唱練習しました。（暗唱自体になんの意味があったんでしょう）

原文はカナ表記ですが、解析の支障になるかと思い
ひらがな表記にひらいた文章で試してみます。
（センテンス単位で解析をされているようで、句読点も意味を鑑みて私の方で振ってみました）

```
雨にも負けず、 風にも負けず、 雪にも夏の暑さにも負けぬ、 丈夫なからだを持ち、 欲は無く、 決して瞋からず、 何時も静かに笑っている。
一日に玄米四合と、 味噌と少しの野菜を食べ、 あらゆる事を自分を勘定に入れずに、 良く見聞きし判り、 そして忘れず、 野原の松の林の影の、 小さな萱葺きの小屋に居て、 東に病気の子供あれば 行って看病してやり、 西に疲れた母あれば 行ってその稲の束を背負い、 南に死にそうな人あれば 行って怖がらなくても良いと言い、 北に喧嘩や訴訟があれば つまらないからやめろと言い、 日照りのときは涙を流し、 寒さの夏はオロオロ歩き、 皆にデクノボーと呼ばれ、 誉められもせず苦にもされず、 そういう者に、 私はなりたい。
```

解析結果です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/16826/a53cbc00-b383-3fbf-4f25-be0605413eb3.png)

私の解釈では、前半部と後半部（切れ目は「イツモシヅカにワラツテイル」のところ）でセンテンス分けしました。

前半部は非常にポジティブですね。0.9です。ほぼmax値。
無欲ながらも壮健である様子を”断定”しているため、非常に力強く見えたんでしょう。頼もしいです。
（この段は、後半部にて「サウイフモノニ、ワタシハナリタイ」と、あくまでも”願望”であることが分かるのですが）

後半部は0.1と、ほぼニュートラルな結果です。
ここで象徴的なのは「ホメラレモセズ、クニモサレズ」のくだりですね。
感情の起伏を大きく持つこともなく、慎ましく、だけれども弱者の助けとなるような人ではありたい、、という意思表明が
全体にわたって展開されているので、ニュートラル判定も納得です。

全体の意図するところとしては後半部のニュートラル判定の方が近い気がしますが、
前半部の超ポジティブ判定との相殺で、わりかしポジティブな評価となりました。

スコアの強弱はともかく、この詩がネガティブな感情に基づくものではないので
割と良い結果と言えるのではないでしょうか？

## 実験その４）早口言葉の古典も試してみる

[外郎売（ういろううり）](https://ja.wikipedia.org/wiki/%E5%A4%96%E9%83%8E%E5%A3%B2)は、２代目市川團十郎によって初演された歌舞伎の演目、、だそうです（すみません詳しくないです）
劇中に出てくる外郎売の長科白が、いわゆる早口言葉のオンパレードで、ちょっと抜粋すると

```
小米の生噛み、小米の生噛み、こん小米のこ生噛み。
繻子・緋繻子、繻子・繻珍（しゅす、ひじゅす、しゅす、しゅちん）
```

という感じです。
我が家にこの口上を[子供向けの絵本](https://www.ehonnavi.net/ehon/27393/%E5%A4%96%E9%83%8E%E5%A3%B2/)に仕立てた本がありまして、子供に読み聞かせをしているうちに馴染み深くなりました。

ということで、こいつも試してみます。
畳み掛けるような口上で、ハイテンションの塊みたいな外郎売のおじさんです。
さぞかしポジティブなscoreが叩き出されることでしょうね^^

結果です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/16826/53d50f29-43e3-b8a8-7886-ccaef7f2107f.png)

。。。なんとまさかのニュートラル判定。ゼロです。
非常にテンポよく早口口上をぶん回してるこのおじさん、
内心は嬉しくも悲しくもなく、つまらなそうにこなしていたんでしょうね。
毎日同じ口上を繰り返していれば、やっぱりそうなるんですかね。

とはいえ、一部のセンテンスに異常値がみられました。
ピックアップしてみてみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/16826/629d9795-9a1d-7409-83d2-f0435f4838a5.png)

様々な種類の早口言葉を披露する中で、ほとんどがニュートラル判定な中、
なぜかこの一文については、とても嬉しそうな様子です。
（「爽やか」って単語に反応してるだけな気もしますが）

もう一つ取り上げます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/16826/d15efe1a-ca8e-2e5c-12a1-6e8a952158ef.png)

個人的にはこのくだり、口にしていてとても気持ちよく好きな一文なんですが、
他の早口は平穏な感情のこのお兄さん、なぜかこの一文はとてもイヤそうです。。
何がそんなにイヤなんでしょうか。
『「たぁぷぽぽ、ちりからちりからつったっぽ」って何だよ！！意味わかんねーよ！』みたいに、心の中では毒づいてるのかもしれませんね。

意外な結果でした。


## 実験ラスト）日本最古のエッセイ、「春はあけぼの」を〆にどうぞ

外郎売がピリッとしない結果だったのを受け、ラストでスベる訳には行くまいと、
最後の手段に出ます。

”平安時代のさくらももこ”、清少納言の登場です。
皆さんご存知、日本最古のエッセイと呼ばれる「春はあけぼの」を取り上げます。

「いとをかし」のフレーズ、とてもポジティブな響きですよね。
このフレーズが多々出てきます。
四季折々における「いとをかし」をこれでもかと並べ立てた、まさにポジティブの塊のような文章。
清少納言も、この文章を書いていた時は、超ポジティブだったんじゃないでしょうか？

それではみてみましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/16826/c92f1b7e-2c8c-53dc-6514-36e3cce49742.png)

。。。。
いや、まあこんなことになるんじゃないかとは思ってました。
安定のゼロ着地ですね。
清少納言は、「をかしをかし」と並べたてても、シレッとした心境だったようですね。

もっと怖いのは、

```
日入りはてて、風の音、虫の音など、はたいふべきにあらず
```

（秋の夕暮れに）日が暮れて、風の音や虫の音などが聞こえようもんなら、言葉にできないくらい素晴らしい（意訳です）

こんなに大絶賛しながら、その心中はscore-0.5な訳です。
文句ないネガティブ。
人間不信になりそうな解析ですね。。

## 終わりに

いかがでしたか？
ふーん、、、って感じでしたよね。私も同じ気持ちです。
ただ無性に、こんな無意味な目的だからこそ、楽しんで検証ができました。

あくまでも今回の検証は全てネタとして取り組みましたが、
いくら偉人/文豪とはいえ、ちょっと悪ノリがすぎましたら、謹んでお詫び申し上げます。

特に、釣りタイトルに取り上げた清少納言の姉さん、本当にすいませんでした！

同僚と話していましたが、今後機会があれば

* scoreをネガやポジが色濃く出る（めっちゃテンション高いor低い）
* magnitudeが極大値

みたいな文章をいかにして作るか！？なんて検証も試してみたいと思います。
その時はもはや、一寸の技術的な知見も得られないネタになるかと思いますが、
興味のある奇特な方はまたお付き合いください。

最後まで読んでいただき、ありがとうございました。
明日は当社が誇るスーパーエンジニア@dabitsが担当します。どうぞよろしくお願いいたします！

“挑戦”を大事にするエイチームグループでは、一緒に働けるチャレンジ精神旺盛な仲間を募集しています。興味を持たれた方はぜひエイチームグループ採用サイトを御覧ください。
https://www.a-tm.co.jp/recruit/