なろうAPIの会話率の謎について
はじめに
本作はあくまで、「なろうで執筆を始めてみた初心者」が迷った際の情報まとめとして書いています。
私自身は文系では無いので、文系バリバリの方には劣ります。
なのでマサカリはやめて下さいね。
心をおおらかにしてお読み頂くか、無理そうならブラウザバックをお願いします。
こんにちは、あるいはこんばんは。
皆さん、なろうAPIをご存じですか?
公式サイトはこちらになります。
───公式サイト
https://dev.syosetu.com/man/api/
とは言っても「私はプログラム分からないので…」と思っているそこのアナタ。
プログラムの知識は必要ありませんよ。
自分の作品のNコードを調べて、以下のアスタリスク部分をNコードに差し換えます。
───APIのURL(Nコードを変えて下さい)
https://api.syosetu.com/novelapi/api/?ncode=*******
Nコードだけ書き換えた上記をブラウザのURLに設定すると、アクセスして情報を見る事が出来ます。
今回はそこで見る事のできる「kaiwaritu」についてのお話です。
※情報はこの検証を行った2024/08/24時点のものであり、以降API改修が入って結果が異なっている可能性があります。
───kaiwaritu 会話率
https://dev.syosetu.com/man/kaiwa/
他のエッセイでも幾つか取り上げられていますが、こちらの会話率の謎について、深堀りしているエッセイが見当たらなかったので今回のお話を書きました。
そもそもの会話率の一般的なイメージは…
会話率 = 有効な会話文字数 / 有効な全体文字数
かと思われます。
その計算でなろうAPIの会話率を求めようとすると、計算が全く合わないのです。
それもそのはず、なろうAPIで提供されている会話率とは以下の計算式がベースになります。
会話率 = 有効な会話行数 / 有効な全体行数
そうです。文字数が関係無いのです。
その為、体感の会話率となろうAPIには乖離が発生します。
結論:会話率が高いと気に病む必要はありません!
その事について今回は深掘りしたいと思います。
※長々と解説していますが、会話率が気になっている方への情報となります。
───────────────────────
あまりプログラム関連の話を細かくするのは退屈でしょうから、最低限の部分だけ解説します。
最初に、なろうAPIでlengthという項目について軽く解説します。
───公式の説明抜粋
作品文字数です。スペースや改行は文字数としてカウントしません。
と、なっています。
作品検索などで次のように表示されている『読了時間:約709分(354,073文字)』の文字の数に相当します。
実際には上記の公式説明に加えて、ルビとルビに必要な記号もカウント除外されます。
※ここでその記号書くとルビになってしまうので、詳しくはルビ挿入の公式情報をご確認下さい。
全角半角問わずの余白と改行+ルビ部分が、カウントされません。
本題の会話率。
「会話率が高いと人気でないんでしょ?だから頑張って意識してるのに、なんか違う…計算が合わない!」
いやぁ、お気持ちは凄くよく分かります。
会話率が50%を超えていて、何とか下げようと会話の文字数を削ったり、地の文の文字数を増やしたりを試した方もいらっしゃるのでは無いでしょうか?
少しでも減らないかなと、会話文字を節約してみたりして、何も変わらず徒労に終わる…その道、私も通りました。(苦笑)
まず文字数比率では無くて、行数比率だから文字数を節約しても意味がありません。
また、実際の体感と合わないので、そこまで気にする必要はありません。
ですが、プログラミングの知識が無く、自前で会話率を弾きだすのが難しいという方も多くいらっしゃるでしょう。
その場合に、なろうAPIの会話率はある程度の目安にはなります。
でも、ツールなどを駆使して出した値と、若干異なるのが気持ち悪いと思われる方もいらっしゃるかも知れません。
会話率は、無効行の部分を把握する必要があります。
───公式から抜粋
無効行とは会話行ではなく次の記号いずれか一文字を含まない行です。
「、。・・・??!!」
と、なっています。
会話行や無効行の判定があります。そこだけ押さえておいて下さい。
無効行が存在する理由としては、基本的には見出しや区切りなどを、有効としてカウントしない為に存在しているのだと思われます。
見出しというのは、先程から抜粋などで記載している部分ですね。
───見出しサンプル
まぁ、「───」の部分は他の文字でも構わないですし、無くても構わないものです。
本作では「───」で統一しようかと思います。
次に実際の小説でありそうな二つの例を示します。
───その日の夜更け
サンプル1。
───翌日。
サンプル2。
サンプル1の「その日の夜更け」は無効行ですが、サンプル2の「翌日。」は有効行になります。
違いは句点。それがあるか無いかで有効 or 無効が変わってしまいます。
見出しや区切りは作者によって違うので、まぁしょうがないですね。
定型も無いので、正確に算出しろというのは困難です。
将来的にAIが発達して、「ここは見出し・区切り行」というのを検出してくれる時代を待つしかありません。
次に会話行。
これが本当にまぁ、無理な部分なのかもですね。
そもそも、人間が手動で打ち込んでいるので、「」が必ず対になっていると限らないという点もあり、その時点で正確な算出は困難です。
また、「」の中で改行を入れている作品の会話率もおかしくなります。
次に例を3つ示します。
───────────────────────
───会話サンプル1
「さっきの映画良かったよね。前に座ってるお客さんの頭が凄く邪魔だったな。しかも居眠りしててね。しかもカクカク動くから気になって気になって。」
という会話をしながら帰った。
───会話サンプル2
「さっきの映画良かったよね。
前に座ってるお客さんの頭が凄く邪魔だったな。
しかも居眠りしててね。
しかもカクカク動くから気になって気になって。」
という会話をしながら帰った。
───会話サンプル3
「さっきの映画良かったよね
前に座ってるお客さんの頭が凄く邪魔だったな
しかも居眠りしててね
しかもカクカク動くから気になって気になって」
という会話をしながら帰った。
───会話サンプル4
「さっきの映画良かったよね」
「前に座ってるお客さんの頭が凄く邪魔だったな」
「しかも居眠りしててね」
「しかもカクカク動くから気になって気になって」
という会話をしながら帰った。
───────────────────────
同じ内容ですが、改行が入ってる事によって諸々変わってきてしまいます。
※2と3の違いは句点の違いです。
結果は以下。
サンプル1…会話率50%
サンプル2…会話率20%
サンプル3…会話率50%
サンプル4…会話率80%
サンプル1は会話行1、地の文の行1で50%なのが分かり易いと思います。
ちなみに「」内で改行を行っても、最終的に閉じた場合に、会話行1でカウントされます。
問題は「」を含まない中間に位置する会話行です。
句点を含んだサンプル2は地の文として扱われ20%になります。
サンプル3は無効行として扱われ50%になります。
サンプル4は会話行のカウントが進みます。読みやすくしたいという作者意図で「」を小分けにして、後の地の文で「彼女はこのようにマシンガントークをしてきた」などを補足しても、会話率が高いと認定されます。
例題だと差が顕著ですが、実際の小説でもかなり乖離が発生するのがご理解頂けるかと思います。
ちなみに「」の開いた数と閉じた数が一致しない場合は、会話行としては扱われません。
一致しない行の有効行 or 無効行については、指定の文字を含むか否かで分岐します。
投稿されている作品は、ユーザーが投稿したものです。「」が揃ってないミスを犯している作品も多数あります。それらは全て正しく会話率が算出できていない事になります。
───────────────────────
次は、行数比率での会話率算出になっている事の推察になります。
公式の情報が無いので、あくまで私の推察です。
前述でも示したように、「」をユーザーが揃えてない事や、地の文で無い表現が多数用いられてる事から、厳密に会話率を出すのは無理と判断しているように感じました。
その為、あくまで会話率の目安として提示する為に、行数比率での会話率を提供しているのでは無いかと考えています。
厳密に出せない事から、行数での提供に至った事については、ハイファンタジーなどでよくあるスキルステータスも影響していると予想しました。
よくある、主人公や仲間のステータスやスキルを表記した物の事を指しています。
パラメータやスキルが多いと、わりかし文字数も行数も取っていますよね。
仲間全員分を表示している作品などでは、特に顕著です。
何が問題になるのかというと、これらは地の文だと読者側が認識しにくいのにも関わらず、文字数や行数に対する影響力が高いのです。
その為の無効行と思われます。
見出しや区切り程度であれば、会話率に対する影響力は誤差で済ませられても、スキルステータスの影響は無視できません。
会話とステータスだらけの作品が会話率低めで出たら、多くの読者は納得行かないでしょう。
無効行を取り上げる前に、見出しや区切りについて少し深掘りしておきます。
特に定まっていないので、作者によって様々です。
「***」だったり「===」だったり「~~~」だったり…
私は本書では「───」を使用しています。
それ以外にも「◇」なども多いですね。1個だけだったり、飛び飛びで並べていたりと様々です。
───◇区切りサンプル1
◇◇◇◇◇◇◇◇◇◇◇◇◇
───◇区切りサンプル2
◇ ◆ ◇ ◆ ◇ ◆ ◇
何が言いたいかというと、作者の表現やこだわりによって様々なので、これだったら見出し・仕切り行という目安が無いのです。作者によって割いている文字数も、大きく異なります。その為、無効行が適用されているのだと思われます。
そして無効行。
これには大きな落とし穴が幾つもあります。
次に例文を示します。(例文はステータスの区切りに=を使用しています)
───キャラステータスサンプル1
==========================
LV:9
HP:280
MP:130
筋力:83
耐久:67
俊敏:51
技能:毒効果低減(小) 筋力向上(小)
バックスタブLv1 スラッシュLv1 チャージLv2
魔法:チョットメラメラ ケッコウメラメラ
チョットヒンヤリ ケッコウビリビリ
==========================
「ふむ、そこそこ成長したな。」
───キャラステータスサンプル2
==========================
LV:9 ↑ Up!
HP:280 ↑ Up!
MP:130 ↑ Up!
筋力:83 ↑ Up!
耐久:67 ↑ Up!
俊敏:51 ↑ Up!
技能:毒効果低減(小)、筋力向上(小)
バックスタブLv1 New!、スラッシュLv1、チャージLv2
魔法:チョットメラメラ、ケッコウメラメラ
チョットヒンヤリ、ケッコウビリビリ New!
==========================
「ふむ、そこそこ成長したな。」
───────────────────────
二つのステータスサンプルを提示した訳ですが、上記の会話率の違いは分かりますでしょうか?
1は会話率100%、2はたったの10%ですよ。
1は会話行以外は全て無効行です。
2は感嘆符と読点が入っている為、地の文として有効行扱いになります。
仲間のキャラを全部紹介していくスタイルだと、結構な差になりますよね。
その為の無効行だと思うのですが、作者によってはすり抜けてるのです。
これでは意味が無いのですが、全てのユーザーを一律で判断するのですから、致し方ない部分はあります。
ですので、「会話率が高いと不人気に~」みたいなエッセイを見て気に病んでいるアナタ。
気にしなくていいのです。正確では無いのですから…
いや、まぁ極端なのは読者に嫌われるので、極端にならないように意識するのは良いでしょう。
ですが、なろうAPIの示す会話率の増減に対し、一喜一憂する程ではありません。
気楽に構えましょう!
本書が貴方の執筆活動のお役に立てれば幸いです!
───────────────────────
───おまけ:無効行の罠
無効行には罠があります。
……公式が嘘つくのは酷いと思うのです。
公式には「、。・・・??!!」などが無いと無効行となると記載があります。
問題は、三点リーダーにあります。
三点リーダーは「…」「...」「・・・」の3パターンで検証しました。
───検証したサンプル
「ふむ、そこそこ成長したな。」
追記テスト…
追記テスト...
追記テスト...
追記テスト・・・
追記テスト・・・
追記テスト・・・
追記テスト・・・
会話率は100%です。要するにいずれも無効行として扱われています。
これに気づくのに時間がかかりました。
有効判定になる文字コードがあるのかも知れませんが、検証しにくいのでここまでで止めておきます。
───────────────────────
◆備考
なろうAPIの会話率は小数点切り上げになっています。
情報はこの検証を行った2024/08/24時点のものであり、以降API改修が入って結果が異なっている可能性があります。
後書き:苦労話メモ
・実際に投稿されていないとなろうAPIで情報を取れない。
・「小説家になろうグループの検索や一覧から除外する」のチェックを入れていると、なろうAPIで情報を返してくれない。
上記2点により、検証は困難を窮めます。
いや、検証している途中の物を見られても構わないのなら楽なのでしょうが、「変な投稿してる作者だ。ミュートしよ」になると困るので、必死にコソコソ検証していました。
これの為に検証する人が少ない&バグが放置されているのかなとも思ったりもしましたね。
なろうAPIの会話率はあくまで目安として利用する程度で、正確に会話率を知りたいのなら自分の作風のスタイルに合わせて自作プログラムで算出するとかでしょうか。
まぁ、普通の人にはハードルが上がりますよね…