Pythonでオントロジー指向プログラミング(Ontologies with Python: Programming OWL 2.0 Ontologies with Python and Owlready2)

Ontologies with Python: Programming OWL 2.0 Ontologies with Python and Owlready2 (English Edition)

Lamy Jean-Baptiste (著)



最近楽しみながら読んだ本のご紹介です。

オントロジーやOWL(Web Ontology Language)、セマンティックウェブといった単語は、知っている人は詳しく知っていると思いますが、ご存知ない方も多い気がします。

これらについては長くなるので割愛しますが、ネットでこれらの用語を検索して調べてみると、学術分野っぽい説明などが多くて、縁遠い印象を受けるかもしれません。

しかしながら、データの表現力を高めて応用するための技術だと考えれば、一般的なアプリ制作においても、(はまれば)とても身近で役立つ価値の高い技術だと思っています。

仮にオントロジーだとか知識表現に全く興味が無くても、プログラミングの引き出しを増やすというだけでも意味があると思います。

この本は、そんなオントロジーやOWLの扱い方を、Python のライブラリ Owlready2 を用いてハンズオンっぽく身に付けることができます。

残念ながら英語の本ですが(現在日本語訳はないと思いますが)、私でも理解できる程度の平易な文章で書かれており、それもあってか Google 翻訳を利用すれば、かなり良い日本語に翻訳してくれますので(笑)、英語の壁は高くありません。
(実際には、本文が理解できなくても、コード例を見れば理解できることが多いと思います。)

<本の内容>

以下は目次とざっくりとした内容です。
  • Chapter 1: Introduction
    • ontology-oriented programming(オントロジー指向プログラミング)への動機付けなどの紹介です。
  • Chapter 2: The Python language: Adapt a snake!
    • Python 言語のざっくりとした説明です。
  • Chapter 3: OWL ontologies
    • オントロジーエディタ Protégé を利用して、シンプルなバクテリア(細菌)のオントロジーを作成することにより、OWLの表現力や推論を学びます。
  • Chapter 4: Accessing ontologies in Python
    • Chapter 3 で作成したオントロジーを Python + Owlready2 から利用する例を通して既存のオントロジーにアクセスする方法を学びます。
    • 最後に Flask を利用したオントロジーのWebビューワを作成します。
  • Chapter 5: Creating and modifying ontologies in Python
    • オントロジエディタを利用せず、Python + Owlready2 だけで新規にOWLを作成したり変更できることを学びます。
    • CSVファイルからOWLファイルを作る例もあります。
  • Chapter 6: Constructs,restrictions,and class properties
    • Chapter 5 に加えてより詳細な記述方法について学びます。
    • Protégé で作ったOWLと同じものを Python + Owlready2 だけで作れることが分かります。
  • Chapter 7: Automatic reasoning
    • Owlready2 は Reasoner(HtermiT と Pellet )が内蔵されており、簡単に推論を実行できることがわかります。
    • OWL の特徴ともいえる開世界仮説に基づく推論に加えて、閉世界仮説の推論についても学びます。
  • Chapter 8: Annotations,multilingual texts, and full-text search
    • Owlready2 でのアノテーションについて学び、全文検索もできることを学びます。
    • DBpedia を扱うサンプルもあります。
  • Chapter 9: Using medical terminologies with PyMedTermino and UMLS
    • 医療・医学分野?のオントロジー利用が説明されているようですが、今のところ私はここをスルーしています。。。
  • Chapter 10: Mixing Python and OWL
    • Owlready2を利用したOWL表現にPythonのメソッドを追加して、OWLの表現を拡張?できることが学べます。
  • Chapter 11: Working with RDF triples and worlds
    • Python でRDFを扱うときによく利用されるライブラリ RDFLib と連携できることを学びます。これにより SPARQL も利用できます。
    • Owlready2 が内部で利用している SQLite3 へのアクセス方法についても触れられています。
  • Appendix A: Description logics
  • Appendix B: Notations for formal ontologies
  • Appendix C: Reference manual

各章の内容は、説明も丁寧で、ハンズオンっぽく進みますので理解しやすいと思います。

実際、私は本書のコードの多くを Google Colaboratory で試しながら読みました。(但し、Flask を利用するサンプルや大規模オントロジーを扱うサンプルは試していません。)

付録には、本格的なオントロジーやOWLの書籍などによく出てくる記述論理(Description logic)の説明がありますが、各章の内容は記述論理を知らなくても理解できますし、本文に記述論理を用いた説明はありません。著者も以下のように書いてます。勇気出ますね!(笑)。
  • 「it doesn’t matter if you don’t understand description logics and the associated formulas - I myself started using formal ontologies long before I knew or understood these formulas!」

<感想>

超個人的な話で恐縮ですが、この本に出合うまでの経緯と合わせて書いてみます。

今や死語と言われそうですが、現在のディープラーニング中心のAIが一世を風靡する前に『集合知』という言葉が流行りました。そのころ私が興味を持ったのがセマンティックウェブ系の技術です。

