検索クックブック

  1. テキスト制約
  2. 言語の制約
  3. スキーマの制約
  4. メタスキーマの制約
  5. スコアリングとランキング
  6. その他の制約

このページでは、検索サービスを使用して検索クエリを制約するさまざまな方法のレシピのリストを示します。

テキストの制約

Freebase エンティティのテキスト データは、まず名前とエイリアスから取得され、次にキーとその他のテキスト プロパティから取得されます。最後に、言語固有の Wikipedia トピックと照合された場合は、Wikipedia アンカー データから取得されます。

テキスト制約は言語固有です。現在、18 の言語がサポートされています。英語は最も広範囲にカバーされており、デフォルトの言語です。

現在サポートされている言語コードの一覧については、以下をご覧ください。

https://www.googleapis.com/freebase/v1/search?help=langs&indent=true

テキスト制約は query パラメータで指定します。言語は lang パラメータで指定します。次に例を示します。

query: "gore"
query: "gore" lang: "fr"
query: "gore" lang: "de"

インデックス登録中に、テキスト データは言語固有の方法で正規化されます。たとえば、英語では、テキストが小文字に変換され、アクセント記号が削除されます。クエリ時には、クエリテキストに対して同じ言語固有の正規化が行われます。次に例を示します。

query: "beyoncé"
query: "beyonce"

テキスト制約のマッチング方法は、いくつかのパラメータで制御されます。prefixed パラメータを true に設定すると、名前とエイリアスのみで接頭辞一致がトリガーされます(他のテキスト データでは正規表現一致)。次に例を示します。

query: "bob dy" prefixed: true

stemmedtrue に設定すると、名前とエイリアスのみでステミング一致がトリガーされます(他のテキスト データでは通常の完全一致がトリガーされます)。語幹一致は、複数形やその他の文法形式によって生じた言語固有の接尾辞の違いを貼り付けるために使用できます。次に例を示します。

query: "potatos" stemmed: true

クエリ テキストを二重引用符("")で囲むと、フレーズ一致がトリガーされます。クエリ内のテキスト トークンは、一致するエンティティのテキスト データ内で隣接して出現する必要があります。次に例を示します。

query: "\"to be or not to be\""

namealiastype の各パラメータを使用して、名前に一致する単語が含まれている人物と人物エンティティを照合します。次に例を示します。

filter: "(all name:gore alias:gore type:/people/person)"

同様に、次の例では、一致する alias を持つ /people/person エンティティのみが一致し、name は一致しません。

filter: "(all (not name:gore) alias:gore type:/people/person)"

照合するテキスト フィールドを指定するだけでなく、オペランドとテキスト フィールドの間に次のいずれかの修飾子を挿入して、照合方法を指定することもできます。

  • {word}: 文字列内の単語が、ドキュメント内の対応するテキスト フィールドの単語と一致することを要求します。(デフォルト)
  • {phrase}: ドキュメントの対応するテキスト フィールドで、単語が同じ順序で連続して出現することを要求します。
  • {full}: {phrase} と同様ですが、語句がテキスト フィールド内だけでなく、テキスト フィールド全体と完全に一致することも必要です。つまり、完全一致です。

たとえば、Marc Broussard の「Home」という曲を探すには、次のようなフィルタを使用します。

filter: "(all type:/music/single name{full}:home /music/track/artist:"Marc Broussard")"

言語の制約

テキスト制約で説明したように、lang パラメータは、テキストをクエリ トークンに変換するために使用する言語正規化ルールを指定するために使用されます。クエリの言語は、結果のランキングにも影響します。freebase-search は、対応する言語の Wikipedia から言語固有の関連性シグナルを取得します。

現在、英語(en)、スペイン語(es)、フランス語(fr)、ドイツ語(de)、イタリア語(it)、ポルトガル語(pt)、中国語(zh)、日本語(ja)、韓国語(ko)の 9 言語に対応しています。英語は最も広範囲にカバーされており、デフォルトの言語です。

複数の言語で同時に検索する

lang パラメータは、言語コードのカンマ区切りリストを受け入れます。このリストを指定すると、指定されたすべての言語で検索が実行され、結果はリストの最初の言語でランク付けされ、エンティティの名前があるリストの最初の言語で表示されます。

