国立国会図書館が付与する件名標目(NDLSH, 書籍に付与されるラベル)の関係性をネットワーク図として可視化し、書籍に関する概念やラベル同士の関係性を視覚的に把握しやすくする新しいサービスを開発しました。このサービスでは、関連する書籍情報も含めて表示し、国立国会図書館サーチへのリンクを通じたダイレクトなアクセスも可能です。
サービス概要
このサービスは、指定した件名標目に関連するノード(他の件名標目)をネットワーク図で表示し、ユーザーが直感的にその関係性を把握できるようにしています。また、特定の件名標目に関連する書籍へのリンクも提供し、国立国会図書館サーチへ直接アクセスできる仕組みを備えています。
技術スタック
- バックエンド : Flask.py
- フロントエンド(ネットワーク描画) : vis.js
- ホスティング : Vercel
件名標目間の関係性
件名標目間の関係性には
- 同義語(Synonym)
- 上位語(Hypernym)
- 下位語(Hyponym)
- 関連後(Metonym)
の4つの種類があり、それぞれの関係性に基づき、サービス内でグラフとして可視化しています。
なお、同義語と関連語は対称関係を持ち、上位語と下位語は逆の関係性を持ちます。これは RDF 記法を用いて次のように表現されます。
# 同義語・関連語の対称性
# 'A :synonym B.' --> 'B :synonym A.'
# 'A :metonym B.' --> 'B :metonym A.'
:synonym rdf:type owl:SymmetricProperty .
:metonym rdf:type owl:SymmetricProperty .
# 上位語と関連後の逆関係
# 'A :hypernym B.' --> 'B :hyponym A.'
:hypernym owl:inverseOf :hyponym .
表記等について
「トリプル」とは、RDF(Resource Description Framework)でデータを表現するための基本単位で、「主語(subject)」「述語(predicate)」「目的語(object)」 の3つの要素から成り立つ文のことです。この3つの要素を1組にして表現するため、「トリプル(三重)」と呼ばれます。
例えば、「リンゴは果物である」という情報をトリプルで表すと次のようになります。
主語(subject):リンゴ(apple)
述語(predicate):果物である(is a type of)
目的語(object):果物(fruit)
このトリプルは次のように表現されます: 「apple is a type of fruit」
トリプルの記法の一つがTurtle
と呼ばれるものです。これは主語・述語・目的語をこの順番に並べて書いたものであり,主語・述語は名前空間に定義されます.
「apple is a type of fruit」をTurtleで記述すると次のようになります.
# 名前空間の定義
@prefix things:<SOME_URI> .
@prefix rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
# トリプルの記述
things:Apple rdf:typeof things:Fruit.
RDFでデータを記述する際、トリプルは単独の文としての意味だけでなく、他のトリプルと組み合わさることで知識のネットワークを形成し、データ間の関係性を表現します。このネットワークがグラフとして視覚化され、データを直感的に理解する助けになります。
可視化の先を見据えて
今回は件名標目の関係性に着目してネットワークを定義・可視化しました。国立国会図書館が一般公開している件名標目は実際のごく一部ですが、同様のアイデアを用いることで多数の概念同士を関係性で繋ぎ、大きなネットワークを作ることもできます。
これはナレッジグラフと呼ばれるものであり、Googleの検索エンジンや昨今話題のRAGにも組み込まれつつあります。
また、ナレッジグラフを検索するクエリとしてはSPARQL(SPARQL Protocol and RDF Query Language)が、データベースサービスとしてはAmazon Neptuneなどが提供されています。
今回実装したネットワークの可視化だけでなく、生成AIとの連携や推論など、さまざまな方向に利活用が進んでいくことを期待しています。