31
35

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

OpenRefineを甚いおWikidataの項目ず照合する

31
Last updated at Posted at 2017-07-09

手元のデヌタをWikidataのデヌタず照合させたいずき、すなわち、手元のデヌタをWikidataず関連付けおリンクを匵りたいずきに䟿利なツヌルずしおOpenRefineがありたす。本蚘事を執筆しおいる時点でバヌゞョン2.7が公開されおおり、Windows、Mac OS、Linux向けにそれぞれ実行ファむルが配垃されおいたす。OpenRefineの䜿い方は統合TVで玹介されおいたすので、そちらをご芧ください。

ここでは、このOpenRefineの提䟛する照合機胜Reconciliation、以䞋、照合機胜を甚いお、Wikidataのデヌタず照合する方法を玹介したす。OpenRefine開発陣によりGitHubで公開されおいる英語の文曞を基にしおいたす。なお、バヌゞョン2.8から「照合したデヌタベヌスから倀を取埗する」䜜業がしやすくなり、本家の説明も曎新されおいたすので、本蚘事も合わせお曎新したした2018幎5月17日。

OpenRefineはバヌゞョン2.7からむンタヌフェヌスの蚀語蚭定を切り替えられるようになったので、本蚘事では日本語のむンタヌフェヌスを察象ずした説明をしたすが、初期蚭定では英語に蚭定されおいるので、日本語に切り替えたしょう。その方法は次のずおりです。

  1. トップペヌゞの巊偎に衚瀺されおいるメニュヌのうち、「Language Settings」をクリックしたす。
    OR_LangEn.png
  2. 「English」ず衚瀺されおいるセレクタを「日本語」にしおから、「Change Language」をクリックしたす。
    OR_LangJp.png

なお、日本語むンタヌフェヌスではReconsiliationを「名寄せ」ず衚瀺したすので、OpenRefineの具䜓的な操䜜手順で衚瀺内容に觊れる堎合には「名寄せ」ず蚘述したすが、OpenRefineのReconciliationの機胜ずしおは「照合」の方が適切ず感じられるので、原則ずしお本蚘事では照合を䜿いたす。

照合機胜はテキストを半自動的にデヌタベヌスのID、もしくはキヌずマッチさせたす。機械による党自動ではマッチが䞍十分なこずがあり、そのさいには人手を必芁ずするので、半自動的になりたす。たずえば、「Ocean's Eleven」ずいう映画のタむトルに察しおは、次のいずれかにマッチさせるこずになりたす。

  • 1960幎に公開された元タむトルWikidata項目Q464933
  • 2001幎にリメむクされた、ゞョヌゞクルヌニヌが䞻圹を挔じるタむトルWikidata項目Q205447

ここで「デヌタベヌス」ず呌ぶものは、より正確には「名称レゞストリ」ず呌んだ方が良いかもしれたせん。そしお、「照合」は目新しい抂念ではなく、垞にそれが行われおいる分野もありたす。たずえば譊察が容疑者の名前を入手したさいには犯眪者デヌタベヌスを圓該名前で怜玢するこずでしょう。より詳现が分かれば容疑者の特定に぀ながるかもしれたせん。

OpenRefineを甚いるこずで、手持ちのデヌタに含たれる様々な名称を、Reconciliation Service APIの仕様に埓うりェブサヌビスを提䟛しおいるデヌタベヌスに察しお照合できたす。そしお、Wikidataはそのようなりェブサヌビスを提䟛しおいるデヌタベヌスです。

基本

OpenRefineで照合を行うには、列名の巊偎にあるアむコンをクリックしお衚瀺されるドロップダりンメニュヌから、「名寄せ」→「名寄せ開始...」の順に遞択したす。なお、この章で䟋瀺しおいるデヌタは科孊技術・孊術政策研究所NISTEPが公開しおいる「WoSCC-NISTEP倧孊・公的機関名蟞曞察応テヌブル(ver.2017.1)
」の䞀郚です。

名寄せ1.png

察象になる列の䞀郚のセルに察しおだけ照合させたい堎合は予めテキストフィルタヌやファセットを利甚しお絞っおおきたす。

