[セッションレポート] グラフデータベースAmazon Neptuneの事例紹介~LexisNexis社~ #reinvent #DAT202

2021.12.08

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

「Real-world use cases with graph databases」というタイトルからAmazon Neptuneの事例が聞けると思いセッションを聴講したのでレポートを書きます。

グラフ理論やグラフデータベースは比較的イメージしやすいのですが「実際にどのようなユースケースにフィットするのか?」「どのようにフィットするのか?」「なぜRDBMS/NoSQLではだめなのか?」という深いところまではあまり理解できていません。

実際のユースケースを参考にすることで、今後のDB選定の参考になればと考えています。

冒頭では、グラフ理論の起源、グラフデータベースで解決できる問題、Amazon Neptuneの機能についての話がありましたが、セッションの本質ではないため割愛します。

実際の事例紹介の部分をピックアップして、製品ごとにどのようにAmazon Neptuneが活用されているのかをまとめてみました。

セッション概要

Description

Organizations use the relationships in their data to uncover patterns and expand their businesses. They do so by building knowledge graphs to link and discover data, identity graphs to better understand customers and devices, fraud graphs to use relationships to detect fraudulent activities, and many other applications. In this session, consider examples of how organizations are using Amazon Neptune for these real-world graph use cases.

企業は、データ内の関係性を利用してパターンを発見し、ビジネスを拡大しています。そのために、データをリンクして発見するKnowledge Graphs、顧客やデバイスをより良く理解するためのIdentity Graphs、関係性を利用して不正行為を検出するためのFraud Graphs、その他多くのアプリケーションを構築しています。本セッションでは、これらの実世界のグラフのユースケースに、企業がどのようにAmazon Neptuneを使用しているかの例を検討します。

SPEAKERS

  • Joy Wang
  • Kyle Patrick
  • Mark Myslin

会社紹介

LexisNexis社は法律調査会社です。

世界中に法の支配(Rule of Law)を広めるというコンセプトの元、法にまつわるデータの収集と提供を行っているそうです。

法にまつわる様々な種類のデータセットに関連性を持たせることで、より良いデータ活用できるというモチベーションがあります。

From: Disconnected Data

To: Connected Data

製品1: Brief Analytics

専門用語

  • Brief

弁論趣意書、訴訟事件摘要書、準備書面 法廷のさまざまな段階で提出される、訴訟の論点を明らかにして自らの立場を有利に運ぶための書類。 法律事務所内で訴訟の準備のために作られる書類を指すこともある。

概要

Brief Analyticsでは法律事務所がBriefを作成する際に、ひとまず作成したBriefをBrief Analyticsにアップロードすると、類似するBriefや裁判所の見解を提示してくれます。

セッション動画のデモでは下記のような例が紹介されていました。

例えば、「Premier Pools, Inc. vs Premier Pools Management Corporation」という似た名称を利用することに対する法的文書を作成するシチュエーションにおいて、ドラフトBriefをBrief Analysisにアップロードするとアドバイスを受けることができます。

検索結果には「Osaka Japanese Restaurant v. Osaka Steak House」という名称に関するBriefが類似する結果としてヒットしていました。

つまり、より良い法的主張をするのに役立つ、関連性の高いコンテンツを手に入れることが可能というわけです。

正直日本人からすれば「Osaka Japanese Restaurant v. Osaka Steak House」って結構違う気がするのですが、まぁそこはアメリカでのレストランの名称ってことなんでしょうね。

Amazon Neptuneの利用用途

類似のBriefを検索するためにBriefに2つのキーノードを接続しています。

Legal Concept(法的概念)とCourt Opinion(裁判所の意見)です。

Legal Conceptは何百万ものBriefのコーパスから抽出された法的概念です。

おそらく「NLPでLegal Conceptにあたるトピックを抽出して、それぞれを関連するBriefに紐づける」「Briefが引用している裁判所の意見などを紐づける」という作業を行っているのだと思います。

いわゆるナレッジグラフの構築ですね。

アーキテクチャ

SageMaker、EMR、Step Functionsなどの多くのAWSサービスを使って、何百万ものBriefからLegal ConceptCitationを抽出してます。

抽出結果はAmazon Neptuneのグラフデータベースで保存され、ECS on Fargateを通してクライアントからアクセスされるようになっています。

製品2: Context

概要

Contextでは、裁判所の文章から許可/不許可(granted/denied)の結果を抽出することで、裁判官や裁判所が特定の申し立てを承認する可能性を分析することができます。

おそらく、過去の裁判のデータを解析して得られた情報をBrief Analyticsにノードとして追加して、より効果的なナレッジグラフが利用できるという事だと思います。

Amazon Neptuneの利用用途

先ほどのBrief Analysisのグラフに、Legal matter(法的事項)とMotion outcome(申請の結果)というノードを接続していますね。

Legal matterは、さまざまなソースから出されたすべての文書を包含する法的問題の全体像です。(※正直これの意味がよくわかりませんでした。。。)

Motion outcomeは、NLPを使って抽出された裁判所からの結果です。(granteddeniedなどが該当します)

これらを接続することで、下記のような検索が可能です。

ドラフトBriefがどのLegal matterに属しているかを見つけ、されに結果を決める可能性のあるCourt Opinionを見つけることができます。

さらに、Court Opinionから、NLP技術を使って抽出したMotion outcomeを見ることができます。

アーキテクチャ

先ほどのBrief Analysisと基本的な設計は同じですね。

製品3: Shepard's Citation Service

専門用語

  • Citation

サイテーション、引用判例集

概要

Shepard's Citation Serviceでは、判例や法律が裁判所によってどのように評価されているのか、肯定的・否定的に扱われているかを知ることができる。

Citationはグラフで構築され、肯定的なものか?否定的なものか?時系列での傾向を示す情報が取得できます。

また、Citationが疑問視されているのか?支持されているのか?を示すシグナルも提供されています。

Amazon Neptuneの利用用途

  • ドキュメントベースのNoSQLでのつらみ

かつて、Shepard's Reportというレポートが1つの大きなドキュメントとして生成され、その中にすべてのCitation情報が含まれていたため、2つの課題がありました。

① スケーリング

増え続ける法律文書のコーパスとその文書間の関係性(接続数)の増加が問題となっていました。 特に、頻繁に引用される文書が多くなり、非常に多くのインバウンド引用が発生していました。

② 更新

Citationは様々なドキュメントに埋め込まれているため、Citationの1つのCaseが更新されると、波及して非常に多くのレポートを再パッケージ化する必要がありました。1日に非常に多くのレポートを作成しなければならず、1つの小さな更新でも時間の経過とともに運用コストが上昇していました。

  • Amazon Neptuneを使って課題を解決

一つのケースの更新に、特定のノードのプロパティを更新すれば良くなりました。

更新があるたびに大規模なデータの再生成を行う必要がなったため、全体的な運用コストを削減することができました。

アーキテクチャ

CitationデータベースからのイベントをKafkaでストリーミングし、それをS3にCSVファイルでパッケージ化し、Amazon Neptune バルクローダーでデータを取り込んでいます。

Amazon Neptuneバルクローダを利用することで、クエリのパフォーマンスにはほとんど影響を与えず、高スループットでデータを取り込むことができます。

このパイプラインでは、1日に最大1億回のグラフ更新ができます。

まとめ

正直、法律関係は疎いし、法律系の専門用語たっぷりだったので骨が折れました。

所々ニュアンスが間違っているかもしれないので、間違いがあればコメントしていただけると嬉しいです。

法律関係の話はともかく、使いどころは今後のDB選定の参考になりそうです。

以上レポートでした。