カーリル Furikake は、
図書館の蔵書目録のためのルビエンジンです。
蔵書目録として入力されたヨミを、ワード単位の読みやすいルビに組み立て直し、図書館のアクセシビリティを高めます。
POST /v1/ruby実際の画面で見るカーリルの表示例蔵書検索サービスへの組み込み例
蔵書目録には書名のヨミを記録しています。それでも検索画面の書名にルビを付けるには、次の5つの問題がありました。
形態素解析の辞書でルビを推定すると、新刊の書名の約17%で誤ったルビが付きました。
辞書やLLMは、書名とヨミを照らし合わせるための手がかりとしてだけ使い、ルビは図書館が作成したヨミから構成します。推定はしません。当て字や人名も、整合性を確認しながら図書館の表現を残します。
蔵書目録に記録されているのは書名全体の読みで、どの漢字にどの読みが当たるかは分かりません。
形態素解析で得た読みの候補を手がかりに、書名とヨミを一文字ずつ突き合わせ、ヨミを語ごとに切り分けます。主題と副題の順がヨミと逆でも対応づけます。
ヨミは検索や並べ替えのためのデータです。カタカナで語の間に空白を入れたり、助詞の「は」「へ」「を」を「ワ」「エ」「オ」と書いたりします。図書館によっては小さい「ャ」「ッ」を大きく書くこともあります。
目録の書き方の違いを吸収して、読みやすいかなで返します。漢字の読みはひらがなに、外来語の当て字(鎮魂歌=レクイエム)や英字の読みはカタカナにします。
図書館の作成したヨミは、これまで一般に表示していない場合も多く、入力ミスや、読み違いも多数含まれています。
辞書の読みより短すぎる、辞書の読みとかけ離れているなど、明らかにおかしいヨミを検査します。かけ離れた読みは当て字として成り立つかをLLMが判定し、成り立たなければルビを付けません。
毎日増える書誌に人の手でルビを付けるのは現実的ではなく、すべてをLLMに任せると費用がかさみ、結局人による確認が必要になります。また、図書館システムでルビを管理することも困難です。
大半はリアルタイムにアルゴリズムで確定し、ごく一部をバックエンドのLLMが処理します。LLMは複数のモデルによる多数決を採用して偏りを軽減します。処理が速いためデータを事前に一括処理する必要がなく、ヨミの更新やルビエンジンの改良はすぐに表示に反映できます。
国立国会図書館の新刊書誌1万件で、書名へのルビ付与を、形態素解析・AI(LLM)と比べました。
評価セット:国立国会図書館の書誌がある2023〜2025年刊の本から無作為に1万件。2026-11-06測定・本番API 0.2.29。
認証なし・CORS対応のJSON APIです。書誌とヨミを送ると、ルビを返します。レート制限はありません。
現在は無料で、申し込みや登録も要りません。APIキーなどの認証は不要で、レート制限も設けていません。図書館以外のサイトに組み込む場合も同じです。長期的な提供の形については、利用される皆様のご意見を伺いながら検討していきます。2027年中に、長期的な運用を前提にしたバージョン1のリリースを目指しています。現時点ではAPI仕様を予告なく変更する可能性があります。
送られた書名・著者名・ヨミは、ルビを組み立てることと、同じ書誌に速く応答するためのキャッシュにだけ使います。書誌の情報だけで動くので、利用者の情報(利用者IDや貸出の記録など)を送る必要はありません。
キャッシュは、最長で30日間保持されます。ルビエンジンや辞書が更新された場合は、それより早く破棄されることもあります。削除されたキャッシュは、バックアップデータに最大3週間保持されることがあります。
アルゴリズムで確定できない書誌は、外部のAI(LLM)サービスに書名やヨミの一部を送ります。送るのは提供された書誌の情報だけで、それらのデータがAIの学習などに再利用されることはありません。
できます。今後、より簡単に組み込めるツールキットやUIコンポーネント、サポートサービスの提供も検討しています。書誌を表示するときに書名・著者名と目録のヨミをAPIに送り、返ってきたルビを<ruby>タグで表示してください。図書館の方、システム開発事業者を問わず組み込みのご相談はお問い合わせからどうぞ。
図書館が作成したデータに限らず、書名とヨミがそろった書誌であれば、JPRO書誌や出版社・書店の目録データでも同じように機能すると見込んでいます。
ルビは付きません。読みを推測しないのがカーリル Furikakeのコンセプトです。LLMなどによるヨミの自動付与はここでは扱いません。
付けられます。著者名の場合は、デジタル庁が開発した氏名漢字カナ突合モデルの辞書も使い、氏名をより正確に分割できるようになっています。
文部科学省の「学年別漢字配当表」(小学校学習指導要領の別表)と「常用漢字表の音訓の小・中・高等学校段階別割り振り表」をもとに、ルビの単位(語)ごとに判定しています。語の中の漢字をすべて、その読みで習い終えていればルビを外し、1字でも習っていない字や読みがあれば語全体にルビを残します。
選んだ学年で習う漢字にはルビを付けます。たとえば2年生向けなら、1年生までに習った漢字だけでできた語のルビを外します。同じ字でも読みによって習う時期が違います。「外」と「科」はどちらも小学2年で習う字ですが、「外」を「げ」と読むのは中学校で習う読みなので、「外科」には中学生向けまでルビを残します。
中学生向けは小学校で習う読み、高校生向けは中学校までに習う読み、一般向けは常用漢字表の読み(「大人=おとな」のような付表の読みを含む)だけでできた語のルビを外します。当て字(本気=まじ)や常用漢字表にない字には、どの学年でもルビを付けます。
読み上げ方はスクリーンリーダーやブラウザによって異なり、漢字に続けてルビも読む(「図書館としょかん」)ことがあります。二重に読ませたくない場合は、<rt> に aria-hidden="true" を付けて漢字だけを読ませる方法があります。ただし当て字や人名は読み上げ側が読み誤ることもあるため、ルビの読みを読ませたい場合は、読み上げ用のテキストを別に用意するなど、利用者に合わせて選んでください。
短いタイムアウト(1秒程度)で打ち切り、エラーやタイムアウトのときはルビなしで表示してください。ルビ以外の表示には影響しません。エラーの種類はAPIリファレンスにまとめています。
カーリル Furikake はアルゴリズムでルビを割り付けるため、表示するルビの位置や区切りを間違うことがあります。厳しくしすぎるとルビが付かない確率が高くなるため、ある程度は許容する必要があります。辞書やアルゴリズムの改善、LLMの更新によって結果が変わることもあります。カーリルでは計測用のデータセットで品質を継続して確かめていて、誤りの事例はアルゴリズムの改善に役立ちます。見つけたらぜひお知らせください。
目録のヨミそのものに原因がある場合もあるため、画面キャプチャではなく、その書誌が表示されているページのURLや元の書誌情報を添えてカーリルのお問い合わせページからお知らせください。