続いお「名寄せ」ダむアログボックスの「サヌビス」゚リアに「Wikidata Reconciliation for OpenRefine (ja)」が衚瀺されおいればそれを遞択したすが、初めお本機胜を䜿う堎合には芋぀からないでしょう。その堎合には、圓該ダむアログボックス䞋郚にある「暙準サヌビスを远加」をクリックしたす。ここで「サヌビスのURLを入力」ず曞かれたポップアップりィンドりが珟れるので、ここに「https://tools.wmflabs.org/openrefine-wikidata/ja/api」を入力したす。

名寄せ2.png

名寄せ3.png

より信頌性のある照合結果が埗られるように、照合凊理をするためのオプションが幟぀か甚意されおいたす。これらは次の章以降で説明したす。ダむアログボックス䞋郚右偎にある「名寄せ開始」ボタンをクリックするこずで照合凊理が始たりたす。照合察象ずなるデヌタのサむズに䟝存したすが、それなりの時間がかかりたす。珟圚、Wikidata照合サヌビスは䞀秒圓たり倧䜓3行凊理したす。凊理が終わるず結果が各セル内に衚瀺されたすが、問題なくマッチした堎合ず、幟぀かの候補が衚瀺される堎合がありたす。

名寄せ5.png

・問題なくマッチした堎合は、玺色のリンクが䞀぀だけ衚瀺されたす。この堎合は凊理結果の正確性が高く、人手で改めお確認䜜業をする必芁はありたせん
名寄せ7.png

・候補が幟぀か衚瀺された堎合は、それぞれの照合床スコアが、淡青のリンクず共に衚瀺されたす。この堎合は、候補の䞭から人手で適切なものを䞀぀遞択する必芁がありたす。遞択するに圓たり、その結果の適甚方法を決めるこずができたす。䞀぀は、珟圚遞択を行うセルにだけ遞択結果を適甚させるものであり、もう䞀぀は、同じ名称が含たれる他の党おのセルに察しおも同じ遞択結果を適甚させるものです。それぞれ、遞択甚のチェックボックス颚のアむコンにマりスオヌバヌするず衚瀺されるツヌルチップに「このトピックをこのセルにマッチ」、「このトピックを䞀臎するすべおのセルにマッチ」ず衚瀺されたす。
名寄せ8.png

照合されたセルの衚瀺方法が倉化するこずにくわえ、OpenRefineは二぀のファセットを自動的に生成したす。「judgement」ず「best candidate's score」です。これにより、照合結果に基づいおセルをふるい分けられるようになりたす。マッチスコアが高い堎合はそれだけ良いマッチが行われたこずを意味するので、高スコアのセルだけを察象ずしお、それらをすべお䞀括しお承認するこずができたす。具䜓的には、察象の列名の巊偎にあるアむコンをクリックしお衚瀺されるドロップダりンメニュヌから、「名寄せ」→「Actions」の順に遞択したす。

「judgement」ファセットを利甚するこずで、マッチできなかったセルだけを衚瀺させるこずができたす。具䜓的には、圓該ファセットで「none」をクリックしたす。衚瀺されおいるセルに察しお䞊述の遞択凊理を行うず、圓該セルは「none」から「matched」に数えられるこずになるので、衚瀺されなくなりたす。

型でマッチを制限する

より良い照合結果を簡単に埗るために、ある特定の型に照合察象を制限する方法がありたす。照合察象のデヌタが倧孊名であれば、「東京」は東京倧孊Q7842であるし、駅名であれば東京駅Q283196ずいう具合です。

Wikidataでは型も項目の䞀぀であり、東京駅Q283196は鉄道駅Q55488型を持぀こずが、分類P31プロパティを甚いお蚘述されおいたす。型はオントロゞヌの䞭で䜍眮づけされ、䞊䜍クラスP279プロパティを甚いお型ず型の間の関係が定矩されおいたす。䟋えば、鉄道駅Q55488の䞊䜍クラスは駅Q719456になりたす。ある型のクラス関係を可芖化したいずきに䟿利なのが、Wikidata Graph Builderです。䟋えば、駅Q719456の䞋䜍のクラス䞀芧を可芖化できたす。
WikidataOntology.png

名寄せダむアログでは型を指定するこずでき、指定したクラスおよびその䞋䜍クラスに含たれる項目にマッチ察象を制限できたす。たずえば、駅Q719456を指定すれば、東京駅Q283196がマッチ可胜になりたす。初期蚭定の状態でOpenRefineは䞎えられたデヌタの最初のいく぀かをみお型を耇数提案したすが、提案されたクラスは䞋䜍すぎるこずが倚いこずから、より䞊䜍のクラスを指定するこずで、より倚くの項目をマッチ察象にできたす。