「データのWeb」といった大きな構想も魅力的ではありましたが、(研究者ではない)業務システムに携わる私が興味を持った理由は、「自分が関わる業務システムのデータをもっと知的に表現できたら面白そう」でした。(かなりドメイン特化した小規模オントロジーを作って応用してみたいという。。。)

実際に、オントロジーエディタの Protégé や Jena、OWLAPI、HermiT、Pellet など素晴らしいツールやライブラリに触れてみて、その面白さというか可能性を実感しました。

そこで、より深く知ろうと W3C の仕様書や関連論文を少し読み始めてみたところ、当時は、記述論理を中心とした理論的な説明が多くて、敷居が高いと感じました。

これでは、仮に自分が理解できても、チームで作業するのは難しそう、という。。。
(理論もそうですが、Protégé などのツールもアカデミック系ということもあってか、私のような素人向けの簡易な説明資料が少なかったように思います。)

しかし、セマンティックウェブの技術というか考え方は、頭でっかちに考えなくても、もっと身近に使えて面白いもののはず、と思っていました。

そして、OWLのような知識表現技術とプログラミング言語が一体になったら面白そうだな―、なんて考えたりしていました。(リレーショナルデータベースとは少し違う世界が見えそうだし。もともと私は Prolog という言語も好きだったし。)

少し時が進むとディープラーニングがブレークしましたが、理論から考えると決して簡単とは思えないのに、多くの人が機械学習に触れることができるようになりました。

その理由を考えると、Jupyter Notebook などを利用して、手軽に機械学習を試すことができる環境が整ったことも大きな要因の一つではないかと思います。

そこで、私が愛用している Google Colaboratory 上で OWL を手軽に扱えるライブラリはないものかと探して見つけたのが Owlready2 であり、今回取り上げている本です。

Owlready2 は、Python で OWL を扱えるライブラリでもありますが、書籍内でも「ontology-oriented programming(オントロジー指向プログラミング)」と書いてあるように、単なるライブラリの枠を超えて、Python 言語に OWL を追加した拡張言語っぽく使えるイメージになっています。

また、HermiT や Pellet などJava系のツールが統合されているので、拍子抜けするくらい?簡単に推論もできます。

さらに RDFLib (PythonでRDFを扱う有名なライブラリ)との連携もできますので、SPARQLをはじめとしてRDFレベルの扱いも可能です。

ライブラリというより、セマンティックウェブ関連技術の統合環境といった感じで、まさに、名前の通り Owlready です!(うまい名付けだと感心しました。)

これで Google Colaboratory 上でもセマンティックウェブ技術が使えるようになりました。(Google Colaboratory は Java 環境も組み込まれており、Owlready2 は HermiT と Pellet を含んでいますので推論も動作します。)

オントロジー指向プログラミングについて少し調べたところ、新しい言語を設計する流れもあるようですが、Owlready2 のように既存の言語を拡張する方向性は、実用面でのメリットが大きいと思います。

と、ここまで書くと、書籍の紹介というより Owlready2 の紹介のようになってきましたが、Owlready2 をセマンティックウェブの統合環境と考えると、Owlready2 の使い方を知ることは、セマンティックウェブ関連技術を知ることになります。

この本は、記述論理などの理論に深入りすることなく、Owlready2 の使い方を通してセマンティックウェブ系の技術を身近に体験できる良い本だと思いました。

また、単なるツールの使い方だけでなく、バイオ系や医療系、そして DBpedia などの大規模オントロジーを扱う方法も例を通して理解できます。

加えて、少しマニアックな話題かもしれませんが、個人的には実用上とても重要だと思っている閉世界仮説による推論が取り上げられているところは貴重だと思っています。

ただし、この本には本格的なオントロジーの設計や構築手法などについては書かれていません。これについては別の深い世界?に立ち入る必要があると思います。

最後になりますが、ニューラルネットワーク技術が、何度か冬の時代を迎えつつも見事に蘇ったように、記号系のAIも脈々と研究が進んで、またブイブイ言わせて欲しいと思っています。

(2022/04/12 追記)
記事『Owlready2 を Colaboratory と Ubuntu で利用する』を書きました。宜しかったら参照して下さい。

(2022/04/27 追記)
本書で取り上げられているオントロジーエディタ Protégé について記事『オントロジーエディタ Protégé を使ってみる』を書きました。宜しかったら参考にしてください。

(参考)

Owlready2 の情報は以下のサイトにあります。

もし OWLを殆どご存じない方は事前に以下のドキュメントを少し読んでみると理解しやすいかもしれません。

関連記事

コメント

このブログの人気の投稿

VirtualBoxのスナップショット機能

Google Document AIで画像から表形式データを抽出する(Vision API OCRとの違い)

Vision API OCR事始め(1):TEXT_DETECTIONとDOCUMENT_TEXT_DETECTIONの違い