この記事は自然言語処理アドベントカレンダー 2019(その2)の18日目の記事です。
昨日はid:sh111hさんの10年前 (2009年) のACL論文を紹介する - エイエイレトリックでした。
はじめに
Canonicalzing Open Knowledge Basesというタスクをご存知でしょうか。
本記事ではいくつかの論文を例にざっとこのタスクを紹介していきます。
Canonicalizing Open Knowledge Basesってなに?
Galárraga et al.の"Canonicalizing Open Knowledge Bases"に端を発する、Open Knowledge BaseのEntityとRelationを正規化(canonicalizing)していくタスクです。*1
(Entityは固有名詞などの何かを表現した名詞で、Relationはis-aやhas-aのようなEntity同士の関係を表現したものです。)
そもそもOpen Knowledge Baseってなに?
Open Knowledge BaseはOpen Information Extraction(以下、OpenIE)によって出力されたTripleからなるKnowledge Base(以下、KBと略)のことです。
入力された文書から(主語フレーズ, 述語フレーズ, 目的語フレーズ)という形式のTripleをTupleとして抽出して、それを(Entity, Relation, Entity)として捉えてEntity間のRelationを得るタスクです。
そして、OpenIEの抽出結果であるTripleはKBのように捉えることができ、これをOpenKBと呼んでいます。
OpenIEについて詳しく知りたいという方は次のブログエントリや論文がとてもわかりやすいので見ていただければと適宜参照していただければ...!
Knowledge Baseって...?
Knowledge base - Wikipediaから引用させていただくと...
Knowledge Baseはコンピュータシステムによって利用される複雑な構造化、あるいは非構造化された情報を記憶する技術。
とのこと。
つまり、Entity同士をRelationで結んで知識でネットワークを作れるように記録し、これをコンピュータから扱えるようにしているものです。
代表例としては、DBPedia、Wikidata、FreeBase、YAGOなどのプロダクトがあり、これらはOntological KBと呼ばれています。
Open KBの可能性と問題
Open KBはOntological KBとどう違うのでしょうか。
Entity同士をRelationで結んで知識のネットワーク構造を作るというKBとしての機能は同じです。
しかし、OpenKBは成り立ちが根本的に異なるため、Ontological KBに比べて変化に強く柔軟であるという強みを持っています。
Ontological KBの多くがコミュニティや団体によって、Wikipediaなどのソースを元に更新していくことで作られています。
なので、アプリケーションで利用中のKBが新しい情報を取り入れるためには、以下のようなプロセスを経る必要があります。
- ソース元の更新
- コミュニティによる配布
- 配布されたKBの導入
一方で、OpenKBはOpenIEに文書を入力することで得られる出力であるTripleから構成されます。
つまり、OpenKBは保有している文書が更新されていていれば、OpenIEを実行するだけで新しい情報を取り入れることができるのです。
この側面だけ見ると、OpenKBが夢のような手法のように見えてきますが、もちろん課題もあります。
深刻な課題の一つとして挙げられるのは、OpenIEによって得られるTripleが含んでいるEntityやRelationを表層の形のままで抽出してしまっているということです。
それによって、同じ意味を持つ語や節にも関わらず、別のEntityやRelationに認識されてしまうという課題が引き起こされます。
例えば、CESIが論文内で挙げている例をみてみましょう。
同じドキュメント内に以下の二つの文章があるとします。
- Barack Obama was the president of US.
- Obama was born in Honolulu.
これらが含まれたドキュメントをOpenIEに入力すると、下記のようなTripleを出力します。
- (Barack Obama, was president of, US)
- (Obama, born in, Honolulu)
このとき、文中ではBarack ObamaとObamaは同じ人物を示しているはずですが、OpenIEを介すると別のEntityとして出力されてしまっています。
そして、これと同様の課題がRelationでも発生しえます。
こうした課題がOpenKBを実際の運用で利用するのを難しくしています。
Canonicalizingとはなにか
さきほどOpenIEの出力結果を利用すると同じような意味のEntityとRelationがダブってしまう可能性があるというOpenKBの課題を取り上げました。
Canonicalizing Open Knowledge Baseとは、この課題を解決しようというものです。
このタスクにおけるCanonicalizingとは同様の意味を持つ複数の表現を1つにまとめることだと説明できます。
つまり、先程の例を利用するとBarack ObamaとObamaという二つの名詞フレーズをどちらかの表現に寄せてしまうということです。
例えば、ObamaをBarack Obamaとして扱うといった具合です。
このCanonicalizingをする手法としては、現在提案されて手法の中ではClusteringを利用する方法が多いようです。
Canonicalizing Open KBの流れと現在
代表的な先行研究としては三つの論文が存在しています。
Canonicalizing Open Knowledge Base
ACM CIKM 2014のGalárraga et al.による論文。
タスクとしてCanonicalizing Open Knowledge Baseをはじめて定義しました。
Clusteringによって、Entityの名詞フレーズとRelationの関係フレーズをCanonicalizeしていく、という手法です。
EntityのClusteringでは、階層的クラスタリングを用いていてクラスタリングのための使われる類似度のためにSimilarity Functionが定義されています。
そのSimilarity Functionとは、仮説から良い特徴量空間から距離関数を選び、それらをロジスティクス回帰を用いて結合したものです。
また、RelationのClusteringでは、Galárraga et al.によるAMIEと呼ばれる統計的に包摂関係を導き出す手法を適用しています。
AMIEの出力結果を元に共通の包摂関係になったフレーズを同じクラスターとして扱って、いくつかのルールに基づいて代表的な語を選ぶことでCanonicalizeします。
CESI: Canonicalizing Open Knowledge Bases using Embeddings and Side Information
The WebConf 2018 (WWW 2018)のVashishth et al.による論文。
CESIでは、Galárraga et al. の手法をover manually-defined feature spacesであると指摘していて、学習されたEmbeddingからClusteringをする手法を提案しています。
CESIの特徴はOpenIEのTripleを活用して各フレーズのSide Informationを取得し、それを利用して名詞フレーズと関係フレーズのEmbeddingを学習するところにあります。
そして、そのEmbeddingの空間における距離をもとにClusteringをしていくアーキテクチャになっています。
Embeddingの目的関数は、Nickel et al.のHolEというKnowledge GraphのEmbeddingのlossをベースにしたものを使っています。
また、Side InformationとはでOpenIEのTripleに含まれる有用なコンテキストを利用して得られる情報です。
これは名詞フレーズや関係フレーズそれぞれで別々のものが定義されています。
CESIには、提案手法のコードや提案データセットをまとめたリポジトリが存在しているので、もう少し詳しく知りたい方はこちらへ。
github.com
CaRe: Open Knowledge Graph Embeddings
EMNLP 2019のGupta et al.による論文。
CaReは前者二つとは、少し毛色が違っています。
というのも...
前者二つはOpenKBを入力にして、OpenKBの精度を上げることに焦点を当てています。
一方で、CaReはOpenKB自身をCanonicalizeするのではなく、OpenKBから作るKnowledge GraphのCanonicalizeを目的としているからです。
そして、CaReの入力はOpenIEの実行結果ではなくCESIの出力結果であるCanonicalizeされたOpen Knowledge Baseです。
それゆえ、これはCanonicalizing Open Knowledge Baseを拡張するモデルだとも考えられます。
また、CaReではこのCanonicalizeされたOpen Knowledge Baseをaugmented OpenKGと表現しており、このaugmented OpenKGからKnowledge Graph Embeddingを学習していくのが特徴です。
Careでは、3つのコンポーネントから構成されるTriplet Lossを用いて学習されます。
コンポーネントはそれぞれ下記のとおりで...
- 主語フレーズをCanonicalizeするCanonical Cluster Encoder Network(CN)
- 述語フレーズをCanonicalizeするPhrase Encoder Network(PN)
- 目的語フレーズをCanonicalizeするCanonical Cluster Encoder Network(CN)
CNはLocal Averaging Networkと呼ばれるGraph Neural Networkのようなアーキテクチャを定義し、名詞フレーズをembeddingにEncodeしています。
一方で、PNではbidirectional GRUを用いて最後に両方向の隠れ層を結合することで、関係フレーズをEncodeしています。
CaReにも提案手法のコードのリポジトリが存在するため、もう少し詳しく調べてみたい方はこちらへ。
github.com
最後に
Vashishth et al. やGupta et al.も言及しているようにCanonicalizing Open Knowledge Baseは、まだまだ未開拓な分野です。
しかし、これらの技術が実際のアプリケーションで運用が可能になったとき、様々な利益をもたらすと考えていて大きな可能性を秘めた分野だとも感じています。
(例えば、Webアプリケーションの世界ではファセットナビゲーションの作成に応用ができそうに見えます。)
そのため、自分は注目していきたいなと考えていて、アドベントカレンダーとして書かせていだきました。
自分はNLPの研究者としてはまだまだ未熟なため、間違った記述を書いてしまっているかもしれません...。
「おや?」と思うことがあれば、よければご指摘ください。
参考文献
- テキストの構造化を支える技術 -概要編- - Ahogrammer
- Knowledge base - Wikipedia
- Canonicalizing Open Knowledge Bases
- [1902.00172] CESI: Canonicalizing Open Knowledge Bases using Embeddings and Side Information
- CaRe: Open Knowledge Graph Embeddings - ACL Anthology
明日のアドベントカレンダーは、mhangyoさんのウェブリードコーパスについての記事と、yusa87さんのGiNZAに関する記事だそうです!
*1:Knowledge Baseではなく、Knowledge Graphが対象となったりするがそれほど変わらない。