rat360

A personal schizophrenic idea blog

どのように自動的に知識グラフを構築するのか [日本語]

知識グラフは、そのドメインが汎用か具体かに関わらず、エンティティとリレーションによって定義されます。

定義としては、以下です:

 KG = \{ (e_1, e_2, r): e_1, e_2 \in Entity, r \in Relation \}

Relation はエッジのタイプを表す属性です。例えば、ジョンと34の関係は「年齢」になり得ます。

f:id:anon_programmer:20201106220505j:plain

ツイートから人々の主張を抽出し、人・組織・場所・時間・出来事、あるいはそれらの属性を摘出したいとします。

質問は時々、具体的なアルゴリズムそのものよりも重要です。ゴールが「どんな結論を情報源が導出しているか発見する」なら、どんなオントロジーを定義する必要があるでしょうか。

f:id:anon_programmer:20201106235518j:plain

このケースでは、情報源の属性と、情報源・組織・国・人などの間の関係を示すオントロジーが必要かもしれません。

また、情報源の情報内容が必ずしも事実である必要がないという点も気をつけるべきです。それは単に「その情報源はアリスが悪だと述べています」といったタイプの事実を示すだけです。

情報源にはいくつかの種類があるでしょう: 嫌われ役、好かれ役、など。嫌われ役は本当の主張と逆のことを言うことができます。その場合、内容の精査だけでなく、人々の反応も考慮に入れる必要があります。

ちなみに、利便的な面では以下のようなシステムの構築も考えられるでしょう:

 f: Q \rightarrow D

Qはクエリであり、Dはそのクエリによって取得されるドキュメントや情報源名です。もし、「このような主張と類似のことを言っているドキュメントや情報源を探してくれ」というクエリが必要であれば必ずしも知識グラフである必要はなく、例えば近似最近傍検索でもいいはずです。

知識グラフの使いどころをよく考えるべきでしょう。それは情報源についての詳細情報を示すことができます。

英語: How to construct a knowledge graph automatically? - rat360