(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-10-30
(45)【発行日】2023-11-08
(54)【発明の名称】検索プログラム、検索方法、及び、検索装置
(51)【国際特許分類】
G06F 16/9032 20190101AFI20231031BHJP
G06F 16/9038 20190101ALI20231031BHJP
【FI】
G06F16/9032
G06F16/9038
(21)【出願番号】P 2020065952
(22)【出願日】2020-04-01
【審査請求日】2023-01-12
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100092978
【氏名又は名称】真田 有
(74)【代理人】
【識別番号】100189201
【氏名又は名称】横田 功
(72)【発明者】
【氏名】森川 裕章
【審査官】松尾 真人
(56)【参考文献】
【文献】特許第5315485(JP,B1)
【文献】米国特許出願公開第2019/0114325(US,A1)
【文献】米国特許出願公開第2019/0392077(US,A1)
【文献】特開平07-234877(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
G06Q 10/00-99/00
(57)【特許請求の範囲】
【請求項1】
特定のカテゴリの指定を受け付け、
ナレッジグラフにおける前記特定のカテゴリに関連付けられた複数のファセットのそれぞれが前記ナレッジグラフにおいて関連付けられているカテゴリの個数に基づく第1指標と、前記ナレッジグラフにおける前記特定のカテゴリと前記複数のファセットのそれぞれとの距離に基づく第2指標と、のうち少なくとも一方に基づいて算出される前記複数のファセットの優先度に応じて、前記複数のファセットを順に並べて出力する、
処理をコンピュータに実行させる、検索プログラム。
【請求項2】
前記第1指標は、前記ナレッジグラフにおける全てのカテゴリの個数を、前記複数のファセットのそれぞれが前記ナレッジグラフにおいて関連付けられているカテゴリの個数でそれぞれ除算した結果を含む、
請求項1に記載の検索プログラム。
【請求項3】
前記複数のファセットのそれぞれについての前記結果を含む前記第1指標を算出し、
算出した前記第1指標を含む情報を記憶領域に格納する、
処理を前記コンピュータに実行させる、請求項2に記載の検索プログラム。
【請求項4】
前記第2指標は、前記ナレッジグラフにおける前記特定のカテゴリの階層と、前記複数のファセットのそれぞれが前記ナレッジグラフにおいて関連付けられているカテゴリの階層のそれぞれとの距離に基づく、
請求項1~請求項3のいずれか1項に記載の検索プログラム。
【請求項5】
前記第2指標は、前記複数のファセットのそれぞれが標準語彙であるか否かに基づく、
請求項1~請求項4のいずれか1項に記載の検索プログラム。
【請求項6】
前記出力する処理は、前記特定のカテゴリの指定を受け付けた画面からの遷移先である検索画面であって、前記特定のカテゴリに関連付けられた前記複数のファセットを対象とした検索を行なうための前記検索画面に、前記複数のファセットの優先度に応じて順に並べた前記複数のファセットを表示する処理を含む、
請求項1~請求項5のいずれか1項に記載の検索プログラム。
【請求項7】
特定のカテゴリの指定を受け付け、
ナレッジグラフにおける前記特定のカテゴリに関連付けられた複数のファセットのそれぞれが前記ナレッジグラフにおいて関連付けられているカテゴリの個数に基づく第1指標と、前記ナレッジグラフにおける前記特定のカテゴリと前記複数のファセットのそれぞれとの距離に基づく第2指標と、のうち少なくとも一方に基づいて算出される前記複数のファセットの優先度に応じて、前記複数のファセットを順に並べて出力する、
処理をコンピュータが実行する、検索方法。
【請求項8】
特定のカテゴリの指定を受け付ける受付部と、
ナレッジグラフにおける前記特定のカテゴリに関連付けられた複数のファセットのそれぞれが前記ナレッジグラフにおいて関連付けられているカテゴリの個数に基づく第1指標と、前記ナレッジグラフにおける前記特定のカテゴリと前記複数のファセットのそれぞれとの距離に基づく第2指標と、のうち少なくとも一方に基づいて算出される前記複数のファセットの優先度に応じて、前記複数のファセットを順に並べて出力する出力部と、
を備える、検索装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、検索プログラム、検索方法、及び、検索装置に関する。
【背景技術】
【0002】
様々な情報源から情報を収集した知識ベース(KB;Knowledge Base)の一例として、ナレッジグラフ(KG;Knowledge Graph)が知られている。
【0003】
KGは、例えば、KGが格納するデータ全体を対象としたファセット検索(Faceted Search)に利用されることがある。ファセット検索は、データ検索システムにより用意された検索条件をユーザが選択することで、KG内のコンテンツの絞り込みを可能とする検索手法である。
【先行技術文献】
【特許文献】
【0004】
【文献】特表2011-513819号公報
【文献】特表2005-514673号公報
【非特許文献】
【0005】
【文献】駒水孝裕、天笠俊之、北川博之,“D-022 XMLデータに対するファセット検索のためのファセット抽出の自動化”,第13回情報科学技術フォーラム(FIT2014),第2分冊 第133頁-第134頁,2014年
【文献】駒水孝裕、天笠俊之、北川博之,“XMLデータに対するファセットナビゲーションのためのフレームワークFoXの提案”,第1回データ工学と情報マネジメントに関するフォーラム(DEIM),B7-6,2009年
【発明の概要】
【発明が解決しようとする課題】
【0006】
ファセット検索において、KGデータを或る特定のカテゴリに絞り込んで検索を行なう場合、適切なキー(ファセットキー)による絞り込みが行なわれない場合がある。
【0007】
例えば、プロ野球選手というカテゴリの場合、当該カテゴリとの関連度が高い、打席や利き腕、甲子園出場経験等の適切なファセットキーで絞り込むことで、ユーザの知識に即したファセット検索が可能となる。
【0008】
しかし、従来のファセット検索システムでは、或る特定のカテゴリに絞り込んだ検索を行なう場合であっても、生年月日や出身地、会社種別等の、重要ではない又は適切ではないファセットキーにより絞り込みが行なわれる場合がある。
【0009】
このように、適切なファセットキーによる絞り込みが行なわれない場合、ファセット検索において、ユーザの目的のデータに辿り着くまでの手番が増加する可能性がある。
【0010】
1つの側面では、本発明は、カテゴリに関連付けられたファセットの集合から適切な複数のファセットを出力することを目的の1つとする。
【課題を解決するための手段】
【0011】
1つの側面では、検索プログラムは、コンピュータに、以下の処理を実行させてよい。前記処理は、特定のカテゴリの指定を受け付けてよい。また、前記処理は、ナレッジグラフにおける前記特定のカテゴリに関連付けられた複数のファセットのそれぞれが前記ナレッジグラフにおいて関連付けられているカテゴリの個数に基づく第1指標と、前記ナレッジグラフにおける前記特定のカテゴリと前記複数のファセットのそれぞれとの距離に基づく第2指標と、のうち少なくとも一方に基づいて算出される前記複数のファセットの優先度に応じて、前記複数のファセットを順に並べて出力してよい。
【発明の効果】
【0012】
1つの側面では、本発明は、カテゴリに関連付けられたファセットの集合から適切な複数のファセットを出力することができる。
【図面の簡単な説明】
【0013】
【
図1】RDF(Resource Description Framework)の記述方式の一例であるグラフ形式の表現例を示す図である。
【
図2】KGデータにおける、カテゴリによる絞り込み対象と、カテゴリごとのファセットとを例示する図である。
【
図3】ファセット検索システムのUI(User Interface)の画面表示例を示す図である。
【
図4】一実施形態に係るファセット検索システムの機能構成例を示すブロック図である。
【
図5】サーバの機能を実現するコンピュータのハードウェア構成例を示すブロック図である。
【
図6】頻度表作成部による頻度表の作成処理の一例を示す図である。
【
図7】クラス集合、P頻度表、及び、PO頻度表の一例を示す図である。
【
図10】カテゴリ重要度を表形式で表したカテゴリ重要度表の一例を示す図である。
【
図11】ファセットスコアを表形式で表したファセットスコア表の一例を示す図である。
【
図12】RDFスキーマにおける、クラス及びファセットキーを表すグラフの一例を示す図である。
【
図13】RDFスキーマにおける、クラス及びファセットキーを表すグラフの一例を示す図である。
【
図14】スコア(org_score)、ファセットスコア(new_score)、スコア(ont_score)、並びに、最終的なスコア(final_score)を表形式で例示する図である。
【
図15】項目一覧領域に表示されるファセットキーの一例を示す図である。
【
図16】“org_score”及び“new_score”のそれぞれをベースとしてファセットキーをソートした場合のMRR(Mean Reciprocal Rank)の比較例を示す図である。
【
図17】“new_score”及び“final_score”のそれぞれをベースとしてファセットキーをソートした場合のMRRの比較例を示す図である。
【
図18】一実施形態に係るDB(Database)作成処理の動作例を説明するフローチャートである。
【
図19】
図18のステップS1の頻度表作成処理の動作例を説明するフローチャートである。
【
図20】
図18のステップS2のスコアDB作成処理の動作例を説明するフローチャートである。
【
図21】一実施形態に係るファセット検索処理の動作例を説明するフローチャートである。
【発明を実施するための形態】
【0014】
以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形又は技術の適用を排除する意図はない。例えば、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。なお、以下の説明で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。
【0015】
〔1〕一実施形態
〔1-1〕ファセット検索システムの説明
まず、ファセット検索システムについて簡単に説明する。ファセット検索システムは、例えば、大規模なナレッジグラフ(KG)に対するファセット検索を行なうためのシステムである。
【0016】
一実施形態に係るファセット検索システムは、例えば、KG内の検索対象のデータ全体に対するファセット検索を実施する代わりに、カテゴリで候補を絞り込み、その後、カテゴリ内のファセット検索を実施することにより、効率化を実現する。
【0017】
KGに格納されるデータは、主語(Subject)、述語(Predicate)、目的語(Object)の3つの要素を1セットとする、RDF(Resource Description Framework)と呼ばれる記述方式により表現される。
【0018】
KGを利用するファセット検索において、カテゴリは、インスタンスのクラスである。また、ファセットキーは、「述語」となり、ファセット値は、「目的語」となる。ファセット検索により、ファセット検索システムは、検索条件に合致したインスタンス、例えば「主語」の集合を探索する。
【0019】
ここで、「インスタンス」とは、世の中の事象や事物を表現するものであり、エンティティとも呼ばれる。例えば、野球選手である「山田太郎」は、インスタンスの一例であり、「山田太郎」のように文字列で表されてもよく、DB(Database)内のIDで表されてもよい。
【0020】
DBの一例としては、データ(オープンデータ)を格納しインターネット上で公開する種々のDB、例えば、LOD(Linked Open Data)の技術を利用するDBが挙げられる。
【0021】
当該DB内のIDとは、当該DBにおいて「山田太郎」の情報を参照できる場所のURI(Uniform Resource Indicator)、例えば「山田太郎」の記事を含むウェブ(Web)ページのURL(Uniform Resource Locator)が挙げられる。一例として、DBのドメインが“aaa.org”である場合、「山田太郎」のDB内のIDは、“http://aaa.org/resource/Taro_Yamada”となる。
【0022】
一実施形態において、KGには、インスタンスとして、1以上のDB内のIDが設定可能であってよい。換言すれば、KGは、情報源として1以上のDBから情報を収集した知識ベースである。
【0023】
「クラス」とは、インスタンスの種別を表すものであり、例えば、「山田太郎」のクラスは、「野球選手」である。インスタンスは、複数のクラスに属する場合があり、「山田太郎」は、「野球選手」“http://aaa.org/ontology/BaseballPlayer”であり、「アスリート」“http://aaa.org/ontology/Athlete”であり、「人」“http://aaa.org/ontology/Person”である。
【0024】
クラスは、上位及び下位の関係を保持できる。例えば、RDFスキーマを利用すると、“BaseballPlayer”(野球選手)と“Athlete”(アスリート)は、“rdfs:subClassOf”(サブクラス)の関係となる。
【0025】
以下、RDFスキーマ(RDFSスキーマと称されてもよい)、及び、他の標準語彙や独自に定義した語彙を利用して定義したスキーマを、「オントロジー」(Ontology)と呼ぶ。
【0026】
図1は、RDFの記述方式の一例であるグラフ形式の表現例を示す図である。なお、
図1の説明では、東京都の知事である「鈴木花子」について、DB“http://aaa.org/”内のURIをインスタンスに含む例を示す。
【0027】
また、以下に、
図1に示す表現例をテキスト(n3)形式で示す。
【0028】
<http://ja.aaa.org/resource/東京都> <http://aaaa.org/ontology/leader> <http://ja.aaa.org/resource/鈴木花子>.
<http://ja.aaa.org/resource/鈴木花子>
rdf:type <http://aaa.org/ontology/Politician>;
<http://aaa.org/ontology/birthPlace> <http://ja.aaa.org/resource/兵庫県>;
<http://aaa.org/ontology/birthDate> “1960-01-01”.
【0029】
このように、RDFは、「もの」、「こと」を、「主語」(S;Subject)、「述語」(P;Predicate)、「目的語」(O;Object)の3つ組みで表現する。
図1及び上記テキスト(n3)形式で示す表現例により、以下のように「もの」、「こと」が整理される。なお、“rdf:type”は、インスタンスとクラスとの関係を定義する述語である。
【0030】
「東京都(S)の 知事(P)は 鈴木花子(O) である」
「鈴木花子(S)は(P)政治家(O)、出身(P)は兵庫県(O)、生年月日(P)は1960-01-01(O)である」
【0031】
図2は、KGデータにおける、カテゴリによる絞り込み対象と、カテゴリごとのファセットとを例示する図である。例えば、KGデータは、「主語」、「述語」、「目的語」のセットとして、「山田太郎」、「rdf:type」、「プロ野球選手」のセットや、「山田太郎」、「打席」、「左」のセットを含んでよい。
【0032】
ファセット検索システムは、例えば、「事物」から「人」又は「組織」、「人」から「政治家」、「プロ野球選手」又は「サッカー選手」、「組織」から「会社」又は「プロ野球チーム」のように、階層的に、カテゴリの絞り込み(探索)を可能としてよい。
【0033】
例えば、ユーザは、ファセット検索システムにおいて、いずれかのカテゴリのファセットを選択し、提示された候補となる値を選択することで、検索結果を絞り込むことができる。なお、
図2の例において、「政治家」のカテゴリに着目すると、ファセットは、{名前、所属政党、出身地、生年月日}であり、それぞれに対応付けられる文字列やDB内のIDがファセットに対する値である。
【0034】
図3は、ファセット検索システムのUI(User Interface)の画面表示例を示す図である。
図3に示すように、ファセット検索システムのUIは、ユーザの端末に表示する画面として、カテゴリ探索画面100と、カテゴリ探索画面100から遷移するファセット検索画面200とを含んでよい。
【0035】
カテゴリ探索画面100は、KGデータからカテゴリを絞り込むための画面、換言すれば、特定のカテゴリの指定を受け付ける画面であり、例えば、カテゴリの選択領域110及びクラスの選択領域120を含んでよい。なお、カテゴリ探索画面100は、ファセット検索画面200において保存された検索条件を表示するためのボタン130を含んでもよい。
【0036】
選択領域110は、例えば、
図2に示す「事物」からデータセット、例えば「人」又は「組織」の選択を受け付けるための領域であり、
図3の例では「データセットA」及び「データセットB」が表示されている。選択領域120は、選択領域110で選択された「人」又は「組織」に対応付けられたクラスの一覧を表示する領域であって、例えば、
図2に示す「人」から「政治家」、「プロ野球選手」又は「サッカー選手」等の選択を受け付けるための領域である。
【0037】
なお、
図3の例では、便宜上、選択領域110を「データセット」、選択領域120を「クラス」の選択領域と表記しているが、選択領域110及び120で選択された「データセット」の「クラス」を「カテゴリ」と捉えてよい。
【0038】
UIは、選択領域120で選択されたクラス(カテゴリ)の情報に基づき、ファセット検索画面200を表示する。
【0039】
ファセット検索画面200は、カテゴリ探索画面100で選択されたクラス(カテゴリ)から、ファセットを検索するための画面である。すなわち、ファセット検索画面200は、カテゴリ探索画面100からの遷移先である検索画面であって、特定のカテゴリに関連付けられた複数のファセットを対象とした検索を行なうための検索画面である。
【0040】
ファセット検索画面200は、例えば、項目一覧領域210、検索条件の設定領域230、出力項目の設定領域250、出力言語の設定領域260、及び、一覧表示領域280を含んでよい。
【0041】
項目一覧領域210は、カテゴリ探索画面100で選択されたクラス(カテゴリ)に基づき、KGデータ内のファセットキーを表示する領域である。
【0042】
検索条件の設定領域230は、項目一覧領域210で選択された状態で追加ボタン220が押下されたファセットキーについての検索条件を設定するための領域である。出力項目の設定領域250は、項目一覧領域210で選択された状態で追加ボタン240が押下されたファセットキーについて、エンティティを出力する項目及び出力順序を設定するための領域である。出力言語の設定領域250は、エンティティの出力言語を設定するための領域である。
【0043】
一覧表示領域280は、検索ボタン270が押下された場合に、設定領域230、250及び260の設定内容に基づき、エンティティの一覧を表示する領域である。
【0044】
なお、ファセット検索画面200は、一覧表示領域280の表示内容や、設定領域230、250及び260の設定内容、項目一覧領域210の表示内容、のいずれか1つ以上についての操作ボタン290を表示してもよい。操作ボタン290は、例えば、CSV(Comma Separated Value)形式での出力ボタン、RDF問合せ言語の一例であるSPARQL(SPARQL Protocol and RDF Query Language)文の確認ボタン、及び、検索条件の保存ボタン、等を含んでよい。
【0045】
ところで、ファセット検索画面200における項目一覧領域210には、カテゴリに適したファセットキーが表示されない場合がある。以下、このような場合を比較例として説明する。
【0046】
(比較例)
例えば、
図3に示す画面表示を、非特許文献1に記載された技術を用いて実行する場合を想定する。この技術では、例えば、サーバは、XML(eXtensible Markup Language)データを用いて、以下の手順でファセットの値の抽出を行なう。
【0047】
(i)サーバは、XMLデータから構造要約を抽出する。
構造要約は、XMLデータ中の各要素の親子関係や、親要素に対する子要素の出現頻度等を示す情報である。
【0048】
(ii)構造要約からクラス候補及びファセット候補を抽出する。
なお、上記技術においては、構造要約内の或るノードでXMLデータ中のオブジェクトに対応するものをクラスといい、構造要約中のクラスノードの子孫ノードのうちの、選ばれたノードをファセットという。
【0049】
(iii)クラス候補及びファセット候補から適切なものを抽出する。
(iv)XMLデータから抽出されたクラスに該当するXML部分木をオブジェクトとして抽出する。
(v)抽出されたファセットに該当する要素の値をファセットの値として抽出する。
【0050】
例えば、サーバは、上記(i)~(v)の手順において、XMLデータに代えて、RDFの記述形式のKGデータを対象とすることが考えられる。
【0051】
非特許文献1に記載された技術において、上記(iii)の手順では、サーバは、頻度によるアプローチと、意味に基づくアプローチとを組み合わせた手法を採用する。頻度によるアプローチでは、サーバは、KGデータ内でより多くのインスタンスを取得できるファセットキーを抽出することができる。意味に基づくアプローチでは、サーバは、WordNetやWikipedia(登録商標)等の既存知識を利用し、ファセットキーが人間により解釈可能か否かを判定する。
【0052】
なお、上記技術では、ファセットキーの重要度については考慮されていない。一方、非特許文献2には、ファセットキーをランキングする指標が記載されている。
【0053】
ここで、非特許文献1及び2に記載された技術を用いて、ファセット検索画面200における項目一覧領域210を表示する場合、換言すれば、或る特定のカテゴリ内のファセット検索を行なう場合を考える。或る特定のカテゴリ内のファセット検索を行なう場合、カテゴリ固有のファセットキーで絞り込んだ方が良いケースがある。例えば、カテゴリ探索画面100において、プロ野球選手というカテゴリが選択された場合を想定する。
【0054】
この場合、非特許文献2に記載された技術では、KGデータ全体の統計的傾向により、甲子園出場経験よりも、出身地や生年月日が重要なファセットキーとして上位にランキングされてしまう。
【0055】
また、非特許文献1に記載された技術では、知識ベースにファセットが存在するか否かを利用するに留まっており、知識のオントロジーは利用されない。例えば、「日付」のファセットキーについて、人の場合は「生まれた日」、プロ野球選手の場合は「初出場の年月日」等の方が重要なファセットとなる。これらの情報は、オントロジー等によりKGの中で構造化されている。
【0056】
しかし、プロ野球選手というカテゴリが選択された場合、ファセットキーとして、生年月日や出身地、会社種別等よりも、打席や利き腕、甲子園出場経験等で絞り込まれる方が、ユーザの知識に即したファセット検索を実現できる。
【0057】
そこで、以下で説明する一実施形態に係るファセット検索システムは、主に、下記(a)及び(b)の手法を採用して、項目一覧領域210に表示する、カテゴリに適したファセットキーのランキングを行なう。
【0058】
(a)カテゴリ固有のファセットキーを重要視する指標の導入。
(b)KGの知識構造を考慮したファセットキーの意味解釈の実施。
【0059】
これにより、カテゴリに関連付けられたファセットの集合から適切な複数のファセットを出力することができ、ユーザの目的のデータに辿り着くまでの手番を減少させることができる。
【0060】
〔1-2〕ファセット検索システムの構成例
図4は、一実施形態に係るファセット検索システム1の機能構成例を示すブロック図である。ファセット検索システム1は、ファセット検索を行なう検索システムの一例であり、
図4に示すように、例示的に、サーバ2、ナレッジグラフ(KG)3、及び、1以上(
図4の例では1台)の端末4を備えてよい。
【0061】
KG3は、知識ベースの一例であり、例えば、RDFの記述形式で記述されたデータを記憶してよい。
【0062】
端末4は、ファセット検索システム1のユーザが使用する情報処理端末の一例であり、サーバ2に対してファセットの検索に関するアクセスを行なうPC(Personal Computer)又はサーバ等のコンピュータである。
【0063】
KG3とサーバ2との間、及び、端末4とサーバ2との間は、それぞれ、図示しないネットワークを介して相互に通信可能に接続されてよい。ネットワークは、WAN(Wide Area Network)、LAN(Local Area Network)、又はこれらの組み合わせを含んでよい。WANにはインターネットが含まれてよく、LANにはVPN(Virtual Private Network)が含まれてよい。
【0064】
サーバ2は、検索装置、情報処理装置、又は、コンピュータの一例である。例えば、サーバ2は、ファセット検索システム1において、端末4からのファセットの検索に関する種々のアクセスに応じて、KG3の参照、端末4への応答や情報の通知等の種々の処理を行なう。
【0065】
サーバ2は、例えば、端末4に対して、アクセスを可能とするための機能を提供してよい。当該機能としては、例えば、端末4によるアクセスに用いられる、ウェブページ等の画面の生成及び表示制御が挙げられる。例えば、端末4は、ブラウザ等のアプリケーションを用いてサーバ2にアクセス要求を送信し、サーバ2から受信する画面情報に基づきアプリケーションに表示されるウェブページを介して、サーバ2へのアクセスを行なってよい。
【0066】
サーバ2は、仮想サーバ(VM;Virtual Machine)であってもよいし、物理サーバであってもよい。また、サーバ2の機能は、1台のコンピュータにより実現されてもよいし、2台以上のコンピュータにより実現されてもよい。さらに、サーバ2の機能のうちの少なくとも一部は、クラウド環境により提供されるHW(Hardware)リソース及びNW(Network)リソースを用いて実現されてもよい。
【0067】
(ハードウェア構成例)
図5は、サーバ2の機能を実現するコンピュータ10のハードウェア(HW)構成例を示すブロック図である。サーバ2の機能を実現するHWリソースとして、複数のコンピュータが用いられる場合は、各コンピュータが
図5に例示するHW構成を備えてよい。
【0068】
図5に示すように、コンピュータ10は、HW構成として、例示的に、プロセッサ10a、メモリ10b、記憶部10c、IF(Interface)部10d、I/O(Input / Output)部10e、及び読取部10fを備えてよい。
【0069】
プロセッサ10aは、種々の制御や演算を行なう演算処理装置の一例である。プロセッサ10aは、コンピュータ10内の各ブロックとバス10iで相互に通信可能に接続されてよい。なお、プロセッサ10aは、複数のプロセッサを含むマルチプロセッサであってもよいし、複数のプロセッサコアを有するマルチコアプロセッサであってもよく、或いは、マルチコアプロセッサを複数有する構成であってもよい。
【0070】
プロセッサ10aとしては、例えば、CPU、MPU、GPU、APU、DSP、ASIC、FPGA等の集積回路(IC;Integrated Circuit)が挙げられる。なお、プロセッサ10aとして、これらの集積回路の2以上の組み合わせが用いられてもよい。CPUはCentral Processing Unitの略称であり、MPUはMicro Processing Unitの略称である。GPUはGraphics Processing Unitの略称であり、APUはAccelerated Processing Unitの略称である。DSPはDigital Signal Processorの略称であり、ASICはApplication Specific ICの略称であり、FPGAはField-Programmable Gate Arrayの略称である。
【0071】
メモリ10bは、種々のデータやプログラム等の情報を格納するHWの一例である。メモリ10bとしては、例えばDRAM(Dynamic Random Access Memory)等の揮発性メモリ、及び、PM(Persistent Memory)等の不揮発性メモリ、の一方又は双方が挙げられる。
【0072】
記憶部10cは、種々のデータやプログラム等の情報を格納するHWの一例である。記憶部10cとしては、HDD(Hard Disk Drive)等の磁気ディスク装置、SSD(Solid State Drive)等の半導体ドライブ装置、不揮発性メモリ等の各種記憶装置が挙げられる。不揮発性メモリとしては、例えば、フラッシュメモリ、SCM(Storage Class Memory)、ROM(Read Only Memory)等が挙げられる。
【0073】
また、記憶部10cは、コンピュータ10の各種機能の全部若しくは一部を実現するプログラム10g(検索プログラム)を格納してよい。例えば、サーバ2のプロセッサ10aは、記憶部10cに格納されたプログラム10gをメモリ10bに展開して実行することにより、
図4に例示するサーバ2としての機能を実現できる。
【0074】
IF部10dは、ネットワークとの間の接続及び通信の制御等を行なう通信IFの一例である。例えば、IF部10dは、イーサネット(登録商標)等のLAN(Local Area Network)、或いは、FC(Fibre Channel)等の光通信等に準拠したアダプタを含んでよい。当該アダプタは、無線及び有線の一方又は双方の通信方式に対応してよい。例えば、サーバ2は、IF部10dを介して、KG3及び端末4のそれぞれと相互に通信可能に接続されてよい。また、例えば、プログラム10gは、当該通信IFを介して、ネットワークからコンピュータ10にダウンロードされ、記憶部10cに格納されてもよい。
【0075】
I/O部10eは、入力装置、及び、出力装置、の一方又は双方を含んでよい。入力装置としては、例えば、キーボード、マウス、タッチパネル等が挙げられる。出力装置としては、例えば、モニタ、プロジェクタ、プリンタ等が挙げられる。
【0076】
読取部10fは、記録媒体10hに記録されたデータやプログラムの情報を読み出すリーダの一例である。読取部10fは、記録媒体10hを接続可能又は挿入可能な接続端子又は装置を含んでよい。読取部10fとしては、例えば、USB(Universal Serial Bus)等に準拠したアダプタ、記録ディスクへのアクセスを行なうドライブ装置、SDカード等のフラッシュメモリへのアクセスを行なうカードリーダ等が挙げられる。なお、記録媒体10hにはプログラム10gが格納されてもよく、読取部10fが記録媒体10hからプログラム10gを読み出して記憶部10cに格納してもよい。
【0077】
記録媒体10hとしては、例示的に、磁気/光ディスクやフラッシュメモリ等の非一時的なコンピュータ読取可能な記録媒体が挙げられる。磁気/光ディスクとしては、例示的に、フレキシブルディスク、CD(Compact Disc)、DVD(Digital Versatile Disc)、ブルーレイディスク、HVD(Holographic Versatile Disc)等が挙げられる。フラッシュメモリとしては、例示的に、USBメモリやSDカード等の半導体メモリが挙げられる。
【0078】
上述したコンピュータ10のHW構成は例示である。従って、コンピュータ10内でのHWの増減(例えば任意のブロックの追加や削除)、分割、任意の組み合わせでの統合、又は、バスの追加若しくは削除等は適宜行なわれてもよい。例えば、サーバ2において、I/O部10e及び読取部10fの少なくとも一方は、省略されてもよい。
【0079】
なお、情報処理端末の一例である端末4は、上述したコンピュータ10と同様のHW構成により実現されてよい。
【0080】
例えば、端末4のプロセッサ10aは、記憶部10cに格納されたプログラム10gをメモリ10bに展開して実行することにより、
図4に示す端末4としての機能を実現できる。
【0081】
なお、
図4に示す端末4は、I/O部10eの一例である入力装置及び表示装置を備えてよい。例えば、端末4のプロセッサ10aは、IF部10dを介してサーバ2から受信した情報に基づき、各画面を表示装置に表示してよい。また、端末4のプロセッサ10aは、入力された情報を、IF部10dを介してサーバ2に送信してよい。
【0082】
(機能構成例)
図4の説明に戻り、サーバ2は、例示的に、メモリ部21、検索制御部22、統計処理部23、意味解釈処理部24、及びランキング調整部25を備えてよい。
【0083】
メモリ部21は、記憶領域の一例であり、ファセットの検索に関する種々の情報を記憶する。
図4に示すように、メモリ部21は、例示的に、頻度表21a及びスコアDB21bを記憶してよい。以下の説明では、便宜上、頻度表21a及びスコアDB21bのデータ形式をテーブル形式として説明するが、これに限定されるものではなく、種々のDBのデータ形式であってよい。
【0084】
なお、頻度表21a及びスコアDB21bは、例えば、
図5に示すメモリ10b及び記憶部10cの少なくとも1つが有する記憶領域に格納されてよい。換言すれば、メモリ部21は、メモリ10b及び記憶部10cの少なくとも1つが有する記憶領域により実現されてよい。
【0085】
検索制御部22は、端末4に対して、
図3に例示するカテゴリ探索画面100及びファセット検索画面200を含むUIを提供する。例えば、検索制御部22は、カテゴリ探索画面100及びファセット検索画面200のそれぞれの画面情報を生成し、端末4に送信するとともに、端末4でUIを介して入力された文字列や選択項目を示す制御情報を、端末4から受信してよい。
【0086】
一例として、検索制御部22は、カテゴリ探索画面100の選択領域110及び120で選択されたクラス(カテゴリ)を含む制御情報を端末4から受信すると、当該制御情報を統計処理部23及び意味解釈処理部24のそれぞれに通知してよい。換言すれば、検索制御部22は、特定のカテゴリの指定を受け付ける受付部の一例である。
【0087】
また、検索制御部22は、複数のファセットキーを示す情報をランキング調整部25から通知されると、当該情報に含まれるファセットキーを、その表示順序(並び順)も含めて、項目一覧領域210に表示させる。換言すれば、検索制御部22は、ランキング調整部25により算出される優先度に応じて、複数のファセットを順に並べて出力する(例えば項目一覧領域210に表示する)、出力部の一例である。
【0088】
統計処理部23は、ファセット検索が行なわれる前の事前フェーズ(準備フェーズ)として、KG3及び制御情報に基づき、スコアDB21bを作成又は更新する。例えば、統計処理部23は、頻度表作成部23a及びスコア算出部23bを備えてよい。
【0089】
頻度表作成部23aは、頻度表21aを作成する。例えば、頻度表作成部23aは、
図6に示すように、KG3から、ファセット検索の対象となる全てのクラス集合21a1を取得する。例えば、頻度表作成部23aは、
図6に示すクラス取得クエリQ1を実行し、KG3からクラス集合21a1を取得してよい。
【0090】
そして、頻度表作成部23aは、クラス集合21a1に含まれるクラスとKG3とに基づき、ファセットキー頻度表21a2、及び、ファセットキー・ファセット値頻度表21a3(
図7参照)を算出する。例えば、頻度表作成部23aは、
図6に示すファセットキー頻度表クエリQ2及びファセットキー・ファセット値頻度表クエリQ3をそれぞれ実行し、KG3からファセットキー頻度表21a2、及び、ファセットキー・ファセット値頻度表21a3を取得してよい。
【0091】
なお、KG3において、クラスは、主語(S)、ファセットキーは、述語(P)、ファセット値は、目的語(O)にそれぞれ相当する。このため、ファセットキー頻度表21a2は、P頻度表21a2と称されてもよく、ファセットキー・ファセット値頻度表21a3は、PO頻度表21a3と称されてもよい。
【0092】
図6に示す各クエリQ1~Q3は、RDF問合せ言語の一例であるSPARQLを用いたクエリの一例である。クエリQ1~Q3において、“?s”は主語(S)、“?p”は述語(P)、“?o”は目的語(O)に相当し、クエリQ2及びQ3における“%CLASS%”は、クエリQ1で取得された各クラスによって置換される。
【0093】
図7は、クラス集合21a1、P頻度表21a2、及び、PO頻度表21a3の一例を示す図である。
【0094】
図7に例示するように、クラス集合21a1は、KG3から、“政治家”等のカテゴリごとに、“名前”、所属政党”等のファセットキー(P)を抽出した情報である。
【0095】
P頻度表21a2は、KG3から、クラス集合21a1に含まれるファセットキー(P)ごとに、KG3における「頻度」(例えば、クエリQ2で得られたレコードの「数」)を抽出した情報である。
【0096】
PO頻度表21a3は、KG3から、クラス集合21a1に含まれるファセットキー(P)ごと、且つ、ファセット値(O)ごとに、KG3における「頻度」(例えば、クエリQ3で得られたレコードの「数」)を抽出した情報である。
【0097】
頻度表作成部23aは、クラス集合21a1、P頻度表21a2、及び、PO頻度表21a3のうちの少なくともPO頻度表21a3の情報を、頻度表21aとしてメモリ部21に格納してよい。なお、頻度表21aとして、少なくともPO頻度表21a3の情報を格納するものとしたのは、PO頻度表21a3のファセット値をファセットキー単位で合計することでP頻度表21a2を導出可能だからである。
【0098】
スコア算出部23bは、頻度表作成部23aが作成した頻度表21aに基づき、スコアDB21bを算出する。
【0099】
図8は、各指標の算出式の一例を示す図であり、
図9は、指標値21b1の一例を示す図である。例えば、スコア算出部23bは、下記式(1)~式(4)に例示する各指標の算出式(
図8参照)を用いて、
図9に例示する指標値21b1を算出してよい。
【数1】
【0100】
上記式(1)に示すファセット頻度(freq(f))は、KG3の検索対象データ全体でのファセットの出現頻度を示す指標である。ファセット頻度が大きいファセットほど、多くの検索対象データに出現することを意味し、ファセット頻度が小さいファセットほど、検索対象データ内で出現する頻度がより局所的であることを意味する。上記式(1)において、“N”は、検索対象のデータの全体数であり、“n(facet)”は、ファセットあたりの検索対象のデータ数である。
【0101】
上記式(2)に示すファセット均衡度(bala(f))は、ファセットごとの検索できるデータ数の分布である。ファセット均衡度の大きいファセットほど、検索できるデータの範囲が広く、バランスのよいファセットであり、ファセット均衡度の小さいファセットほど、検索対象データ内でのファセットキーの出現の偏りが大きいことを意味する。上記式(2)において、“n(keyi)”はファセットキー“keyi”において検索できる検索対象データ数であり、“nkey”はファセット“f”におけるキーの数であり、“μ”は“n(keyi)”の平均である。
【0102】
上記式(3)に示すキー濃度(card(f))は、各ファセットにおけるファセットキーの数の分布である。上記式(3)において、“nkey”はファセット“f”におけるキーの数であり、“μ”は“nkey”の平均であり、“σ2”は分散である。
【0103】
上記式(4)に示すキー単調性(mono(f))は、ファセットキーの単調性の指標であり、或るファセットにおけるファセットキーごとに検索できるデータ数の平均を評価する指標である。上記式(4)において、“avg”は“n(keyi)”の平均であり、“μ”及び“σ2”はその平均及び分散である。
【0104】
なお、上記式(1)~式(4)は、例えば非特許文献2に記載された各指標の算出式と同様であり、これらの詳細な説明を省略する。
【0105】
スコア算出部23bは、頻度表21aと上記式(1)~(4)とに基づき、
図9に例示するように、ファセットキーごとの指標値21b1を算出してよい。
【0106】
また、スコア算出部23bは、頻度表21aと、指標値21b1とに基づいて、カテゴリごと、且つ、ファセットキーごとにカテゴリ重要度(signif(f, C))を算出する。カテゴリ重要度(signif(f, C))は、クラス内のファセットの出現頻度を考慮した指標であって、カテゴリ固有のファセットキーを重要視する指標である。
【0107】
図10は、カテゴリ重要度(signif(f, C))を表形式で表したカテゴリ重要度表21b2の一例を示す図である。
【0108】
例えば、スコア算出部23bは、下記式(5)に基づきカテゴリ重要度(signif(f, C))を算出してよい。
signif(f, C) = weight(f, C) * uniq(f) (5)
【0109】
上記式(5)において、“weight(f, C)”は、クラス内のファセットの出現頻度の重みであり、例えば、下記式(6)により表されてよい。
weight(f, C) = n(f, C) / Nd (6)
【0110】
ここで、上記式(6)において、“Nd”はクラス“C”内の“f”の総数であり、“n(f, C)”はクラス“C”内のファセットの数である。
【0111】
また、上記式(5)において、“uniq(f)”は、ファセットごとのユニーク度を示す指標である。ユニーク度とは、ファセットが複数のクラスのうちの特定のクラスに偏って(例えば特定のクラスのみに)出現するか否かを示す指標である。例えば、“uniq(f)”は、下記式(7)により表されてよい。
uniq(f) = NC / uniq_count(f) (7)
【0112】
ここで、上記式(7)において、“NC”はKG3内の総クラス数であり、“uniq_count(f)”はKG3内の“f”が含まれるクラス数である。このように、ユニーク度は、KG3内のクラス総数をファセットが出現するクラス数で除算することで得られてよい。
【0113】
このように、カテゴリ重要度(signif(f, C))は、KG3における特定のカテゴリに関連付けられた複数のファセットのそれぞれがKG3において関連付けられているカテゴリの個数に基づく第1指標の一例である。
【0114】
スコア算出部23bは、頻度表21a及び上記式(5)を用いて、ファセットキーごとのカテゴリ重要度(signif(f, C))を算出してよい。なお、
図10に示すように、スコア算出部23bは、カテゴリ重要度(signif(f, C))を“0”~“1”の範囲に正規化する。
【0115】
そして、スコア算出部23bは、上述した指標値21b1に基づくスコア(org_score)と、上記式(5)に基づくスコア(signif)とを用いて、ファセットスコア(new_score)を算出する。
【0116】
例えば、スコア算出部23bは、下記式(8)に例示するように、スコア(org_score)と、スコア(signif)との重み付き線形和を算出し、ファセットスコア(new_score)を取得してよい。
new_score(f) = ω * org_score(f) + (1 - ω) * signif(f) (8)
【0117】
上記式(8)において、“ω”は重みである。一実施形態においては、非限定的な例として、“ω=0.5”であるものとする。“ω=0.5”の場合、上記式(8)は、下記式(8’)のように表される。
new_score(f) = 0.5 * org_score(f) + 0.5 * signif(f) (8’)
【0118】
ここで、上記式(8)又は(8’)において、“org_score(f)”は、下記式(9)により表されてよい。なお、下記式(9)において、α+β+γ+θ=1であるものとする。
【数2】
【0119】
図11は、ファセットスコア(new_score)を表形式で表したファセットスコア表21b3の一例を示す図である。例えば、スコア算出部23bは、指標値21b1、カテゴリ重要度表21b2、及び、ファセットスコア表21b3のうちの少なくともファセットスコア表21b3の情報を、スコアDB21bとしてメモリ部21に格納してよい。
【0120】
図11に例示するように、クラス(カテゴリ)内でのファセットの重要度を加味したスコア(new_score)により、例えば、“政治家”については、“名前”や“生年月日”よりも“所属政党”の方が高いスコアとなり、“プロ野球選手”については、“名前”や“生年月日”よりも“守備位置”の方が高いスコアとなる。
【0121】
すなわち、
図3に示す項目一覧領域210において、“政治家”についての“所属政党”や、“プロ野球選手”についての“守備位置”等のファセットキーが優先度の高い項目として表示されることになる。従って、サーバ2は、カテゴリに関連付けられたファセットの集合から、よりスコアの高いファセットキーにより絞り込まれた適切な複数のファセットを出力することができる。
【0122】
このように、スコア算出部23bは、複数のファセットのそれぞれについてのuniq(f)を含むカテゴリ重要度を算出し、算出したカテゴリ重要度を含む情報(例えばスコアDB21b)をメモリ部21に格納する算出部の一例である。
【0123】
図4の説明に戻り、意味解釈処理部24は、ファセット検索が行なわれる際に、カテゴリ探索画面100(
図3参照)において選択されたクラス(カテゴリ)から、或るファセットが所属するクラスまでのKG3上のパスを、スコアに反映する。このように、意味解釈処理部24は、ファセット検索が行なわれる際に、選択されたクラスに応じて、オントロジーを考慮した優先度の高いファセットが抽出されるように、スコアを変更する。
【0124】
例えば、意味解釈処理部24は、下記式(10)に示すように、オントロジーにおけるグラフ上の距離を考慮したスコア(ont_score)を算出してよい。スコア(ont_score)は、KG3における選択されたクラスと複数のファセットのそれぞれとの距離に基づく第2指標の一例である。
ont_score(f, C) = 1 / (distance(C, Cf) + 1) (10)
【0125】
ここで、上記式(10)において、“f”はスコアを計算する対象のファセットであり、“C”は項目一覧領域210で選択されたクラス(カテゴリ)であり、“Cf”は、項目一覧領域210に表示される候補のファセットが所属するクラスである。
【0126】
また、上記式(10)において、“distance(C, Cf)”は、選択されたクラスと選択されたファセットが所属するクラスとの間のスキーマ(オントロジー)上、すなわちグラフ上の距離である。グラフ上の距離とは、クラス(カテゴリ)の階層間の距離を意味してよい。例えば、意味解釈処理部24は、階層的な各クラスを、木構造における各ノードと捉え、既知の手法により、ノード間の距離をグラフ上の距離として算出してよい。なお、“C = Cf”である場合、“distance(C, Cf) = 0”となる。
【0127】
図12は、RDFスキーマにおける、クラス及びファセットキーを表すグラフの一例を示す図である。以下、
図12の例において、選択されたカテゴリが“BaseballPlayer”(破線参照)である場合の、スコア(ont_score)の算出例を説明する。
【0128】
一例として、スコア算出対象のファセットが“名前(人)”である場合、スコア(ont_score)は、下記式(11)に示すように算出される。
ont_score(名前(人), BaseballPlayer)
= 1 / (distance(BaseballPlayer, Person) + 1)
= 1 / (1 + 1) = 0.5 (11)
【0129】
他の例として、スコア算出対象のファセットが“本社所在地”である場合、スコア(ont_score)は、下記式(12)に示すように算出される。
ont_score(本社所在地, BaseballPlayer)
= 1 / (distance(BaseballPlayer, Company) + 1)
= 1 / (3 + 1) = 0.25 (12)
【0130】
他の例として、スコア算出対象のファセットが“所属政党”である場合、スコア(ont_score)は、下記式(13)に示すように算出される。
ont_score(所属政党, BaseballPlayer)
= 1 / (distance(BaseballPlayer, Politician) + 1)
= 1 / (2 + 1) = 0.33 (13)
【0131】
このように、意味解釈処理部24は、オントロジーにおける関連度が大きいファセットキー、一例として、グラフ上の距離が近い(distance(C, Cf)が小さい)ファセットキーほど、優先度が高くなるようなスコア(ont_score)を算出する。また、意味解釈処理部24は、オントロジーにおける関連度が小さいファセットキー、一例として、グラフ上の距離が遠い(distance(C, Cf)が大きい)ファセットキーほど、優先度が低くなるようなスコア(ont_score)を算出する。換言すれば、スコア(ont_score)は、KG3の知識構造を考慮したファセットキーの意味解釈が反映されたスコアであるといえる。
【0132】
なお、意味解釈処理部24は、KG3上のファセットキーと選択されたクラスとの間のグラフ上の距離(distance(C, Cf))に加えて、又は、代えて、意味上の距離を考慮した指標に基づきスコア(ont_score)を算出してもよい。
【0133】
意味上の距離を考慮した指標(意味上の距離指標)としては、例えば、ファセットキーとなる述語(P;Predicate)の語彙が、標準語彙であるか否かに応じて定まる指標が挙げられる。標準語彙であるか否かの判断は、例えば、標準語彙を蓄積するDBに、ファセットキーとなる語彙が登録されているか否かの判断により行なわれてよい。標準語彙を蓄積するDBとしては、例えば、“prefix.cc”や、“Linked Open Vocabularies”等のDBが挙げられる。
【0134】
例えば、意味解釈処理部24は、下記式(14)に示すように、オントロジーにおける意味上の距離を考慮したスコア(ont_score)を算出してよい。
ont_score(f, C) = (1 / (distance(C, Cf) + 1)) * std_vocab(f) (14)
【0135】
ここで、上記式(14)において、(1 / (distance(C, C
f) + 1))の項は、上記式(10)と同様であり、“std_vocab(f)”は、下記式(15)に示すように、標準語彙であれば“1.0”、標準語彙ではなければ“0.5”、等となる関数であってよい。
【数3】
【0136】
例えば、意味解釈処理部24は、上記式(14)に示すように、上記式(10)に示すグラフ上の距離を考慮したスコアに対して、上記式(15)に示す意味上の距離指標を乗算することで、グラフ上及び意味上の距離の双方を考慮したスコアを算出してよい。
【0137】
或いは、意味解釈処理部24は、上記式(14)に代えて、上記式(15)に示す“std_vocab(f)”を、意味上の距離のみを考慮したスコア(ont_score)として採用してもよい。
【0138】
図13は、RDFスキーマにおける、クラス及びファセットキーを表すグラフの一例を示す図である。以下、
図13の例において、選択されたカテゴリが“BaseballPlayer”(破線参照)である場合の、意味上の距離指標を考慮したスコア(ont_score)の算出例を説明する。
【0139】
なお、
図13において、例えば、“名前(人)”は、“foat:name”で表される標準語彙であり、“名前(会社)”は、“skos:prefLabel”で表される標準語彙であり、“本社所在地”は、“14a-ont:本社所在地”で表される独自語彙(非標準語彙)であるものとする。
【0140】
一例として、スコア算出対象のファセットが、“名前(会社)”である場合、スコア(ont_score)は、下記式(16)に示すように算出される。
ont_score(名前(会社), BaseballPlayer)
= (1 / (distance(BaseballPlayer, Company) + 1)) * std_vocab(名前(会社))
= (1 / (3 + 1)) * 0.5 = 0.125 (16)
【0141】
他の例として、スコア算出対象のファセットが“本社所在地”である場合、スコア(ont_score)は、下記式(17)に示すように算出される。
ont_score(本社所在地, BaseballPlayer)
= (1 / (distance(BaseballPlayer, Company) + 1)) * std_vocab(本社所在地)
= (1 / (3 + 1)) * 1.0 = 0.25 (17)
【0142】
このように、意味解釈処理部24は、オントロジーにおける関連度が大きいファセットキー、一例として、意味上の距離(std_vocab)が近い(大きい)ファセットキーほど、優先度が高くなるようなスコア(ont_score)を算出する。また、意味解釈処理部24は、オントロジーにおける関連度が小さいファセットキー、一例として、意味上の距離(std_vocab)が遠い(小さい)ファセットキーほど、優先度が低くなるようなスコア(ont_score)を算出する。
【0143】
これにより、
図3に示す項目一覧領域210において、選択されたカテゴリとの間で、グラフ上の距離及び意味上の距離の一方又は双方が近いファセットキーが、優先度の高い項目として表示されることになる。従って、サーバ2は、カテゴリに関連付けられたファセットの集合から、よりスコアの高いファセットキーにより絞り込まれた適切な複数のファセットを出力することができる。
【0144】
図4の説明に戻り、ランキング調整部25は、ファセット検索において、最終的なファセットスコア(final_score)を算出する。
【0145】
例えば、ファセット検索では、上述した検索制御部22により、カテゴリ探索画面100において、エンティティに付与されているクラスの階層を辿りながら、目的のカテゴリが選択され、ファセット検索画面200が表示される。
【0146】
このとき、選択されたカテゴリに基づいて、意味解釈処理部24により、知識構造を利用したファセット重要度としてのスコア(ont_score)が計算される。
【0147】
ランキング調整部25は、事前フェーズにおいてスコア算出部23bが算出したファセットスコア(new_score)と、意味解釈処理部24が算出したスコア(out_score)とに基づいて、最終的なスコア(final_score)を算出してよい。例えば、ランキング調整部25は、下記式(18)に基づいて、ファセットスコア(new_score)と、スコア(out_score)とを乗算することで、スコア(final_score)を算出してよい。
final_score(f, C) = new_score(f, C) * ont_score(f, C) (18)
【0148】
図14は、上記式(9)に示すスコア(org_score)、上記式(8)に示すファセットスコア(new_score)、上記式(10)又は式(14)に示すスコア(ont_score)、並びに、上記式(18)に示す最終的なスコア(final_score)を表形式で例示する図である。
【0149】
図14の例では、カテゴリ探索画面100において、カテゴリとして“プロ野球選手”が選択された場合を示す。この場合、最終的なスコア(final_score)は、ファセットスコア(new_score)及びスコア(ont_score)のいずれのスコアも高い値となっている“守備位置”がもっと高い“0.562”となっている。この“守備位置”は、上記式(9)に示すスコア(org_score)では、“名前”や“生年月日”よりも低いスコアである。
【0150】
このように、カテゴリ固有のファセットキーを重要視する指標と、KG3の知識構造を考慮したファセットキーの意味解釈とにより、“プロ野球選手”のカテゴリに対する“守備位置”のように、適切なファセットキーのスコアが高くなるように算出される。
【0151】
例えば、ランキング調整部25は、算出した最終的なスコア(final_score)に基づいて、項目一覧領域210に表示するファセットキーを当該スコアが高い順にソートし、ソートしたファセットキーの情報を検索制御部22に出力してよい。
【0152】
ランキング調整部25により算出される最終的なスコア(final_score)は、複数のファセットの優先度の一例である。
【0153】
これにより、検索制御部22は、
図15に例示するように、項目一覧領域210に、上記式(9)に示すスコア(org_score)ベースのリスト211に代えて、最終的なスコア(final_score)ベースのファセットキーのリスト212を表示することができる。当該リスト212は、ランキング調整部25により算出される優先度に応じて、複数のファセットを順に並べたリストの一例である。
【0154】
図16及び
図17は、“org_score”、“new_score”及び“final_score”のそれぞれをベースとしてファセットキーをソートした場合のMRR(Mean Reciprocal Rank)の比較例を示す図である。MRRは、検索結果の品質の評価指標であり、“0”~“1”の範囲の値となる。MRRが“1”に近いほど、項目一覧領域210に表示された上位のファセットキーが検索(選択)されることを意味し、ユーザの知識に即したファセット検索が実現されていることを意味する。
【0155】
図16では、上記式(9)に示すスコア(org_score)ベースのファセット順位及びMRRと、上記式(8)に示すファセットスコア(new_score)ベースのファセット順位及びMRRとの比較例を示す。
図16の例では、ファセット対象のデータ数“11401”を持つデータセットから、“野球選手”のカテゴリを選択し、“打席”、“ドラフト順位”、“初出場”の各ファセットキーを選択する場合を想定する。
【0156】
図16に例示するように、“org_score”ベースでは、ファセット順位はいずれのファセットキーも100位前後であり、MRRは“0.0094”である。これに対し、“new_score”ベースでは、ファセット順位は3位~6位であり、MRRは“0.2333”となっている。
【0157】
このように、“new_score”ベースでは、“野球選手”固有のファセットである“打席”、“ドラフト順位”、“初出場”のファセット順位及びMRRが、“org_score”ベースよりも高くなっている。
【0158】
図17では、上記式(8)に示すファセットスコア(new_score)ベースのファセット順位及びMRRと、上記式(18)に示す最終的なスコア(final_score)ベースのファセット順位及びMRRとの比較例を示す。
図17の例では、ファセット対象のデータ数“11401”を持つデータセットから、“野球選手”のカテゴリを選択し、“名前”、“出生地”、“生年月日”の各ファセットキーを選択する場合を想定する。
【0159】
図17に例示するように、“new_score”ベースでは、ファセット順位は31位~66位であり、MRRは“0.2333”である。これに対し、“final_score”ベースでは、ファセット順位は141位~211位であり、MRRは“0.0057”となっている。
【0160】
このように、“名前”、“出生地”、“生年月日”は、いずれも“野球選手(BaseballPlayer)”固有のファセットではなく、“人(Person)”に関するファセットである。このため、オントロジーにおける関連度(ont_score)が考慮された“final_score”ベースでは、“new_score”ベースよりもファセット順位及びMRRが低くなっている。
【0161】
以上のように、一実施形態に係るサーバ2は、KG3において、ファセットに付与されているカテゴリ(クラス)で先に絞り込み、その後、カテゴリ内のファセットで絞り込みを行なうことにより、効率的にファセット検索を実現する。
【0162】
このとき、サーバ2は、クラス固有のファセットを重要視する指標を導入するとともに、ファセット間の関係をファセット検索対象のKG3から取り出し、当該関係を利用することにより、或る特定のクラスに所属するエンティティの集合を効率的に取り出す。
【0163】
これにより、カテゴリに関連付けられたファセットの集合から適切な複数のファセットを出力することができ、ユーザの目的のデータに辿り着くまでの手番を減少させることができる。
【0164】
〔1-3〕動作例
以下、上述したファセット検索システム1の動作例を、フローチャートを参照しながら説明する。
【0165】
〔1-3-1〕DB作成処理
図18は、一実施形態に係るDB作成処理の動作例を説明するフローチャートである。
【0166】
図18に例示するように、サーバ2において、統計処理部23の頻度表作成部23aは、頻度表21aを作成する(ステップS1)。また、統計処理部23のスコア算出部23bは、頻度表21aに基づきスコアDB21bを作成し(ステップS2)、処理が終了する。
【0167】
図19は、
図18のステップS1の頻度表作成処理の動作例を説明するフローチャートである。
図19に例示するように、頻度表作成部23aは、頻度表作成処理として、KG3内の全クラスC
allを取得する(ステップS11)。
【0168】
頻度表作成部23aは、全クラスCallの要素であるクラスCを全て処理したか否かを判定する(ステップS12)。全て処理した場合(ステップS12でYES)、処理が終了する。
【0169】
全て処理していない場合(ステップS12でNO)、頻度表作成部23aは、クラスがCであるインスタンスが持つ述語(Predicate)ごとのインスタンス数、換言すれば、ファセットキー頻度を算出し(ステップS13)、P頻度表21a2に格納する。
【0170】
そして、頻度表作成部23aは、クラスがCであるインスタンスが持つ述語ごとに目的語(Object)の数、換言すれば、ファセットキー・ファセット値頻度を算出し(ステップS14)、PO頻度表21a3に格納して、処理がステップS12に移行する。
【0171】
図20は、
図18のステップS2のスコアDB作成処理の動作例を説明するフローチャートである。
図20に例示するように、スコア算出部23bは、スコアDB作成処理として、頻度表21a及びKG3に基づき、ファセット頻度、ファセット均衡度、キー濃度、及び、キー単調性をそれぞれ算出する(ステップS21~S24)。
【0172】
スコア算出部23bは、KG3におけるクラス及びファセットの情報に基づき、カテゴリ重要度を算出する(ステップS25)。
【0173】
そして、スコア算出部23bは、ファセット頻度、ファセット均衡度、キー濃度、及び、キー単調性を利用して、上記式(9)に示すスコアorg_scoreを算出する(ステップS26)。
【0174】
また、スコア算出部23bは、ステップS26で算出したスコアorg_scoreと、ステップS25で算出したカテゴリ重要度とを利用し、ファセットスコアnew_scoreを算出して、スコアDB21bに格納し(ステップS27)、処理が終了する。
【0175】
〔1-3-2〕ファセット検索処理
図21は、一実施形態に係るファセット検索処理の動作例を説明するフローチャートである。
【0176】
図21に例示するように、サーバ2において、検索制御部22は、端末4に対して提示するカテゴリ探索画面100上で、端末4によるクラスCの選択を受け付ける(ステップS31)。
【0177】
意味解釈処理部24は、クラスCに所属するインスタンスが保有する述語(Predicate)を取得する(ステップS32)。
【0178】
意味解釈処理部24は、述語(Predicate)の要素であるファセットキーfを全て処理したか否かを判定する(ステップS33)。全て処理していない場合(ステップS33でNO)、意味解釈処理部24は、スコアDB21bからクラスCにおけるファセットキーfのスコアnew_scoreを取得する(ステップS34)。
【0179】
意味解釈処理部24は、クラスCとファセットキーfとを利用し、KG3内のオントロジーに基づき、距離スコアont_scoreを算出し(ステップS35)、処理がステップS33に移行する。
【0180】
ステップS33において、全て処理した場合(ステップS33でYES)、意味解釈処理部24は、new_score及びont_scoreを用いて、ファセットキーfのスコアfinal_scoreを算出する(ステップS36)。
【0181】
ランキング調整部25は、final_scoreに基づきソートしたファセットキーを検索制御部22に通知する。検索制御部22は、ソートされたファセットキーを、カテゴリ探索画面100からの遷移先であるファセット検索画面200の項目一覧領域210に表示し(ステップS37)、項目一覧領域210の表示に係るファセット検索処理が終了する。
【0182】
〔2〕その他
上述した一実施形態に係る技術は、以下のように変形、変更して実施することができる。
【0183】
例えば、
図4に示すサーバ2が備える検索制御部22、統計処理部23(頻度表作成部23a及びスコア算出部23b)、意味解釈処理部24及びランキング調整部25は、任意の組み合わせで併合してもよく、それぞれ分割してもよい。
【0184】
また、
図1に示すサーバ2は、複数の装置がネットワークを介して互いに連携することにより、各処理機能を実現する構成であってもよい。一例として、検索制御部22はWebサーバ、統計処理部23、意味解釈処理部24及びランキング調整部25はアプリケーションサーバ、メモリ部21はDBサーバ、等であってもよい。この場合、Webサーバ、アプリケーションサーバ及びDBサーバが、ネットワークを介して互いに連携することにより、サーバ2としての各処理機能を実現してもよい。
【0185】
さらに、一実施形態において、ランキング調整部25に入力される最終的なスコア(final_score)は、上記式(8)及び式(18)に示すように、signifが考慮されたnew_scoreと、ont_scoreとを乗算したスコアであるものとして説明した。最終的なスコア(final_score)は、これに限定されるものではなく、少なくとも、signif及びont_scoreの一方が考慮されればよい。
【0186】
例えば、最終的なスコア(final_score)は、下記式(19)に示すように、ont_scoreを考慮せず、new_scoreと一致してもよい。
【0187】
final_score(f, C) = new_score(f, C) (19)
【0188】
或いは、最終的なスコア(final_score)は、下記式(20)に示すように、signifを考慮しないスコアであってもよい。なお、一実施形態では、下記式(20)において、重みωは、例示的に“0.5”であるものとする。
【0189】
final_score(f, C) = ω * org_score(f, C) + (1 - ω) * ont_score(f, C) (20)
【0190】
上記式(19)又は式(20)に示す最終的なスコア(final_score)によっても、
図16又は
図17に例示するような一実施形態と同様の効果を奏することができる。
【0191】
〔3〕付記
以上の実施形態に関し、さらに以下の付記を開示する。
【0192】
(付記1)
特定のカテゴリの指定を受け付け、
ナレッジグラフにおける前記特定のカテゴリに関連付けられた複数のファセットのそれぞれが前記ナレッジグラフにおいて関連付けられているカテゴリの個数に基づく第1指標と、前記ナレッジグラフにおける前記特定のカテゴリと前記複数のファセットのそれぞれとの距離に基づく第2指標と、のうち少なくとも一方に基づいて算出される前記複数のファセットの優先度に応じて、前記複数のファセットを順に並べて出力する、
処理をコンピュータに実行させる、検索プログラム。
【0193】
(付記2)
前記第1指標は、前記ナレッジグラフにおける全てのカテゴリの個数を、前記複数のファセットのそれぞれが前記ナレッジグラフにおいて関連付けられているカテゴリの個数でそれぞれ除算した結果を含む、
付記1に記載の検索プログラム。
【0194】
(付記3)
前記複数のファセットのそれぞれについての前記結果を含む前記第1指標を算出し、
算出した前記第1指標を含む情報を記憶領域に格納する、
処理を前記コンピュータに実行させる、付記2に記載の検索プログラム。
【0195】
(付記4)
前記第2指標は、前記ナレッジグラフにおける前記特定のカテゴリの階層と、前記複数のファセットのそれぞれが前記ナレッジグラフにおいて関連付けられているカテゴリの階層のそれぞれとの距離に基づく、
付記1~付記3のいずれか1項に記載の検索プログラム。
【0196】
(付記5)
前記第2指標は、前記複数のファセットのそれぞれが標準語彙であるか否かに基づく、
付記1~付記4のいずれか1項に記載の検索プログラム。
【0197】
(付記6)
前記出力する処理は、前記特定のカテゴリの指定を受け付けた画面からの遷移先である検索画面であって、前記特定のカテゴリに関連付けられた前記複数のファセットを対象とした検索を行なうための前記検索画面に、前記複数のファセットの優先度に応じて順に並べた前記複数のファセットを表示する処理を含む、
付記1~付記5のいずれか1項に記載の検索プログラム。
【0198】
(付記7)
特定のカテゴリの指定を受け付け、
ナレッジグラフにおける前記特定のカテゴリに関連付けられた複数のファセットのそれぞれが前記ナレッジグラフにおいて関連付けられているカテゴリの個数に基づく第1指標と、前記ナレッジグラフにおける前記特定のカテゴリと前記複数のファセットのそれぞれとの距離に基づく第2指標と、のうち少なくとも一方に基づいて算出される前記複数のファセットの優先度に応じて、前記複数のファセットを順に並べて出力する、
処理をコンピュータが実行する、検索方法。
【0199】
(付記8)
前記第1指標は、前記ナレッジグラフにおける全てのカテゴリの個数を、前記複数のファセットのそれぞれが前記ナレッジグラフにおいて関連付けられているカテゴリの個数でそれぞれ除算した結果を含む、
付記7に記載の検索方法。
【0200】
(付記9)
前記複数のファセットのそれぞれについての前記結果を含む前記第1指標を算出し、
算出した前記第1指標を含む情報を記憶領域に格納する、
処理を前記コンピュータが実行する、付記8に記載の検索方法。
【0201】
(付記10)
前記第2指標は、前記ナレッジグラフにおける前記特定のカテゴリの階層と、前記複数のファセットのそれぞれが前記ナレッジグラフにおいて関連付けられているカテゴリの階層のそれぞれとの距離に基づく、
付記7~付記9のいずれか1項に記載の検索方法。
【0202】
(付記11)
前記第2指標は、前記複数のファセットのそれぞれが標準語彙であるか否かに基づく、
付記7~付記10のいずれか1項に記載の検索方法。
【0203】
(付記12)
前記出力する処理は、前記特定のカテゴリの指定を受け付けた画面からの遷移先である検索画面であって、前記特定のカテゴリに関連付けられた前記複数のファセットを対象とした検索を行なうための前記検索画面に、前記複数のファセットの優先度に応じて順に並べた前記複数のファセットを表示する処理を含む、
付記7~付記11のいずれか1項に記載の検索方法。
【0204】
(付記13)
特定のカテゴリの指定を受け付ける受付部と、
ナレッジグラフにおける前記特定のカテゴリに関連付けられた複数のファセットのそれぞれが前記ナレッジグラフにおいて関連付けられているカテゴリの個数に基づく第1指標と、前記ナレッジグラフにおける前記特定のカテゴリと前記複数のファセットのそれぞれとの距離に基づく第2指標と、のうち少なくとも一方に基づいて算出される前記複数のファセットの優先度に応じて、前記複数のファセットを順に並べて出力する出力部と、
を備える、検索装置。
【0205】
(付記14)
前記第1指標は、前記ナレッジグラフにおける全てのカテゴリの個数を、前記複数のファセットのそれぞれが前記ナレッジグラフにおいて関連付けられているカテゴリの個数でそれぞれ除算した結果を含む、
付記13に記載の検索装置。
【0206】
(付記15)
前記複数のファセットのそれぞれについての前記結果を含む前記第1指標を算出し、
算出した前記第1指標を含む情報を記憶領域に格納する、
算出部を備える、付記14に記載の検索装置。
【0207】
(付記16)
前記第2指標は、前記ナレッジグラフにおける前記特定のカテゴリの階層と、前記複数のファセットのそれぞれが前記ナレッジグラフにおいて関連付けられているカテゴリの階層のそれぞれとの距離に基づく、
付記13~付記15のいずれか1項に記載の検索装置。
【0208】
(付記17)
前記第2指標は、前記複数のファセットのそれぞれが標準語彙であるか否かに基づく、
付記13~付記16のいずれか1項に記載の検索装置。
【0209】
(付記18)
前記出力部は、前記特定のカテゴリの指定を受け付けた画面からの遷移先である検索画面であって、前記特定のカテゴリに関連付けられた前記複数のファセットを対象とした検索を行なうための前記検索画面に、前記複数のファセットの優先度に応じて順に並べた前記複数のファセットを表示する、
付記13~付記17のいずれか1項に記載の検索装置。
【符号の説明】
【0210】
1 ファセット検索システム
10 コンピュータ
2 サーバ
21 メモリ部
21a 頻度表
21b スコアDB
22 検索制御部
23 統計処理部
23a 頻度表作成部
23b スコア算出部
24 意味解釈処理部
25 ランキング調整部
3 KG(ナレッジグラフ)
4 端末