見出し画像

ブンゴウサーチで同じタイトルの作品が多くて探しにくい問題を解消しました

青空文庫の作品を読了目安時間で検索できる「ブンゴウサーチ」で、登録作品の正規化を行い、同じタイトルの作品が多くて探しにくい問題を解消するアップデートを行いました。

何が問題だったの?

青空文庫では、同じ作品でも文字遣い(漢字の字体 & 仮名遣い)が違ったり、テキストが異なる場合であれば、別作品として登録することができるようになっています。

例えば以前にブンゴウメールでも配信した芥川龍之介の『河童』は、「新字新仮名」と「新字旧仮名」の2種類が登録されています。

これらの表記違い版は、データ上は別々の作品として登録されているため、ブンゴウサーチの一覧画面にもそれぞれ独立して出現していました。

その結果、例えば宮沢賢治の『銀河鉄道の夜』は、4種類あるバージョンがすべて別々に人気ランキングの上位に出てくるという事態になっていました(すごい人気です)。

※『銀河鉄道の夜』は何度も改訂が行われて草稿状態で遺された作品のため、様々な版が存在することで有名です。ぜひ読み比べてみてください。

今回の修正で何が変わったの?

表記を選べることは非常に重要で有益なのですが、一覧画面に同じ作品が分散していると、どれを選べばいいのか混乱してしまうことがありました。
そのためこうした表記違いバージョンを、一覧画面では1つの作品としてまとめて表示(正規化)するようにしています。

基本的に最も表記が新しいもの(新字新仮名 > 新字旧仮名 > 旧字新仮名 > 旧字旧仮名)を代表として一覧に表示するようにし、同じ表記が複数ある場合は最もアクセス数が多いものを代表としました。

もちろん表記違いを見れなくなったわけではなく、複数バージョンある場合は作品の詳細画面で表記を切り替えられるようになっています。

スクリーンショット_2021-07-12_14_40_46

その他の細かい修正

また今回の修正に合わせて、他にもいくつかアップデートを行いました。

1. 底本情報の追加
詳細画面に「底本(青空文庫へのテキスト登録時に、入力元のデータとして採用した本のこと)」情報も表示されるようになっています。
ほとんどの場合バージョン違いは底本が異なりますので、作品選択の参考にしていただければ幸いです。

2. 副題の追加
またその他の変更として、ブンゴウサーチでも作品の副題を表示するように修正しました。
例えば今までは野村胡堂の『銭形平次捕物控』が400件以上同じタイトルで表示されていて全く見分けがつかなかったのですが、副題の表示+表記違いの統合によって、今後は見分けられるようになったんじゃないかと思います。
この機会にぜひご挑戦ください(それにしてもすごい登録数です)。


3. 人気ランキングの再集計
また複数バージョンをまとめるにあたり、人気ランキングの指標である累計アクセス数も、複数バージョン分を合算して集計し直しました。
その結果、4つのバージョンにアクセスが分散していた『銀河鉄道の夜』の順位が上がるなど、より実態に近いランキングになったのではないかと思います。
ブンゴウサーチのランキングは滅多に変動しないので、この機会にぜひ見てみてください。

と、簡単に言ってはみましたが

ここからは半分くらいがシステム的な話で、残り半分がただの愚痴なのですが、複数バージョンをまとめるのは実はそんなに単純な話ではなく、現在の状態も決して100%完璧なものではありません。

表記違いだと思われる作品も、青空文庫のデータではあくまですべて独立した作品となっていて、どれとどれが同じ作品の表記違いかというデータは存在していなさそうです。

そこで同じ著者で同じ名前の作品をリストアップしてみるわけですが、これだけではまだ同一作品のバージョン違いだと断定することはできません。

例えば雪博士・中谷宇吉郎の『アラスカの氷河』は同名作品が2つ登録されていますが、片方がフルバージョンでもう片方は同作品の抄録でした。
(これは同一作品とみなして統合してもよさそうですが、読了時間の区分が変わってしまうので今回は別作品扱いのまま残しています)