次に例を示します。

次の例では、ドイツ語とフランス語でドイツ語の単語「Sonnenblume」を検索します。結果をランク付けしてフランス語で表示します。

query: "Sonnenblume" lang: "fr,de"

次の例は、言語が韓国語の映画を英語で検索し、韓国語の名前を表示します。クエリの英語部分は、expressed_by 制約の「korean」という単語です。

filter: "(all expressed_by:korean type:/film/film)" lang: "ko,en"

スキーマの制約

スキーマ制約は、type パラメータと domain パラメータで指定します。type は、エンティティの /type/object/type プロパティ値に対応します。

たとえば、次の例では、検索対象をユーザーのみに制限しています。

query: "gore" type: "/people/person"

domain は、エンティティのすべての /type/object/type 値の /type/type/domain 値に対応します。

たとえば、次の例では、検索を /film ドメインのフランス語のエンティティのみに制限しています。

query: "babar" domain: "/film" lang: "fr"

個々の Freebase プロパティを使用してクエリをフィルタすることもできます。たとえば、次の検索では、カナダ出身のユーザーに検索を制限しています。

 query "john" filter: "(all type:/people/person /people/person/nationality:"Canada")"

メタスキーマの制約

メタスキーマ制約は、セマンティック述語でエンティティをフィルタします。これらの述語は、類似した意味関係を記述する Freebase プロパティのコレクションから構築された、より高レベルのコンセプトです。

メタスキーマ制約は、filter パラメータ オペランドとエンティティ名または MID 制約を組み合わせて指定します。

サポートされている Metaschema フィルタ オペランド

Freebase Search では、次の Metaschema フィルタ オペランドがサポートされています。各例を試すには、表内のリンクをクリックするか、Freebase Search Example App を使用します。

オペランド名
abstraction 「フェットチーネ料理」試してみる
filter: "(all abstraction:fettuccine)"
abstraction_of 「Western Bulwark 鉄道車両のクラス」試してみる
filter: "(all abstraction_of:"Western Bulwark")"
adaptation 「Works La Traviata is an adaptation of」試してみる
filter: "(all adaptation_of:"La Traviata")"
administered_by 「カンヌ映画祭の受賞作品」試してみる
filter: "(all type:awards administered_by:cannes)"
administers 「Synapse 新聞は誰が運営しているのですか?」試してみる)。
filter: "(all administers:synapse)"
appears_in "characters in the Magic Flute"試してみる。
filter: "(all appears_in:"magic flute")"
「魔笛の登場人物」試してみる
filter: "(all appears_in:"Die Zauberflöte")" lang: "de"
broader_than 「Airbus 319 が属する航空機のライン」試してみる
filter: "(all broader_than:"Airbus A319")"
category 「フランス人女優」試してみる
filter: "(all category:female origin:france notable:actor)"
「french actresses」(バリエーション)試す
filter: "(all category:female origin:france practitioner_of:actor)"
「カリフォルニアの火山またはフランスの火山」試してみる
filter: "(all category:volcano (any part_of:california part_of:france))"

「パスタ料理」試してみる