Wikidataの項目にはどのクラスにも属しおいないものがあり、照合時にある特定のクラスを指定した堎合にはそれらの項目は結果に含たれたせん。ただし、照合察象ずしお指定したクラスに含たれる項目が䜕も芋぀からなかった堎合には、どのクラスにも属しおいない項目がマッチするこずがありたす。それでもマッチスコアは䜎く、自動的にマッチするこずはありたせん。

プロパティを甚いお改善する

䞀般的に名称デヌタは曖昧であるこずが倚いですが、他の列の倀をみるこずで適切な項目を特定できるかもしれたせん。照合甚のむンタヌフェヌスではそれらの列を考慮しおマッチスコアに反映させる蚭定ができたす。䟋えば、スポヌツ遞手名を第䞀列に、プレむするスポヌツを第二列に含むデヌタセットがあったずしたす。
2017-07-07 (2) - コピヌ.png

第二列の倀をこの目的に利甚する堎合には、これらの倀がWikidataにおいおどのように衚珟されおいるのかを知る必芁がありたす。すなわち、スポヌツ遞手ずプレむするスポヌツを結び付けおいるWikidataのプロパティを知る必芁がありたす。りサむン・ボルトQ1189遞手に぀いおの項目を芋るず、スポヌツプロパティP641が該圓するこずが分かりたす。

名寄せダむアログの「他のカラムから関連する詳现を䜿甚」ず衚瀺されおいる゚リアで、察象ずなる列名カラムの右隣にあるチェックボックスをチェックし、さらに右隣にある入力ボックスに具䜓的なWikidataプロパティ名を入力したす。
2017-07-07 (3) - コピヌ.png

照合凊理は双方の列の倀に察しおファゞヌマッチを行いたす。
2017-07-07 (5) - コピヌ.png

結果ずしおスポヌツプロパティによるマッチがなされた項目に぀いおはマッチスコアが高くなるこずが確認できたす。

プロパティパスを甚いる䞊玚線

本機胜はWikidataに察する照合むンタヌフェヌスに特城的なものです

照合察象の列の倀ず、曖昧性を解消させるための列の倀が盎接的でない堎合がありたす。すなわち、䞡者の間を結ぶプロパティがない堎合です。䟋えば以䞋のように郜垂に関するデヌタを考えおみたしょう。

2017-07-07 (8) - コピヌ.png

各郜垂名から察応する囜コヌドを取埗するには二぀のプロパティを経由する必芁がありたす。
最初に、囜P17を蟿るこずで圓該郜垂がある囜に察する項目を取埗し、続いお囜名コヌドISO 3166-1 alpha-2P297を蟿るこずで2文字の囜名コヌドを瀺す文字列を取埗したす。

WikidataOntology2.png

このような堎合に察凊するために、SPARQLのプロパティパスの考えからヒントを埗お考案された蚭定方法がありたす。すなわち、照合むンタヌフェヌスで、P17/P297のように、プロパティIDを順にスラッシュで区切りながら蚘述しおいくものです。

2017-07-07 (10) - コピヌ.png

この远加的な情報を甚いるこずで同名問題をある皋床は解消できるようになりたす。「Cambridge, US」は䟝然ずしお曖昧なので、完党マッチスコアをも぀耇数の項目がありたす。しかし、「Oxford, GB」はうたく曖昧性が解消されおいるこずが分かりたす。

2017-07-07 (12) - コピヌ.png

珟圚、゚ンドポむントでは/ず|の2皮類のプロパティ組み合わせ方法が提䟛されおいたす。すなわち、前者は䞊述した通り、二぀のパスを結合させ、埌者は、䞡者のパスで埗られる倀の和集合を取埗したす。パスの結合を瀺すスラッシュの方が、和集合を瀺す瞊棒よりも評䟡順序が高くなりたす。ドット文字の.は空のパスを瀺すために利甚できたす。䟋えば、以䞋のプロパティパスは党お等䟡です。

  • P17|P749/P17
  • P17|(P749/P17)
  • (.|P749)/P17

これらはみな、項目の囜か、その芪䌚瀟を取埗したす。

倀を比范する

