自作ツールでもっと分析できたらいいのになぁ、という底なし沼

「ベストセラーコード」を読んだら、

そこに載っている分析もやりたいなぁ、

って思いました。



感情分析なんて、是非ともやりたいところです。


主人公の感情をチャックすることで、

物語の起伏を確認でき、

それによって物語の展開が最適な流れになっているかを可視化できる。

っていう理屈なんですよね。


でもこれ、実現するのは大変ですね。


そもそも感情分析のために、

その文章がポジティブな内容か、ネガティブな内容か、という判定が必要です。


ごくごく単純な分析なら、

ネット上で公開されている極性辞書を利用すればOKです。



ここまではプログラミング歴のめちゃくちゃ浅い私でも、

ツールを作ることができました。


今は、色んな人が書籍やウェブサイトでコードを公開して共有を行う時代ですから、

シンプルなプログラムであるなら、

他人の書いたコードの継ぎはぎで案外簡単に作れたりします。



でも極性辞書に書いてあるのは、


嬉しい=ポジティブ


という感じで、単語に対する評価のみです。


たとえば、

「こんなもの、嬉しいはずはない。」

って文章はネガティブな内容ですよね。


でも極性辞書の内容だけで判定したら、

これはポジティブな文章として扱われてしまいます。



なので


ですが、既にこの段階で、

継ぎはぎだけではどうにもならない感触があります。


どういうコードを書けば実現できるのか。

その見当がつくくらいの知識が求められるようです。


というわけで現在、諦めモードです。


誰か詳しい人が作ってくれるの待ちですね。



一応、そういうツールを公開しているところもあるんですけれど。

特にGoogleは日本語に対応したものを公開しているみたいですね。


でもそのツールを無料で使えるのはごく限られた文章量で、

一定量以上の利用は有料だったりするんですね。


自分の小説を分析するだけなら充分かもしれませんけれども、

たくさんの小説を分析するってなると、

それは無料の範囲では無理って感じでしょうか?


でもせっかくなら、色んな小説を分析に突っ込みたいですよね~。

それに小説の分析に向いている形であってほしいので、

そういう意味でも理想は自作ツールなんですね。



あと、極性辞書を使って判定までのシンプルな分析であれば、

「Novel Supporter」というソフトでもできます。


その存在を知らなかった私はツールを作っちゃったわけですけども。

こちらのツールは結果をグラフ化してくれるようなので、その点は私の自作ツールより高性能ですね。


ただ、極性辞書のみの分析です。

「私は嬉しくなかった」という文章は、「嬉しい」があるのでポジティブな文章と判定されます。

そこは私のツールと同レベルです。



あと、極性辞書って、現状ウェブで公開されているものが古いんですよね。

私やNovel Supporterが使っている辞書は、2008年に公開されたものを使用しています。

10年も前ですよ!?


たぶん現在の主流は、人工知能にポジティブな語やネガティブな語を学習させる、というものだと思います。

これなら、新語にも対応できます。凄いぜ人工知能!

私も人工知能が欲しい……。



極性辞書のみの場合、もっとちゃんとした分析ツールと比べて、結果にどれくらいの差があるのでしょうか?

誰かそういうデータを持っていないものかしらん?

それがわかれば、まだ分析のやりようがあると思うんですけどね。



あともう1つ分析したいことがあります。

文体の良し悪し。

それを判定したいです。


以前に、

ランキング上位の小説と、そうでない小説を比較する!

みたいなことを書きました。


それで、人気のある小説の方が、シンプルな言葉を使う傾向にあるんだよ、ってことを書きましたね。



ここを突き詰めれば、

「この小説の文章は、他の人気作と同じ特徴を持っているか?」

という判定ができます。


理想は、ベストセラーコードと同じように、

人工知能に学習させて判定させる方法です。



でもそれを言うと、感情分析の時と同様に、

「誰かが作ってくれるの待ち」

という結論になってしまいます。


人工知能を作るための本を買いましたけど、

内容難しくて、全然読み進められませんでした。



そこで簡易版の判定ツールを作っています。


理屈・手順は簡単です。

対応分析を利用します。


手順1・人気作に共通かつ特徴的に登場する語を探す

手順2・その言葉でコーディングルールを作る

手順3・登場率で良し悪しのボーダーを見て判定する


という感じです。


たとえばカクヨムの300作品を比較した結果、

人気の高い小説の方が「しかも」の登場率がより高いというデータが得られました。


人気の高い小説の「しかも」の登場率と、

そうでない小説の「しかも」の登場率とで平均の値を取って、

これをとりあえずの良し悪しボーダーとします。


しかもの場合、


人気のある小説では、平均0.23%

そうでない小説だと、平均0.16%

の登場でした。


この間を取って、0.19%を良し悪しのボーダーとしてみます。


そして自分の小説の「しかも」の登場率が、

この良し悪しボーダーを超えているか?

ってチェックをするわけですね。



正直なところ、

「しかも」をチェック項目に使うのは、私自身、若干疑問を持っています。


でも「しかも」以上に有用な言葉が見つからない限りは、

やむを得ず使う、というスタンスです。



で。

このような判定のための項目を何種類か作ります。

私の場合、8種類の項目を用意しています。


たとえば「しかも」の他に「?(疑問符)」も、

人気の高い小説でより使われる傾向がありました。



「?」だと、

人気のある小説は、平均9.13%

そうでない小説で、平均7.81%

という使用率でした。


良し悪しボーダーは8.47%としています。


こちらは、けっこう有力だと思っています。

「?」の多さは、ベストセラーコードでも指摘されていたことですしね。



反対に、人気のあまりない小説で多く使われる語もあります。

それもチェック項目化します。


そうして8種類の項目を用意できたので、

これを用いて8点満点方式で文体を採点できる、

っていうわけです。



この8点満点方式の文章チェック項目。

KH Coderのコーディングルールを活用するわけですから、

私がそのコーディングルールをここで公開すれば、

みなさんでも同じように分析できます。



せっかくなので、公開しちゃいます。

ぶっちゃけ、この判定項目は未完成の状態です。


さっき書いたとおり、

「しかも」を項目に入れるのどうなの?

みたいな疑問点がまだ存在しています。


今後、もっと改良したバージョンを作る予定ですし、

今のバージョンを独り占めする理由はどこにもありません。


なので公開しちゃおうってわけですね。

是非遊んでみてください。



なおこのコーディングルールでは、


*しかも↑0.19

というように、コード名の中にボーダーを表記しています。


↑0.19は、「0.19%以上なら良い文体」という意味です。


もしこれが、↓0.19なら、

「0.19%以下なら良い文体」となります。



*しかも↑0.19

しかも


*疑問↑8.47


*副詞↑1.74

とりあえず or いきなり or 普段 or かなり or 色々 or 一応 or そろそろ or 別に or まさか or もしかして


*形容↑0.51

可愛い or 綺麗 or 美味しい


*感動↑1.14

なるほど or っぽい or まぁ or あぁ or えっ or おお


*名詞↓2.06

国 or 気持ち or 心 or 光 or 音


*人間↓1.98

胸 or 肩 or 腕 or 女性 or 少女 or 子供


*副詞2↓1.88

ずっと or きっと or いつも or まるで or どうして or ほとんど or ゆっくり

  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る