filter: "(all category:pasta)"
center 「サンフランシスコにハブがある航空会社」試してみる
filter: "(all type:airline center:"San Francisco")"
「サンフランシスコとアトランタにハブがある航空会社」(試してみる
filter: "(all type:airline center:"San Francisco" center:atlanta)"
「サンフランシスコを拠点とする新聞」試してみる
filter: "(all type:/book/newspaper center:/m/0d6lp)"
center_for 「サンフランシスコ フォーティナイナーズのスポーツ施設」試してみる
filter: "(all center_for:"san francisco 49ers")"
certification 「ヴィム・ヴェンダース監督の R 指定映画」(試してみる
filter: "(all type:/film/film contributor:wenders certification:r)"
character 「パパゲーノがキャラクターとして登場する作品」試してみる
filter: "(all character:papageno)"
child 「ビル・クリントンの両親」試してみる
filter: "(all child:"bill clinton")"
contributed_to 「ブレードランナーの制作に貢献した人物を教えて」試してみる)。
filter: "(all contributed_to:"Blade Runner")"
contributor 「スティーヴン スピルバーグの映画」試してみる
filter: "(all type:/film/film contributor:"Steven Spielberg")"
貢献者の名前ではなく MID を使用して、「スティーヴン スピルバーグの映画」を検索します。(試してみる)。
filter: "(all type:/film/film contributor:/m/06pj8)"
「ハリソン フォード出演の映画」試してみる
filter: "(all type:/film/film contributor:"Harrison Ford")"
created 「誰が『誰がために鐘は鳴る』を書いたの?」試してみる
filter: "(all created:"for whom the bell tolls")"
created_by 「Google のソフトウェア」試してみる
filter: "(all notable:software created_by:google)"
discovered 「ラジウムの発見者」試してみる
filter: "(all discovered:radium)"
discovered_by 「キュリーの発見」試してみる
filter: "(all discovered_by:curie)"
distributed_by 「NPR の番組」試す
filter: "(all type:show distributed_by:npr)"
exhibited 「down by law はどこで上映されましたか?」試してみる
filter: "(all exhibited:"down by law")"
exhibited_at 「2010 年のカンヌ国際映画祭で上映されたノミネート作品」試してみる
filter: "(all type:"nominated work" exhibited_at:"2010 Cannes Film festival")"
expressed_by 「エスペラント語の書籍」試してみる
filter: "(all type:book expressed_by:esperanto)"
fictional_link 「ミッキーマウスに関連する架空のキャラクター」試してみる
filter: "(all type:/fictional_universe/fictional_character fiction_link:"mickey mouse")"
genre 「ゴシック様式の教会」試してみる
filter: "(all category:cathedral genre:gothic)"
「ヴィオレ ル デュクによるゴシック様式の大聖堂」試してみる
filter: "(all category:cathedral genre:gothic created_by:viollet)"
identifies 「サウスウエスト航空の識別情報は何ですか?」試してみる)。
filter: "(all identifies:"Southwest Airlines")"
leader 「Mitch Kapor companies」試してみる
filter: "(all type:company leader:kapor)"
leader_of 「パリ市長」(試してみる
filter: "(all title:mayor leader_of:paris)"
made_of 「wax paintings」試してみる
filter: "(all type:painting made_of:wax)"
means_of_demise 「処刑された政治家」試してみる
filter: "(all type:politician means_of_demise:"capital punishment")"
member_of 「アフリカの君主」試してみる
filter: "(all type:monarch member_of:africa)"
「民主党の政治家と著名な俳優」(試してみる
filter: "(all type:politician member_of:democratic notable:actor)"
narrower_than 「v8 エンジンの例」試してみる
filter: "(all type:engine narrower_than:"v8 engine")"
occurs_in 「ルーマニアで話されている言語」試してみる
filter: "(all type:language occurs_in:romania)"
origin 「オーストリアの共和党知事」試してみる
filter: "(all title:governor member_of:republican origin:austria)"
owner 「フォードが所有するメーカー」試してみる
filter: "(all type:make owner:ford)"
owns 「マーベリックスのオーナーは誰ですか?」試してみる)。
filter: "(all owns:mavericks)"
parent 「アル・ゴアの子供たち」試してみる
filter: "(all parent:"al gore")"
「Lisp プログラミング言語の子孫」試してみる
filter: "(all type:/computer/programming_language parent:lisp)"
part_of 「スウェーデンの湖」試してみる
filter: "(all type:lake part_of:sweden)"
「2008 年夏季オリンピックの競技」試してみる
filter: "(all type:competition part_of:"2008 summer olympics")"
participant 「Bowie concerts」(試してみる
filter: "(all participant:bowie type:concert)" 
participated_in 「オリンピックに出場したオーストリアの著名なスキー選手」試してみる
filter: "(all notable:skier member_of:austria participated_in:olympics)"'
peer_of 「アル・ゴアの同僚の政治家」(試してみる
filter: "(all notable:politician peer_of:gore)"
permits_use_of 「ディーゼル エンジン」試してみる
filter: "(all permits_use_of:diesel)"
portrayed 「ジョン レノンを演じた俳優」試してみる
filter: "(all notable:actor portrayed:"john lennon")"
portrayed_by 「ハリソン フォードが演じたキャラクター」試してみる
filter: "(all portrayed_by:"Harrison Ford")"
practitioner_of 「女性のアフリカ系アメリカ人の弁護士」試してみる
filter: "(all category:female category:"african american" practitioner_of:lawyer)"
preceeding 「ロード オブ ザ リング / 二つの塔の続編」試してみる
filter: "(all type:/film/film preceeding:"The Lord of the Rings, the two Towers")"
produced_by 「Apple コンピュータ」試してみる
filter: "(all type:computers produced_by:apple)"
publication 「which book has /m/0clw238 as first edition ?」試してみる
filter: "(all publication:/m/0clw238)"
publication_of 「ラ・トラヴィアータのリリース」試してみる
filter: "(all publication_of:"La Traviata")"
service_area 「カリフォルニアの放送局」試してみる
filter: "(all type:broadcaster service_area:california)"
status 「後退するスイスの氷河」試してみる
filter: "(all type:glacier status:retreating part_of:switzerland)"
subclass_of 「水着の種類」試してみる
filter: "(all subclass_of:swimwear)"
subject 「ホロコーストに関する映画」試してみる
filter: "(all type:film subject:holocaust)"
「数学に関する書籍」試してみる
filter: "(all type:book subject:mathematics)"
subsequent 「ロード オブ ザ リング / 二つの塔の前編」試す
filter: "(all type:/film/film subsequent:"The Lord of the Rings, the two Towers")"
succeeded_by 「フォード B3 プラットフォームの後継となった自動車プラットフォームは何ですか?」試してみる
filter: "(all succeeded_by:"ford b3 platform")"
succeeds 「スチュアート朝の後に王位を継いだのは誰ですか?」(試してみる
filter: "(all succeeds:stuart)"
superclass_of 「冠動脈性心疾患が属するクラス」試してみる
filter: "(all superclass_of:"coronary heart disease")"
title 「Google のエンジニア」試してみる
filter: "(all title:engineer member_of:google)"
tookplace_at 「マレンゴで行われた戦い」試してみる
filter: "(all type:battles tookplace_at:marengo)"
use_permitted_by 「iPhone でサポートされているファイル形式」試してみる
filter: "(all type:"file format" use_permitted_by:iphone)"

スコアリングとランキング

Freebase エンティティには、Freebase と Wikipedia のインバウンド リンクとアウトバウンド リンクの数に基づいてインデックス登録時に計算される固有の関連性スコア(ランキング)があります。人気の高い Freebase エンティティの一部には、Google が算出した人気度スコアもあります。デフォルトでは、クエリ時に両方のスコアが結合されます。

テキスト制約が存在する場合、テキスト一致スコアは検索インデックスから返されたヒット数から計算され、関連性スコアと組み合わされます。

FreebaseSearch の結果は常に最終スコアで並べ替えられ、スコアの高い順に表示されます。

スコアリング パラメータを使用すると、最終スコアの計算に使用する関連性スコア コンポーネントを制御できます。

freebase: Freebase の関連性スコアのみを使用します。

query: "beyoncé" scoring: freebase

entity: 関連性スコアの両方を使用します。欠落している Google スコアは 1.0 に置き換えられます。これがデフォルトです。

query: "beyoncé" scoring: entity

schema: 型、プロパティ、ドメインなどのスキーマ エンティティを検索するときに使用します。スキーマ エンティティのリンク数は、異なる方法で計算されます。

query: "performance" scoring: schema

その他の制約

エンティティは、with パラメータまたは without パラメータを使用してインデックス タグでフィルタできます。エンティティはインデックス登録時にタグ付けされます。各タグは、検索時に実行するにはコストが高すぎる 1 つ以上の Freebase クエリに対応しています。

commons は、スキーマ検索を Freebase Commons スキーマのみを返すように制限するために使用できるタグです。たとえば、「color」という単語に一致する Freebase Commons のタイプ

query: "color" type: "/type/type" with: "commons"

gg は、Google の人気度スコアがあるエンティティとないエンティティに検索を制限するために使用できるタグです。

query: "1923" type: "/people/person" with: "gg"
query: "1923" type: "/people/person" without: "gg"

without パラメータは、フィルタ式で否定された with と同等です。

query: "color" limit: 5 type: "/type/type" without: "commons"
query: "color" limit: 5 type: "/type/type" filter: "(not with:commons)"