投稿

Schema.org の語彙で RDFS 推論してみる(1):準備

イメージ
本記事ではWebから得られる現実の簡単なデータを例に、ツールを使って SemanticWeb 技術(特に情報統合や推論)を概観します。 【目次】 [1]はじめに [2]Webから取得したJSON-LDをRDFLibで利用する (1)RDFLibへ読み込むコードの準備 (2)実行して結果を可視化してみる (3)SPARQLを使った検索例 [3]ここまでのまとめ:推論に向けて [1]はじめに 以前の記事で、Webページに埋め込まれたJSON-LDファイルをRDFLibに読み込むところまで見ました。 しかし JSON-LD は、「そもそも扱いやすいJSON形式なのだから、JSONとして扱えば十分じゃない?」といわれれば、(特定の構造を扱うだけなら、)それはその通りです。 一方で、多くのWebサイトから情報を収集して、様々な再利用を考えるなら(多様なデータを扱うなら)、その考え方はかなり面倒なことも背負うことになります。 具体的には、Schema.org の語彙を使ってマークアップされた JSON-LD を扱うとしても、本記事の執筆時点で、Schema.org のサイトによると797のクラス、1453のプロパティが定義されているようです。 Wikipediaやブログの記事だけではなく、レストランや観光地の情報、イベントや求人その他、多様な情報が Web にはあふれています。 そして時代に応じて Schema.org の語彙は増えていきますし、それに伴って多様性も増していきます。 しかも、Web コンテンツに含まれる JSON-LD に記載される内容は、Web コンテンツ制作側が決めるものなので、開発側がコントロールできるものではありません。 こうなってくると、与えられた情報構造を直接解釈する方式で対応するのは厳しいと思います。(厳密なスキーマに基づく手法は厳しくなってくると思います。) これに対して、与えられた情報構造をそのまま扱うのではなく、もう少しメタレベルの構造を基礎として多様な情報に対応していくアプローチが考えられます。 そのような技術に SemanticWeb があります。 Wikipedia: セマンティック・ウェブ SemanticWeb 技術も『銀の弾』ではないと思いますが、シナリオによっては非常に有効な技...

メタバースの前におさえておきたい本(ゲームAI技術入門)

イメージ
ゲームAI技術入門 ─ 広大な人工知能の世界を体系的に学ぶ 三宅 陽一郎 (著) 発売日: 2019/9/30 ゲームAI技術入門 ─広大な人工知能の世界を体系的に学ぶ─ (Amazonで書籍情報を表示) 最近「メタバース」という言葉をよく耳にするようになりました。 そんな中、たまたま情報処理学会誌の特集「メタバースがやってきた」の解説記事「 メタバースの成立と未来ー新しい時間と空間の獲得へ向けてー(三宅陽一郎) 」を読みました。 これによると、メタバースと SNS あるいはオンライン会議との違いの一つに「空間」があるか無いか、をあげています。 そこで思い出したのが今回取り上げる「ゲームAI技術入門」です。 タイトルに「ゲームAI」とあるので、ゲームの紹介や攻略本、あるいはゲームプログラミングといったゲーム畑の本と思われるかもしれませんが、そうではありません。 サブタイトルに「広大な人工知能の世界を体系的に学ぶ」とある通りの内容です。 具体的には、世界と知能の内面をつなぐエージェントアーキテクチャや環世界の考え方を中心に、現実の世界をモデリングするような様々なアプローチが解説されています。 第1章の最初には以下のように書かれています。 何もない空間、まったく変化のない時間の中で知能を作ることできません。環境があるから知性があり、知性があるから環境があります。環境と知性は相対的な関係があり、環境と身体の関係の複雑さに応じて知能が形成されます。知能の形はけっして絶対的なものではありません。 空間とか環境を含めた考え方は新しいものではないと思いますが、メタバースに限らず、今後ますます重要な概念になる気がします。 この本を読んでいると、ゲームを仮想的な世界のエクスペリエンスだと考えれば、AI技術にとって理想的な実験場のように感じました。 そしてゲームに使われるAI技術ということ以上の、メタバースにもつながる興味深い内容を沢山含んでいると思います。 ちなみに、この本の出版は2019年なので古い本ではないと思いますが、出版時点で(今でいう)メタバースという言葉の使い方は無かったため、この本にメタバースという言葉は出てきません。(それだけ急速に広まっている言葉という事でしょうか。) <本の内容> 少し細かく目次を眺めてみ...

Schema.org + JSON-LD を RDFLib で読み込んでみる

