最初は、この問題は些細なことのように思えます: 2 つのオントロジーが与えられたとき、オントロジー A の用語がオントロジー B の用語を最もよく参照する場合.この問題を解決する方法。
単純に、両方のオントロジーで「心臓発作」という用語を見るだけで十分だと思うでしょう。ただし、オントロジーが同じフレーズをエンコードすることはほとんどありません。単純なケースでは、「心臓発作」は「心臓発作」または「心臓発作 (致命的ではない)」としてコード化される場合がありますが、より複雑なケースでは、「心筋梗塞」としてのみコード化される場合があります。他の場合では、たとえば複合 (合成) 項を扱う場合など、さらに複雑になります。
さらに重要なことに、単純に用語 (または文字列) を一致させると、「存在論的構造」が無視されます。オントロジー A の「心臓発作」がcaused-by
高血圧としてコード化されているのに対し、オントロジー B ではwithdrawl-from-trial-non-fatal
. この場合、2 つの用語を一致させることは有効かもしれませんが、そうではないことは自明です。そして、これは同等の用語が存在することを前提としています。
これは、セマンティック/オントロジー マッチング、アラインメント、またはハーモナイゼーションと呼ばれる古典的な問題です。そこにある研究には、語彙の類似性、フリーテキストでの用語の使用法、グラフの準同型、精選されたマッピング (MeSH/WordNet など)、トピック モデリング、および論理的推論 (一次または高次の論理) が含まれます。しかし、Java(/Clojure) または Python アプリに統合できる、最もユーザー フレンドリーで本番対応のソリューションはどれでしょうか? オントロジー マッチング: 文献レビューを見てきましたが、何も推奨していないようです...提案や経験はありますか?