BH12.12/DBpedia Spotlight

提供:TogoWiki

移動: 案内, 検索

目次

概要

DBpedia Spotlightは自然言語文を入力することで自動的にURIのannotationをするシステム (Demo). 初期データはhttp://dbpedia.org のものを使うようになっているが,他の言語のDBpediaや,全然異なるデータに対しても対応可能らしい.


応用例1. 自然言語文中の生物種名を認識してを理想的には日本語の自然言語文を入力するとその中で Common NameやScientific Nameを認識して対応するURIにリンクできると良い. 最初からそれを目指すのは大変なのでまず学名.

応用例2. Life Science Dictionary に対して使えるようにしてみることでライフサイエンスに特化した リンク作成ができる.

メンバー

  • 山本
  • 加藤

進捗

Day 1

  • DBpedia Spotlightについて調査
  • インストール作業中

動作環境がそれなりに豊かじゃないと駄目みたい

Day 2

とりあえずほぼデフォルトの設定で動いている.

Demo: http://maiana.lodac.nii.ac.jp API: http://maiana.lodac.nii.ac.jp/rest/annotate?text=xxxxxxx

   12209 fumi 20 0 77.4g 8.5g 254m S     0 13.4  11:40.49 java


日本語で動かせるかどうか試している.index作成中.

Day 3

日本語はインデックス作成のプロセスが時間かかる&失敗するで終わっていない. JapaneseAnalyzerについて,きちんとmvn installし直すとNotFoundではなくなったがNoSuchMethodExceptionになった.

   java.lang.NoSuchMethodException: org.apache.lucene.analysis.ja.JapaneseAnalyzer.<init>(org.apache.lucene.util.Version, java.util.Set)
        at java.lang.Class.getConstructor0(Class.java:2721)
        ....

簡単なRuby libraryを作りはじめた. https://github.com/fumi/dbpedia-spotlight-rb


今は4つあるメソッドのうちannotateだけ https://github.com/dbpedia-spotlight/dbpedia-spotlight/wiki/Web-service

DBpedia Spotlight

種名については,"SELECT TYPES..."でSpecies を指定するとDBpedia OntologyでSpecies classがtypeとしてついているリソースを引っ張ってこれるみたい.しかしデフォルトのままだと一部の種名のみしか認識できていないように見える.デフォルトで対象のperson,organization,locationはopennlp用のmodelを作っているように見えるので,species用にも作らないと駄目かも.

日本語対応は Internationalization を参照?

ソースからインストール

wikiには"maven3は駄目.maven2を使え"とあるが,現在のgithub masterはむしろmaven3じゃないと通らない


   $ git clone https://github.com/dbpedia-spotlight/dbpedia-spotlight.git
   $ cd dbpedia-spotlight
   $ mvn install
   

Downloads のData Release-0.5を参考に Disambiguation index, Spotter lexicon他をダウンロード. サイズが3種類あるが,largeはかなりでかい.context-index-full.tgzは24GBある.

以下の設定はconf/server.propertiesの配置になるべく合わせている.

   # mkdir -p /usr/local/spotlight/dbpedia_data/data/output
   # cd /usr/local/spotlight/dbpedia_data/data/output
   # wget http://spotlight.dbpedia.org/download/release-0.5/context-index-full.tgz
   # tar xvzf context-index-full.tgz
   # cd ..
   # wget http://spotlight.dbpedia.org/download/release-0.4/surface_forms-Wikipedia-TitRedDis.thresh3.spotterDictionary.gz
   # gunzip surface_forms-Wikipedia-TitRedDis.tresh3.spotterDictionary.gz
   # cp $(SPOTLIGHT_SRC)/dist/src/deb/control/data/usr/share/dbpedia-spotlight/pos-en-general-brown.HiddenMarkovModel .
   # wget http://spotlight.dbpedia.org/download/release-0.4/stopwords.en.list
   # wget http://spotlight.dbpedia.org/download/release-0.5/opennlp_models.tgz
   # tar xvzf opennlp_models.tgz
   # mv data/spotlight/3.7/opennlp .
   # rm -rf data
   # wget http://spotlight.dbpedia.org/download/release-0.5/spot_selector.tgz

$(SPOTLIGHT_SRC)/conf/server.properties

   org.dbpedia.spotlight.spot.spotters = LingPipeSpotter,WikiMarkupSpotter,CoOccurrenceBasedSelector
   org.dbpedia.spotlight.spot.dictionary = /usr/local/spotlight/dbpedia_data/data/surface_forms-Wikipedia-TitRedDis.thresh3.spotterDictionary
   org.dbpedia.spotlight.spot.cooccurrence.datasource = ukwac
   org.dbpedia.spotlight.spot.cooccurrence.database.jdbcdriver = org.hsqldb.jdbcDriver
   org.dbpedia.spotlight.spot.cooccurrence.database.connector = jdbc:hsqldb:file:/usr/local/spotlight/dbpedia_data/data/spotsel/ukwac_candidate;shutdown=true&readonly=true
   org.dbpedia.spotlight.spot.cooccurrence.classifier.unigram = /usr/local/spotlight/dbpedia_data/data/spotsel/ukwac_unigram.model
   org.dbpedia.spotlight.spot.cooccurrence.classifier.ngram = /usr/local/spotlight/dbpedia_data/data/spotsel/ukwac_ngram.model


ここで任意のSPARQL Endpoint??

   org.dbpedia.spotlight.sparql.endpoint = http://dbpedia.org/sparql
   org.dbpedia.spotlight.sparql.graph = http://dbpedia.org

上記のファイルの場所を設定後に以下を実行.unset DISPLAYが必要かも.

   $ cd $(SPOTLIGHT_SRC)/rest
   $ mvn scala:run '-DaddArgs=../conf/server.properties'

日本語

DBpedia Spotlightが使っているツール

メモ

生物種名については Linnaeusのように,生物種名に特化したNamed Entity Recognitionのシステムがあるのでそれを使ってDBpedia Spotlightっぽいものを作るというアプローチもありか.

参考リンク