本記事では、Schema.org の語彙を使って記述された JSON-LD を、RDF を扱える Python ライブラリ RDFLib に読み込む方法を見てみます。 【目次】 [1]はじめに [2]RDFLib と JSON-LD の読み込み例 [3]Web ページ内の JSON-LD を読み込んでみる [4]Schema.org のコンテキスト (1)"@context": "https://schema.org" の解釈 (2)コンテキスト情報のありかを探る (3)コンテキストの内容をダウンロードしてみる [5]RDFLib 6.1.1 における、とりあえず回避策? (1)@context を置き換える (2)@context を削除+パーサにコンテキストを渡す [1]はじめに 記事『 Web ページ内の JSON-LD を Python + PyLD で覗いてみる(Schema.org) 』で、Web ページに組み込まれた JSON-LD を見ました。 また、JSON-LD は RDF( Resource Description Framework )のシリアライズ形式の一つであり、RDF としても解釈できる旨を書きました。 RDF として扱うと、セマンティックウェブ系の技術を使っていろいろな応用が期待できそうです。 例えば、収集した情報をマージしてナレッジグラフを構成したり、SPARQL のようなクエリ言語を利用して情報を抽出したり、新たな知識の発見につなげたり、などなど。 そこで、本記事では、Schema.org の語彙を使って記述された JSON-LD を、RDF を扱える Python ライブラリ RDFLib に読み込む方法を見てみます。 今回もセマンティックウェブ技術とか RDF には深入りせず、利用方法に絞ってます。 なお、本記事のコードは Google Colaboratory で動作を確認しています。 [2]RDFLib と JSON-LD の読み込み例 RDFLib は、RDF を操作するためのオープンソース Python パッケージです。 rdflib https://rdflib.readthedocs.io/en/stable/# RDFLib (Gi...

Web ページ内の JSON-LD を Python + PyLD で覗いてみる(Schema.org)

Web ページに組み込まれた JSON-LD を見てざっくりと JSON-LD の雰囲気をつかんで、HTMLから JSON-LD を取り出す方法を見てみます。 【目次】 [1]はじめに [2]Web ページに組み込まれた JSON-LD の例 (1)Wikipedia の例 (2)ブログ(Bloggerの場合) の例 [3]クローラ向け構造化データとしての JSON-LD [4]Linked Data とシリアライズフォーマット [5]Schema.org による語彙の定義 [6]JSON-LDをHTMLに組み込む方法 [7]PyLD を使って HTMLから JSON-LD を抽出する [1]はじめに アプリ開発に携わる方々にとって「JSON」は常識的なものだと思いますが、「JSON-LD」 は知らない、という人もいらっしゃるのではないかと思います。 逆に JSON-LD は、Web コンテンツ制作や SEO(検索エンジン最適化) 関係の方々にとって必須知識かもしれません。(JSON-LD より Schema.org のほうが身近な言葉かも。) 一方、SemanticWeb や LOD に関わる人なら「RDFのシリアライズ形式の一つ」の一言で終了かもしれません。 JSON-LD が最も利用されている例は、Google クローラなどに Web コンテンツの内容を伝えたり、リッチな検索結果を表示させるためのメタデータとして Web コンテンツ内に組み込むものだと思います。 しかし、JSON-LD はクローラ向けに特化した仕様ではありません。 実際、記事『 Googleナレッジグラフの検索APIを使ってみる(Google Knowledge Graph Search API) 』で取り上げた API の戻りデータも JSON-LD でした。 そこで、本ブログではアプリ開発者視点から JSON-LD を見ていきたいと思います。 まず今回は JSON-LDの仕様には深入りせず、実例として Web ページに組み込まれた JSON-LD を見て雰囲気をつかみ、その後HTMLから JSON-LD を取り出す方法を見ておきます。 [2]Web ページに組み込まれた JSON-LD の例 まずは細かいところはおいといて、実例をざっと見てみます。...

百科事典のようなAI技術の包括的な教科書(エージェントアプローチ 人工知能/AIMA:Artificial Intelligence: A Modern Approach)