また若山牧水の『みなかみ紀行』の場合は、同名の単体作品とそれを収録した同名の作品集という2バージョンが登録されています。
こうしたケースではやはり別作品扱いが妥当なのかなという気がしますね。

作品の文字数で判断できるのでは説

ここまでのケースを見ると、作品の文字数にある程度差があるときは別作品と見なすのがよさそうです。
しかし、じゃあ同名で文字数が近かったら同一作品なのかというと、そうとも言い切れません。

例えば菊池寛の『入れ札』という作品はほぼ同じ文字数で2作品登録されていますが、実はそれぞれ小説と戯曲なので、別作品として扱うのが妥当そうです(菊池寛の戯曲といえばブンゴウメールで配信した『父帰る』もおもしろかったです)。

他に岡本綺堂でも戯曲と小説が同名だったり、原民喜でも詩と散文が同名だったりするケースがあります。

じゃあ書き出しの文章で判断できるのでは説

上記のようなケースだと本文が完全に異なるので、当然ですが文章の書き出しも全然違います。じゃあ書き出しが違うものは別作品として判定しようと思って文章の類似度判定処理も入れてみたのですが、やっぱりこれだけではうまく判断できないケースが多々あります。

例えば芥川龍之介『侏儒の言葉』は2つ登録されていて書き出しが全然違うのですが、これは片方にのみ序文が追加されているためです。それを除くと後は同じ文章(の表記違い)なので、この場合はやっぱり同一作品としてまとめたい。

結局どうしたかというと

調べていると他にも色んなケースがあることがわかったので、完全自動化は早々に諦めました。

最終的にどうしたかというと、上記のようなルールでほぼ確実に同一である/同一でないケースを自動判定し、それ以外のものは手動判定を求めるようなスクリプトを組んで、地道に同一判定を行いました。

手動判定でやったことは、同名作品をそれぞれ青空文庫の元データにあたり、底本情報や本文・入力者のコメントなどを比較して判断したという感じです。
また今後青空文庫に作品が追加された際にも継続してアップデートしていけるよう、一度判定したものは今後自動判定されるようになっています。

それでも青空文庫には本当に多様なデータが登録されているので、自動判定が間違っていたり、手動判定でミスをしている可能性もあります。
もしおかしいデータを見つけた方はぜひ指摘してもらえるとうれしいです。

青空文庫データがもっと活用されますように

散々つらみを愚痴った後に何なんですが、今回の正規化の試みはもちろんブンゴウサーチの利便性向上が目的ではあるものの、同時に青空文庫のデータ改善に貢献できればという狙いもありました。

ブンゴウメール・ブンゴウサーチのデータを活用した青空文庫API「ZORAPI(ゾラピ)」というものも提供しているのですが、今回の正規化データもいずれこのAPIに反映し、他の開発者が活用できるようにしたいと思っています(正式提供には時間がかかりそうなので、早く使いたい方は個別にご連絡ください!)。

ブンゴウサーチやZORAPI自体、青空文庫に何かしら貢献できればという思いもあって運営しているのですが、今後もこうした形でささやかながら改善に取り組んでいけるとよいなと思っています。

※このあたりはブンゴウサーチ(旧ゾラサーチ)リリース時の記事にも書いていましたので、よければこちらもご覧ください。↓↓

上記記事でも紹介しておりますが、有志による青空文庫を技術的に支える活動「aozorahack」という取り組みもあるので、興味のある方はぜひ参加してみてください! 

あとがき

という感じでそれなりに手間のかかる改修だったのですが、読んだことのない作品を知る機会にもなって楽しい作業でした。
先述した『アラスカの氷河』もおもしろかったのですが、そうやって寄り道するから作業が終わらないのではないかという反省もあります。
次は作業が終わってから読書するようにしたいと思います。


この記事が気に入ったらサポートをしてみませんか?