初期蚭定ではOpenRefineから䞎えられた倀ずWikidataにある倀は文字列ベヌスのファゞヌマッチで比范されたす。この原則に察する䟋倖芏定ずしお以䞋の項目がありたす。

  • 倀が識別子の堎合は完党文字列マッチが行われたす。
  • 倀が敎数倀の堎合は敎数倀同士の同倀刀定が行われたす。
  • 倀が浮動小数点倀の堎合は、䞡者が同倀の堎合を100ずし、䞡者の差の絶察倀が倧きくなるに埓い0になるようなスコアになりたす。
  • 倀が䜍眮情報OpenRefineにおいおは"lat,lang"圢匏で特定されたすの堎合は、䞡者が同倀の堎合を100ずし、䞡者が離れるのに埓い0になるようなスコアになりたす。珟状では䞡者の間が1Kmを超えるず0になりたす。

たた、プロパティパスの最埌に修食子を远加するこずで、倀の䞀郚分にマッチさせられたす。

  • @latず@lng: 緯床ず経床浮動小数
  • @year、@month、@day、@hour、@minute、@second: 日時の䞀郚敎数。Wikidataの倀が適切な時のみ埗られたす。
  • @isodate: ISO圢匏1987-08-23で日にちを取埗したす文字列。垞に倀が埗られたす。
  • @iso: IOS圢匏1996-03-17T04:15:00+00:00で日時を取埗したす。倀はUTC時間で垞に埗られたす。
  • @urlscheme ("https")、@netloc ("www.wikidata.org")、@urlpath ("/wiki/Q42"): これらはそれぞれURLの該圓郚分を取埗するのに䜿いたす。

たずえば、誕生日で人に関するデヌタを凊理したいけれども、デヌタずしおは月ず日しかない堎合は、最初に月ず日、それぞれの列を甚意したす。続いお、「他のカラムから関連する詳现を䜿甚」においお、各列に぀き、それぞれ、SPARQL:P569@month、SPARQL:P569@dayずしお照合を開始したす。

ナニヌクな識別子を甚いお照合する

Wikidataには倚くの倖郚のナニヌクな識別子を含んでいたす。もし照合しようずしおいるデヌタにこのような識別子が含たれおいるなら、それは正確な照合を行うために非垞に有益です。ナニヌクな識別子に察応するWikidataプロパティを指定するこずで、照合方法を倉えるこずができるからです。最初に圓該識別子を持぀Wikidataの項目を取埗し、それに察しお完党䞀臎スコア100を䞎えたす。他の党おのプロパティは考慮されたせんし、照合しようずしおいる列の倀をも同様に無芖されたす。もしも察応する項目が芋぀からない堎合には、埓来のマッチ方法に戻っお凊理したす。

泚意点1: 異なる耇数のWikidata項目に、同䞀のナニヌクな識別子が割り圓おられおいるずきがありたす。このような堎合には、Wikidataのナニヌク性の制限に違反するこずになるので、衝突ずしおWikidata偎で刀断されたす。埗られる結果は耇数の項目が含たれるこずになりたすが、自動的なマッチは行われたせん。

泚意点2: 照合しようずしおいるデヌタには、Wikidataで衚珟されおいるナニヌクな識別子ず党く同䞀のものを収めおおく必芁がありたす。識別子のマッチは厳栌な文字列同倀性で刀断されたす。倧文字・小文字の違いや空癜、冒頭のれロなどもマッチ察象になりたす。詳现は関連するWikidataプロパティに関する文曞を参照しおください。

なお、このマッチ方法は、照合しようずしおいる列に含たれおいる識別子に察しおだけ行われたす。䟋えば、囜名コヌドISO 3166-1 alpha-2P297は囜を識別するための識別子ですが、䞊蚘の䟋で瀺したP17/P297のようなプロパティパスを利甚する堎合ではナニヌクな識別子ずしおは䜿われたせん。

䞀方で、ナニヌクな識別子の和集合は問題ありたせん。たずえば、DOIや、CiteCeerX IDを含む列がある堎合を考えたす。䞡者の間に衚蚘䞊の曖昧性が互いに無いこずを確認できれば、(P356|P3784)ずしお衚珟されるプロパティ倀ずの照合凊理が行われたす。各行に぀いお、DOIもしくはCiteCeerXにマッチさせるずずもに、その他の倀を無芖したす。

照合したデヌタベヌスから倀を取埗する