イメージ
Artificial Intelligence: A Modern Approach 発売日 ‏ ‎ 2020/4/28 Stuart Russell (著), Peter Norvig (著) 言語 ‏ : ‎ 英語 Artificial Intelligence: A Modern Approach (Pearson Series in Artifical Intelligence) (Amazonで書籍情報を表示) 『Artificial Intelligence: A Modern Approach』(日本語版『エージェントアプローチ 人工知能』)は世界で最も読まれている有名な人工知能の教科書(とのこと)です。 流行り廃りがあるAI分野において、初版(英語版:1995年)から最新の第4版(英語版:2020年)まで、改定を続けながら長きにわたって地位を保っている凄い本です。 この本は、その筋?では「AIMA」と略されるようです。 英語版ですが、この本に関する Wikipedia のページがあります。 Wikipedia: Artificial Intelligence: A Modern Approach ところで人工知能にはいろいろな定義があることは有名な話ですが、この本では以下のように定義しています。 本書の主要な統一テーマは、知的エージェントの概念である。我々は人工知能を、環境から知覚し、行為を行うエージェントの究明と定義する。そのような個々のエージェントは知覚を行為に変換する関数によって記述される。本書では、これらの関数を表現する多くの異なった方法を取り上げる。 これは日本語第2版の前書きにある定義ですが、この考え方は最新版の第4版でも引き継がれています。 そして第2版から第4版まで、本の最後は Alan Turing のエッセイの最後の一文で締めくくられているのも興味深いです。 「我々はあと一歩のところまできていることが分かる、そして同時に、なされなければいけない多くのことが残っていることも。」 この本は確立された技術を淡々と説明する教科書ではなく、知的エージェントを作るには何に取り組む必要があり、それらに対してどのようにアプローチするか、といったストーリーを感じます。そして、執筆時点での新しい技術にも触れられ...

REA パターンとオントロジー(ビジネスパターンによるモデル駆動設計)

ビジネスパターンによるモデル駆動設計 Pavel Hruby (著), 依田 智夫 (監修, 監修), 溝口 真理子 (翻訳), 依田 光江 (翻訳) Model-Driven Design Using Business Patterns 日本語版 発売日 2007/8/9、英語版 発売日 2006/6/22 ビジネスパターンによるモデル駆動設計 (Amazonで書籍情報を表示) REA(Resource-Event-Agent)という言葉は本のタイトルに含まれていませんが、この本は REA モデルにもとづく業務アプリケーションの設計パターン本です。 REA とは、ざっくり言えば、「商品を売ってお金をもらった」といったことを、「商品を売る(商品が減る)」、「お金が増える」という2つの双対な経済イベントとしてとらえ、そのイベントに関係するリソース(商品、お金など)と、エージェント(売り手、買い手となる企業や個人)を合わせてモデリングする考え方です。 これは簿記において、取引を借方と貸方で金額が同じによるように仕訳するのと似たような考え方ですが、そもそも REA は汎用の会計モデルとして提案された方法とのことなので、似ているというより包含した考え方のようです。 Resources, Events, Agents(英語版Wikipedia) https://en.wikipedia.org/wiki/Resources,_Events,_Agents REA Technology http://reatechnology.com/ 日本語: http://reatechnology.com/jp-index.html What Is REA http://reatechnology.com/what-is-rea.html 私は財務会計に関する知識は持ち合わせていないので、会計モデルとの対比云々は語ることができませんが、この本は財務会計の本ではないので会計知識が無くても読めますし、私は REA の双対となる増減イベントの考え方は強く印象に残りました。 また、この本には以下のように書かれています。 アプリケーション設計者は、一貫性があり業務の観点から見落としのない構造を手に入れることができるはず この本が出版された当時に読んだ印象は「面白い視点...

オントロジーエディタ Protégé を使ってみる

イメージ
本記事では、デスクトップ版の Protégé のセットアップと、オントロジーの可視化、推論などの使い方を簡単に見ていきます。 【目次】 [1]はじめに [2]Protégé Desktop のセットアップ (1)Ubuntu でのインストール手順 (2)起動確認 (3)起動用ショートカットの作成 [3]オントロジーの可視化ツール (1)OWLViz (2)OntoGraf (3)ProtégéVOWL [4]推論:Reasoner (1)推論の実行 (2)Pellet の利用 [5]その他 (1)Automatic Update の設定 (2)オートコンプリートの利用 (3)エンティティのレンダリング設定 (4)メモリ設定(2022/7/31追記) [1]はじめに Protégé はスタンフォード大学で開発されているオープンソースのオントロジーエディタです。 Protégé https://protege.stanford.edu/ Welcome to the Protégé wiki! https://protegewiki.stanford.edu/wiki/Main_Page Protégé Project (GitHub) https://github.com/protegeproject/ Protégé を使えば、Web オントロジー言語である OWL(Web Ontology Language)を対話的かつ視覚的に扱うことができ、HermiT や Pellet などの推論も利用できます。 Protégé は大きくWeb版とデスクトップ版がありますが、本記事ではデスクトップ版を見ていきます。 デスクトップ版には Web版のようなコラボレーション機能はありませんが、オントロジーエディタとしての機能面はWeb版より充実していると思います。 記事『 Pythonでオントロジー指向プログラミング(Ontologies with Python: Programming OWL 2.0 Ontologies with Python and Owlready2) 』で紹介した本では、Owlready2 の説明の前にデスクトップ版 Protégé を使ってオントロジーを作成するところから始まります。 Protégé を使わず OWL を...