Un nouveau monde parfumé

香り立つ備忘録

ビッグデータを舐めるな

この記事は klis Advent Calendar の4日目の記事です。

www.adventar.org

昨日はkngさんの音声アシスタントアプリ更新でした。僕も早速インストールしてみましたが、可愛らしく賢くて素晴らしいアプリだと思います。個人レベルに到底見えねえ。

こんにちは、かみかみです。klis14です。よろしくお願いします。

宣言通りcoinsLTで話した内容を書こうと思うんですが、そもそも当初の予定では f:id:pikatenor:20151204105209p:plain というネタスライドをやる予定だったんですが実装が間に合わなかったので代わりに某授業で発表したスライドを焼き直して発表することにしました。
したがってこの記事も間に合わなかった仕様の記事になります。
まあ受講者各位はお分かりでしょうが授業での発表の時に人が少なくて少し寂しかったのでその供養の意味もあります。
Rubyに関しては時間があれば終わらせてCalendarのどこか空いてる枠で出来たら良いですね。ただ僕は誰かにケツを叩かれないと行動しないタイプの人間なので、各位は僕のケツを叩いて下さい。お願いします。

本題です。

きっかけ

某hogehogeでは各人が何かしらビッグデータを使ってなんかやれ、と指令を受けて受講者が発表をします。
何かやれと言われたからには何かやらないといけないので、僕は文章の読みやすさについて何か検証できないだろうか、と考えました。
そこで思い出したのが中学校時代の塾の先生の「作文を書くとき3,5,7音のリズムを意識すれば読みやすくなって点数も高くなる」という指南です。

…それマジ?

ということでそれを検証することにしました。

文献調査

みんな大好きですよね575。俳句が嫌いな日本人ってそういないんじゃないでしょうか。
じゃあなんでみんな大好きなんだろうということでいくつか*1の文献をあたってみましたが、明確な理由は分かりませんでした。どうも日本人は学校の授業などで詩歌や古典的な文章に親しむうちに「七五調」などのリズムを心地よいと感じるようになったらしいです。
ところで俳句や和歌の7音句というのは意味的に3+4か4+3に切れるもので、つまり前述の先生の言っていた「3,5,7音」よりは「3,4,5音」の音律パターンの方が重要らしい、ということが分かりました。

似た先行研究としては文章のリズムを元に小説の執筆支援を行うプログラムを作ったもの*2もありましたが、音律パターンに関する言及はありませんでした。

ここで一句bot

話は変わりますがここで一句botっていう有名なbotがありますね。

twitter.com

ここで使われているのがikkuというRuby向けライブラリで、rubygemとして公開もされています。

github.com

ikkuの使い方については作者のr7kamuraさんの書いたこのへんを参考にしていただくとして、ともあれこのおかげで簡単にリズムの検索ができそうです。

分析対象

今回、研究用サーバーには楽天データが用意されました。

楽天データとは

詳しくはここをご覧頂きたいのですが、楽天学術研究用に自社のサービスのデータを公開しているというものです。利用には申し込みが必要で、大学の研究室単位で受け付けています。

楽天データのうち、楽天トラベルのレビューデータからそのレビューを投稿したユーザーの「参考になった・ならなかった」獲得数が得られます。
そこで今回は

評価の高いユーザーによるレビュー=読みやすい 読みやすい=リズムが良い

と(何やら相当な無理もある気もしますが)考え、2者の相関関係を調べました。

レビューの全データは4,654,788件、この内「参考になった・ならなかった」の評価があった87,504件について今回は解析を行いました。

"一句度"の算出

さて、文章のリズムの良さを何らかの形でスコア化する必要がある訳です。

今回重視したいのは文章の中の「3,4,5音」の音律パターンの量です。

まず、それぞれのレビュー文章の中から5音、3+4音、4+3音で区切れるフレーズを全て取り出し数を合計します。
当然文章が長いほど多くのフレーズが得られます。 f:id:pikatenor:20151204221237p:plain この図は横軸が文章の長さ(単語数*3)、縦軸が見つかったパターン数です。
両者には明らかな比例関係が見られます。
傾きを求めると4.155419でした。

そこで、

(取り出された1句フレーズの合計)÷(単語数×4.155419)を一句スコアとして、レビューの評価の合計(参考になった - 参考にならなかった)との相関をみました。

結果

何の相関もありませんでした f:id:pikatenor:20151204222152p:plain ※横軸は評価、縦軸は一句スコア。つまり比例っぽいグラフであってほしかった

ちなみに相関係数も一応出しましたが悲しくなるぐらい低かったので書きません。

反省

f:id:pikatenor:20151204222533p:plain これはスコアのヒストグラムなんですが、0.00の辺りにおかしな奴らが紛れ込んでいますね。
これは大体こいつらが原因です。 f:id:pikatenor:20151204222851p:plain この左で膨らんだ奴らです。
横軸が単語数、縦軸はスコアです。文章が短いほどスコアのバラつきが大きくなるという話です。単語数で割っている以上当たり前といえます。

ここで足りなかったのが悪いデータを事前に除く、クレンジングと呼ばれる作業です。
正規化や欠損データの削除など、テキストマイニングの前には大なり小なり必要となるクレンジングですが、今回は短い文章の削除もやった方が良かったと言えます。

…では悪いデータを切って何か結果が変わったか、というとぶっちゃけそうでもなかったです。

そもそも足して割っただけのスコアの算出方法に問題があるとか、色々あると思いますが、ともあれ今回の結末としては文章のリズムとレビュー評価には何の関係もなかったということで終わりになります。何かを期待させてしまったならごめんなさい。

余談

処理の内容にもよると思いますが形態素解析をしてフレーズを前から総当りで探す今回の処理なんかだとそこそこ時間がかかります。
僕の書いたコードがクソとかそういうのは当然ありますが8万件のデータを処理するのに5〜6時間は掛かっていたかなと思います。

解析にかかる時間をきちんと考えて計画的に進捗を生みましょう。 ビッグデータを舐めるな。奴らを甘くみてはいけない。以上知見でした。

kils Advent Calendarは続く

明日はかなせるさんです。お楽しみに。

*1:山口治彦. 語呂のいいことば : 並列表現の音と意味 (特集 語呂、発音とリズム). 日本語学. 2014, vol.33, no.6, p.18-27. 坂野信彦. 音韻 日本語のリズム (特集 日本語はここまでわかった). 日本語学. 2008, vol.27, no.12, p.32-40. 糸井通浩. 日本語のリズムとメロディ. 日本言語文化研究. 2011, vol.15, p.54-66.

*2:齊藤雄大, 長谷川大, 佐久田博司.文章のリズムを考慮した小説執筆支援システムの作成.第75回全国大会講演論文集. 2013, 2013(1), p.145-146 http://ci.nii.ac.jp/naid/170000091386

*3:形態素解析にはMeCab+ipadicを使用しています。ikkuも同様です。