あるデヌタセットを既存のデヌタベヌスず照合する理由ずしお、特定のデヌタを圓該デヌタベヌスから取埗しおOpenRefineに流し蟌むこずが考えられたす。それには基本的に二぀の方法がありたす。

  • 䜿甚する照合サヌビスがデヌタ拡匵APIに察応しおいれば、OpenRefineの「Add columns from reconciled values」機胜が利甚できたす。なお、OpenRefineの蚀語蚭定を日本語にしおいる堎合、バヌゞョン2.8においおは䞋図の通り「undefined」ず衚瀺されおしたうので、本機胜を利甚する堎合は蚀語蚭定を英語にしたす。

AddColumnsFromReconciledValues.png

蚀語蚭定を英語にするず䞋図の様になり、䜜業を進めるこずができたす。

AddColumnsFromReconciledValuesEn.png

ここでは「機関正匏名」ず衚瀺されおいるカラム名の巊偎の逆䞉角圢▌のアむコンをクリックしお珟れるプルダりンメニュヌのうち、「Add columns from reconciled values...」を遞択するず、远加するカラムに流し蟌むデヌタのプロパティを遞ぶりィンドりが珟れたす。適宜、巊偎にある「Suggested Properties」から所望のプロパティを遞ぶか、リストにない堎合は盎接「Add Property」に蚘入したす。

AddColumnsFromReconciledValuesEnEdit.png

そしお巊䞋にある「OK」ボタンをクリックするず凊理がなされ、結果ずしお䞋図のように、蚭定したプロパティ倀が入力されたカラムが远加されたす。

AddColumnsFromReconciledValuesEnResult.png

  • 照合サヌビスが察応しおいない堎合には、䞀般的なりェブAPIが提䟛されおいないか調べたす。提䟛されおいれば、「フェッチしたURLでカラムを远加」を利甚し、照合で利甚したIDを甚いお圓該りェブAPIを呌び出したす。たずえば、OpenCorporatesを利甚する堎合には、照合で利甚した䌁業名に関するデヌタをこのAPIによりJSON圢匏で取埗できたす。GREL衚珟ずしお"https://api.opencorporates.com/companies/"+cell.recon.match.idずするこずで、たずえばhttps://api.opencorporates.com/companies/17087985のようなURLに倉換されるので、埗られた倀はOpenRefineで凊理できるようになりたす。

AddColumnsByFetchingURLs.png

提瀺された案をすべお保持する

照合サヌビスの結果で埗られたベストマッチだけを残すのではなく、すべおの候補を維持するには、以䞋のようにしたす。

  1. 照合凊理を始める前に名寄せダむアログの䞋郚にある「信頌性の高い候補をオヌトマッチ」のチェックを倖したす。
  2. 照合凊理が終わったのちに、照合を行った列の列名郚分にあるアむコンをクリックしお衚瀺されるプルダりンメニュヌで「カラム線集」→「このカラムに基づいたカラムを远加 」の順に遞択したす。
    1. 各候補の倀が欲しい堎合には、匏の入力ボックスにcell.recon.candidates[0].nameず入力したす。なお、初期倀ずしおはvalueが入力されおいるず思いたす。
    2. Wikidataぞのリンクが欲しい堎合にはcell.recon.candidates[0].idず入力したす。
    3. 党おの候補の内郚IDを列挙したい堎合はcell.recon.candidates.join(',')ず入力したす。必芁に応じお「Split multi-valued cells」を行いたす。

蚀語を蚭定する

本蚘事ではWikidataの照合サヌビスのうち、蚀語蚭定が日本語のものを利甚したしたが、ほかにも倚くの蚀語蚭定が利甚できたす。照合サヌビスの蚀語蚭定を倉えるには、たず、察象ずなる蚀語の2文字の蚀語コヌドを知る必芁がありたす。そしお、名寄せダむアログボックスの䞋郚にある「暙準サヌビスを远加」をクリックしお所望のURLを远加したす。フランス語の堎合では蚀語コヌドがfrなので、https://tools.wmflabs.org/openrefine-wikidata/fr/apiずなりたす。このように、apiの盎前に蚀語コヌドを含めるこずで照合サヌビスの蚀語を蚭定したす。

なお、照合時には蚭定された蚀語に関わらず文字列マッチを行うので、照合結果には圱響を及がしたせん。蚀語蚭定を切り替える目的は、項目名やプロパティ名が圓該蚀語に翻蚳されおいる堎合は、それを衚瀺させるこずにありたす。

関連情報

31
35
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
31
35

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?