dbpedia使い方 ほしい情報を絞り込み |python
wikipediaから上手に情報抽出する方法
DBPedia からの情報抽出
1 2 3 4 5 6 7 |
構造化データ (RDF) としてwikipediaの情報を保存しているDBpediaを使用すれば、 スクレイピングをおこなうよりも、網羅された情報を効率よく抽出することができます。 参考サイト等、理解するための手順は掲載されていたが、 いざ抽出しようとするとRDFのせいでSQLなどよくあるリレーショナルデータベースの知識では何をしていいのかわかりませんでした。 というわけで実際に必要なクエリの構築方法を紹介します。 |
dbpediaとは
DBpediaは、wikipediaの情報を構造化データ(RDF)で構成されている
実際の抽出についてはSQLの代わりに、下記のページでsparqlを使用する
http://ja.dbpedia.org/sparql
**SQLとの違いは、 RDFの構造化データの抽出のためカラムの構成からデータまですべてURIで設定されている。
ex) Sparqlの例文
1 2 3 |
select distinct * where { <http://ja.dbpedia.org/resource/ガリガリ君> rdfs:label ?label. } LIMIT 100 |
上記を公式ページ http://ja.dbpedia.org/sparql のクエリエディタで実行すると
後述のラッパー等使用して、スクリプトでapiを使用するとjson形式にて結果が返ってきます。
dbpedia 攻略のコツ
上記のSparqlのクエリ文の組み立て方のコツ。
解説文になりますが、 一番混乱する原因はこれでした。
[可変するカラムへのクエリの組み立て]
select文にて指定した*アスタリスクが返すカラムは、 where句内で指定したものになります。
というわけで、絞り込みに使えるカテゴリ、label等を記述後、
連結して、ほしい情報部分を記述すればいいわけです。
では、上記のクエリから[しまじろう]のページからしまじろうの概要文を抽出してみます。
1 2 3 4 |
select distinct * where { <http://ja.dbpedia.org/resource/ガリガリ君> rdfs:label ?label; <http://dbpedia.org/ontology/abstract> ?o . } LIMIT 100 |
手順、まず概要を示すURIを探します。
ブラウザでhttp://ja.dbpedia.org/resource/ガリガリ君を開きます。
リダイレクトされてhttp://ja.dbpedia.org/page/ガリガリ君が開きます。概要分に当たる部分がdbpedia-owl:abstractであることがわかります。 さらにクリックしてURIの表記がhttp://dbpedia.org/ontology/abstractであることがわかります。 これを追加のクエリとして記入していきます。
最初のクエリの文章の 中括弧内の
<http://ja.dbpedia.org/resource/ガリガリ君> rdfs:label ?label.
最後をピリオド[.]から、セミコロン[;]へ書き換えます。(where内の最後はピリオド、続けて述語、目的語を記入するにはセミコロンを記述します)
先程の概要部分を <>で囲って述語<http://dbpedia.org/ontology/abstract> 最後に?oとします。 ?o
これで、?oのカラム部分に概要部分が格納されます。
今回使用した言語
python
使用したラッパー
https://github.com/RDFLib/sparqlwrapper
参考サイト
https://hironsan.hatenablog.com/entry/python-dbpedia-sparql
最近のコメント