(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-12
(45)【発行日】2024-11-20
(54)【発明の名称】情報処理装置、制御方法、プログラム
(51)【国際特許分類】
G06F 16/31 20190101AFI20241113BHJP
G06F 16/338 20190101ALI20241113BHJP
【FI】
G06F16/31
G06F16/338
(21)【出願番号】P 2023005549
(22)【出願日】2023-01-18
【審査請求日】2023-04-10
(73)【特許権者】
【識別番号】390002761
【氏名又は名称】キヤノンマーケティングジャパン株式会社
(73)【特許権者】
【識別番号】592135203
【氏名又は名称】キヤノンITソリューションズ株式会社
(74)【代理人】
【識別番号】100189751
【氏名又は名称】木村 友輔
(74)【代理人】
【識別番号】100227857
【氏名又は名称】中山 圭
(72)【発明者】
【氏名】進 義治
(72)【発明者】
【氏名】蔵満 琢麻
【審査官】松尾 真人
(56)【参考文献】
【文献】米国特許出願公開第2015/0039605(US,A1)
【文献】特開2009-288870(JP,A)
【文献】米国特許出願公開第2008/0263023(US,A1)
【文献】国際公開第2022/123386(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
(57)【特許請求の範囲】
【請求項1】
文書に含まれるセクションを検索する情報処理装置であって、
検索条件である複数の文字列に対し、前記複数の文字列を含む文書
と、当該文書に含まれる前記複数の文字列の少なくとも1つを含むセクション
とを対応付けて出力するよう制御する出力制御手段、
を備
え、
前記出力制御手段は、前記文書の検索に係るスコアと前記文書に含まれる前記セクションの検索に係るスコアとに基づいて、前記文書を出力する順序を決定することを特徴とする情報処理装置。
【請求項2】
前記出力制御手段は、前記文書に前記複数の文字列の少なくとも1つを含むセクションが複数含まれる場合、当該複数のセクションのうち、検索に係るスコアが最大となるセクションの当該スコアに基づいて、前記文書を出力する順序を決定することを特徴とする請求項1に記載の情報処理装置。
【請求項3】
検索条件となる文字列と文書とを対応付ける第1索引情報と、検索条件となる文字列とセクションとを対応付ける第2索引情報とを管理する管理手段を備え、
前記出力制御手段は、前記第1索引情報により特定される文書に含まれるセクションのうち、前記第2索引情報により特定されるセクションを出力するよう制御することを特徴とする請求項1に記載の情報処理装置。
【請求項4】
前記出力制御手段は、前記複数の文字列を含む文書に含まれる前記複数の文字列の少なくとも1つを含むセクションを識別表示すべく出力するよう制御することを特徴とする請求項1に記載の情報処理装置。
【請求項5】
前記出力制御手段は、前記複数の文字列を含む文書に含まれる前記複数の文字列の少なくとも1つを含む全てのセクションを出力するよう制御することを特徴とする請求項1に記載の情報処理装置。
【請求項6】
文書に含まれるセクションを検索する情報処理装置の制御方法であって、
情報処理装置の出力制御手段が、検索条件である複数の文字列に対し、前記複数の文字列を含む文書
と、当該文書に含まれる前記複数の文字列の少なくとも1つを含むセクション
とを対応付けて出力するよう制御する
出力制御ステップ、
を備
え、
前記出力制御ステップでは、前記文書の検索に係るスコアと前記文書に含まれる前記セクションの検索に係るスコアとに基づいて、前記文書を出力する順序を決定することを特徴とする情報処理装置の制御方法。
【請求項7】
文書に含まれるセクションを検索する情報処理装置において実行可能なプログラムであって、
前記情報処理装置を、
検索条件である複数の文字列に対し、前記複数の文字列を含む文書
と、当該文書に含まれる前記複数の文字列の少なくとも1つを含むセクション
とを対応付けて出力するよう制御する出力制御手段、
として機能させるためのプログラム
であって、
前記出力制御手段は、前記文書の検索に係るスコアと前記文書に含まれる前記セクションの検索に係るスコアとに基づいて、前記文書を出力する順序を決定することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
文書データを検索する技術に関する。
【背景技術】
【0002】
文書検索において、一つの文書を複数の文書セクションに分割したうえで文書セクションごとの検索を行う課題が存在する。特に、検索の目的が特定の文書セクションを見つけることである場合に文書セクションごとの検索が行われる。
【0003】
例えば会議を文字起こしした文書を検索するにあたり、一回の会議の文字起こし全体を一文書とみなし、個々の発言の文字起こしを文書セクションとみなすことができる。ここで、発言とは一人の話者による連続した発話であり、話者交代や息継ぎなどの適当なマーカーにより会議全体を複数の発言に分割することができる。一回の会議が雑多な話題を含んでいる場合に、会議全体を検索するよりも発言単位で検索したい場面があり、その際に発言単位での検索が有用である。
【0004】
非特許文献1に示された国会審議映像検索システムは、国会審議における発言の全文検索を行い、検索結果として得られた発言からその発言周辺の審議映像を閲覧することが可能なシステムである。検索は発言単位で行われ、検索結果の一覧においては会議名や発言者が表示される。
【0005】
特許文献1は、Webページのように1文書に多様な話題が含まれる文書を、複数の文章ブロックに分割し、検索クエリを全て含む文章ブロックを検索する方法について示している。さらに、検索結果として出力する文章ブロックの順序を決定する際に、文章ブロックの言語的特徴を用いている。
【0006】
特許文献2は、文書全体の検索インデックスによって文書を検索した後、検索された各文書について、文内部分構造に基づいて検索語を含む文内部分文を抽出して検索結果として表示する方法について示している。文内部分文の抽出処理は検索時の処理として行われ、検索結果として得られた文書を動的に解析している。さらに、特許文献2では文内部分構造を用いて検索語の文脈を簡潔に表示する方法も示している。
【先行技術文献】
【特許文献】
【0007】
【文献】特開2010-257155号公報
【文献】特開2003-242175号公報
【非特許文献】
【0008】
【文献】増山幹高,"国会審議映像検索システムの機能開発状況",GRIPS Discussion Paper 20-11,GRIPS Policy Research Center,2020年12月
【発明の開示】
【発明が解決しようとする課題】
【0009】
特許文献1のように複数の検索キーワードを含む検索クエリが与えられた時に検索キーワードを全て含む文書セクションを検索する方法では、文書内のいくつかの文書セクションを総合的に見れば検索者の意図に合致している文書でも、文書セクション単位では検索キーワードを全て含むものが存在しない場合には検索にヒットしないという課題がある。特に、文書セクションが短い単位で区切られている場合に、ヒットしない事象が発生しやすい。
【0010】
一方で、文書セクション中に検索キーワードのいずれか1個でも含めば検索にヒットする方法では、検索者の意図に合致しない文書セクションがヒットしてしまうという課題もある。
【0011】
特許文献2のように、文書全体の検索インデックスによって文書を検索した後に文書を動的に解析して文書セクションを絞り込む方法では、文書セクションのインデックスを用いた効率的な検索ができないという課題がある。また、文書セクション単位でのキーワードの逆文書頻度(IDF)のような、文書セクション集合全体に関わる統計量を、検索結果の順序づけに利用できないという課題もある。
【0012】
以上のような課題より、本発明は、文書データの検索において検索者にとって望ましい検索結果が得られる仕組みを提供することを目的とする。
【課題を解決するための手段】
【0013】
本発明は、文書に含まれるセクションを検索する情報処理装置であって、検索条件である複数の文字列に対し、前記複数の文字列を含む文書と、当該文書に含まれる前記複数の文字列の少なくとも1つを含むセクションとを対応付けて出力するよう制御する出力制御手段、を備え、前記出力制御手段は、前記文書の検索に係るスコアと前記文書に含まれる前記セクションの検索に係るスコアとに基づいて、前記文書を出力する順序を決定することを特徴とする。
【発明の効果】
【0014】
本発明によれば、検索者にとって望ましい検索結果が得られる仕組みを提供することが可能となる。
【図面の簡単な説明】
【0015】
【
図1】本発明の実施形態における、文書検索システムのシステム構成の一例を示す図である。
【
図2】本発明の実施形態における、文書検索システムのハードウェア構成の一例を示す図である。
【
図3】本発明の実施形態における、文書DBに保存される文書データ(A)、文書用転置インデックス(B)、文書頻度テーブル(C)の一例を示す図である。
【
図4】本発明の実施形態における、文書セクションDBに保存される文書セクションデータ(A)、文書セクション用転置インデックス(B)、文書セクション頻度テーブル(C)の一例を示す図である。
【
図5】本発明の実施形態における、検索処理の一例を示すフローチャートである。
【
図6】本発明の実施形態における、検索画面の一例を示す図である。
【発明を実施するための形態】
【0016】
以下、図面を参照して、本発明の実施形態を詳細に説明する。
【0017】
図1は、本発明の実施形態における文書検索システム100のシステム構成の一例を示す図である。
【0018】
文書検索システム100はネットワークを介してクライアント端末と接続され、クライアント端末から検索クエリとして文字列を受け取り、文書検索処理を実施したうえでクライアント端末へ文書および文書セクションの検索結果を返却する。文書セクションとは文書を構成する文書の部分単位であり、例えば、節、章、段落、文、発言である。 文書検索システム100は、文書検索処理を実施する文書検索部110と、
図3のような文書データを保存する文書DB120と、
図4のような文書セクションデータを保存する文書セクションDB130からなる。
【0019】
文書検索部110と文書DB120および文書セクションDB130は、ネットワークまたはバスによって接続される。文書検索部110が実施する文書検索処理において、これらのDBに保存されている文書および文書セクションデータを取得することが可能である。
【0020】
図2は、本発明の実施形態におけるクライアント端末、文書検索システム100のハードウェア構成の一例を示すブロック図である。
【0021】
図2に示すように、情報処理装置は、システムバス204を介してCPU(Central Processing Unit)201、ROM(Read Only Memory)202、RAM(Random Access Memory)203、入力コントローラ205、ビデオコントローラ206、メモリコントローラ207、よび通信I/Fコントローラ208が接続される。
【0022】
CPU201は、システムバス204に接続される各デバイスやコントローラを統括的に制御する。
【0023】
ROM202あるいは外部メモリ211は、CPU201が実行する制御プログラムであるBIOS(Basic Input/Output System)やOS(Operating System)や、本情報処理方法を実現するためのコンピュータ読み取り実行可能なプログラムおよび必要な各種データ(データテーブルを含む)を保持している。
【0024】
RAM203は、CPU201の主メモリ、ワークエリア等として機能する。CPU201は、処理の実行に際して必要なプログラム等をROM202あるいは外部メモリ211からRAM203にロードし、ロードしたプログラムを実行することで各種動作を実現する。
【0025】
入力コントローラ205は、キーボード209や不図示のマウス等のポインティングデバイス等の入力装置からの入力を制御する。入力装置がタッチパネルの場合、ユーザがタッチパネルに表示されたアイコンやカーソルやボタンに合わせて押下(指等でタッチ)することにより、各種の指示を行うことができることとする。
【0026】
また、タッチパネルは、マルチタッチスクリーンなどの、複数の指でタッチされた位置を検出することが可能なタッチパネルであってもよい。
【0027】
ビデオコントローラ206は、ディスプレイ210などの外部出力装置への表示を制御する。ディスプレイは本体と一体になったノート型パソコンのディスプレイも含まれるものとする。なお、外部出力装置はディスプレイに限ったものははく、例えばプロジェクタであってもよい。また、前述のタッチ操作を受け付け可能な装置については、入力装置も提供する。
【0028】
なおビデオコントローラ206は、表示制御を行うためのビデオメモリ(VRAM)を制御することが可能で、ビデオメモリ領域としてRAM203の一部を利用することもできるし、別途専用のビデオメモリを設けることも可能である。
【0029】
メモリコントローラ207は、外部メモリ211へのアクセスを制御する。外部メモリとしては、ブートプログラム、各種アプリケーション、フォントデータ、ユーザファイル、編集ファイル、および各種データ等を記憶する外部記憶装置(ハードディスク)、フレキシブルディスク(FD)、或いはPCMCIAカードスロットにアダプタを介して接続されるコンパクトフラッシュ(登録商標)メモリ等を利用可能である。
【0030】
通信I/Fコントローラ208は、ネットワークを介して外部機器と接続・通信するものであり、ネットワークでの通信制御処理を実行する。例えば、TCP/IPを用いた通信やISDNなどの電話回線、および携帯電話の3G回線を用いた通信が可能である。
【0031】
尚、CPU201は、例えばRAM203内の表示情報用領域へアウトラインフォントの展開(ラスタライズ)処理を実行することにより、ディスプレイ210上での表示を可能としている。また、CPU201は、ディスプレイ210上の不図示のマウスカーソル等でのユーザ指示を可能とする。
【0032】
図3は文書DB120に保存されるデータを示している。文書DB120には、文書に関して
図3(A)の文書データ、
図3(B)の文書用転置インデックス、
図3(C)の文書頻度テーブルという3種類のデータが保存される。文書用転置インデックスと文書頻度テーブルは、全文検索を効率的に実施するために文書データから導出された補助的なデータである。
【0033】
図3(A)の文書データは、一エントリに文書IDと原文とメタデータを項目として含む。文書IDは文書を一意に特定するための識別子である。原文は文字列データであり、全文検索の対象となる文書のテキスト部分である。メタデータは文書に関する文書ID・原文以外の付属情報である。例えば会議の文字起こし文書の場合、会議のタイトルの文字列データや、会議の開催日の日付データを含むことができる。メタデータとして保存されるものはそれに限るものではなく、文書の特徴に応じて多様なデータを保存することができる。
【0034】
図3(B)の文書用転置インデックスは、検索キーワードをキーとして、文書内出現位置のリストを値とした構造を持つデータである。文書内出現位置は文書ID、当該文書における検索キーワードの原文内出現回数、当該文書における検索キーワードの原文内出現位置のリストからなる。原文内出現位置は、原文の文字列先頭から数えて検索キーワードと一致する部分文字列が開始するまでの文字数である。原文内に検索キーワードが複数回出現する場合、各出現について原文内出現位置を保存する。文書と検索キーワードのペアごとに、この文書内出現位置が1件ずつ登録される。ただし、文書原文内に当該検索キーワードが出現しない場合には登録しない。
図3(B)に示した文書用転置インデックスのデータ構造は一例にすぎず、検索キーワードから文書内出現位置を参照できるものであれば他のデータ構造にする方法でもよい。
【0035】
図3(C)の文書頻度テーブルは、検索キーワードと文書頻度を項目として含む。文書頻度は、当該検索キーワードが原文内に出現する文書数である。1文書に同じ検索キーワードが複数回出現しても、1文書につき1回までしか文書数にカウントにしない。さらに、<全文書数>という特殊なエントリも存在し、これは文書DB120に保存されている文書データの件数を保存する。
【0036】
なお、文書用転置インデックスと文書頻度テーブルの作成処理は、文書データのエントリを文書DBに登録した際に実施される。文書データの原文に対して、一般的な形態素解析検索を実行することで検索キーワードとその出現位置を特定し、文書用転置インデックスと文書頻度テーブルを更新する。
【0037】
図4は文書セクションDB130に保存されるデータを示している。文書セクションDB130には、文書セクションに関して
図4(A)の文書セクションデータ、
図4(B)の文書セクション用転置インデックス、
図4(C)の文書セクション頻度テーブルという3種類のデータが保存される。
【0038】
文書セクションデータのエントリは、文書DB120に含まれる文書データのエントリを分割して作成されたものであり、文書データのエントリと文書セクションデータのエントリの関係は一対多である。文書を文書セクションに分割する方法の例としては、HTMLやXMLの文書をタグごとに分割する方法がある。他にも、原文の句読点の情報によって文に区切り、文ごとに分割する方法もある。または、会議音声を音声認識システムにより文字起こしして文書を作成した場合であり、音声認識システムが発言ごとに分割した文字起こしを生成する場合、その発言の単位を分割単位として利用することもできる。または、人手により分割を明示的に与えることもできる。なお、分割方法はこれらの方法に限るものではない。
【0039】
文書セクション用転置インデックスと文書セクション頻度テーブルは、全文検索を効率的に実施するために文書セクションデータから導出された補助的なデータである。
【0040】
図4(A)の文書セクションデータは、一エントリに元文書IDと文書セクションIDと原文とメタデータを項目として含む。元文書IDは、分割元である文書の文書IDを登録する。文書セクションIDは文書セクションを一意に特定する識別子である。原文は文字列データであり、分割元である文書データの原文の一部であるようにする。文書セクションを全文検索する際は原文を対象とする。メタデータは文書セクションに固有の付属情報であり、文書データを分割する際に値が作成される。例えば会議音声の文字起こしである文書を発言単位に分割した文書セクションの場合、発言を行った発言者の文字列データや発言の会議内時刻の時刻データを含むことができる。メタデータとして保存されるものはそれに限るものではなく、文書セクションの特徴に応じて多様なデータを保存することができる。
【0041】
図4(B)の文書セクション用転置インデックスは、検索キーワードをキーとして、文書セクション内出現位置のリストを値とした構造を持つデータである。
図3(B)とほぼ同一の構造をしているが、ここでは原文の単位としてセクションごとの原文とし、文書IDの代わりに文書セクションIDを用いる。
【0042】
図4(C)の文書セクション頻度テーブルは検索キーワードと文書セクション頻度を項目として含む。
図3(C)とほぼ同一の構造であるが、ここでは原文の単位としてセクションごとの原文とし、検索キーワードが出現するセクション数をカウントする。また、<全文書セクション数>という特殊なエントリも存在し、これは文書セクションDB130に保存されている文書セクションデータの件数を保存する。
【0043】
以降のフローチャートの説明では、
図3に示される文書DBの内容および
図4に示される文書セクションDBの内容も参照する。
図3と
図4の例は、IT企業における開発案件レビュー会議の文字起こしを模したものである。会議1回分の文字起こしテキストを文書DB120の1エントリとし、文字起こしを発言単位に分割したものを文書セクションDB130の1エントリとして保存していると想定する。
【0044】
図5のフローチャートを用いて、本発明の実施形態における文書検索部110が実行する文書検索処理について説明する。この文書検索処理は、文書検索システム100がクライアント端末から検索クエリを受け取った時に実行される。例として検索クエリに「見積もり 根拠」という文字列を受け取った場合で説明する。
【0045】
ステップS501では、受け取った検索クエリの文字列から、1個以上の検索キーワードを抽出する。検索クエリに対して一般的な形態素解析処理を行い、単語に分割したうえで、それぞれの単語を検索キーワードとする。なお、検索クエリの文字列が空白区切りの文字列である場合、形態素解析および単語抽出は空白で区切られた部分文字列ごとに実施して、部分文字列ごとに得た検索キーワードの和集合をとることで全体の検索キーワードとする。
【0046】
例えば検索クエリの文字列が「見積もり 根拠」である場合、空白で区切られた部分文字列の「見積もり」と「根拠」に対して形態素解析を行う。「見積もり」を形態素解析すると「見積もり」そのものが検索キーワードとして抽出される。同様に「根拠」を形態素解析すると「根拠」そのものが検索キーワードとして抽出される。最終的には「見積もり」と「根拠」という2つの検索キーワードが得られる。なお、形態素解析処理で用いる辞書や形態素解析処理の処理方法によっては、この例と異なる結果になる場合もある。
【0047】
ステップS502では、文書DB120から検索クエリに含まれる全ての検索キーワードをAND検索しながら、検索結果表示順序のため文書に関するスコア計算を行う。
【0048】
この処理において効率的に対象の文書を検索するには、
図3(B)にある文書用転置インデックスを利用することが有用である。検索キーワードをキーとして文書用転置インデックスのレコードを取得し、その検索キーワードが現れる文書IDのリストを得る処理を、全ての検索キーワードに対して実施する。全ての検索キーワードから文書IDが得られた文書が、検索結果となる文書である。
【0049】
スコア計算には、
図3(B)にある文書用転置インデックスと
図3(C)にある文書頻度テーブルを利用する。例えばスコアとしてTF-IDFを用いる場合について考える。本文献ではTFとして出現回数に対して逓減する関数を利用する。文書dにおいて検索キーワードwの出現回数をfreq(d,w)としたとき、TFを以下のように計算できる。
【0050】
TF(d,w)=sqrt(freq(d,w))
ただし、sqrtは引数の値の平方根を取る関数である。このTFの値は文書用転置インデックスを用いて効率的に計算できる。
【0051】
検索キーワードの出現回数に対して逓減する関数を用いることで、複数の検索キーワードが与えられたときに1個の検索キーワードが2回出現するよりも2個の検索キーワードが1回ずつ出現する方がスコアが高くなりやすい。すなわち、複数の検索キーワードが均等に現れる文書や文書セクションの検索順位を上げることができ、検索者にとって望ましい検索結果になる。
【0052】
本実施例ではIDFとしてスムージング付きのものを用いる。スムージング付きのIDFは、検索キーワードをw、検索キーワードwの文書頻度をDF(w)、全文書数をDとしたとき、以下のように計算できる。
【0053】
IDF(w)=log((D+1)/(DF(w)+1))+1
このIDFは文書頻度テーブルを用いて効率的に計算できる。
【0054】
TF(d,w)とIDF(w)を掛け算することで、検索キーワードwにおける文書dのTF-IDF値を計算できる。複数の検索キーワードが与えられる場合、各検索キーワードのTF-IDFの和を取る。以上の処理により得られた値を文書のスコアとする。
【0055】
なお、ここでのスコア計算方法は一例であり、TF-IDFの計算方法としては異なる方法を用いることもできる。さらに、TF-IDF以外の方法でもよく、例えば公知の方法であるBM25をスコア計算に用いることも可能である。
【0056】
文書の検索処理とスコア計算処理は、文書用転置インデックスを1回走査しながら同時並行で行うことが可能である。
【0057】
検索結果の各文書について文書IDとメタデータを保持して、以降のステップで利用する。ただしメタデータは、検索結果表示に必要な一部の値だけ保持することもできる。
【0058】
例えば、検索キーワードとして「見積もり」と「根拠」があるとき
図3のような文書DB120から検索することを考える。
図3の文書DB120には文書IDが1、2、3の3文書を含む。全文書は100件あるが、この3文書以外は
図3(A)と
図3(B)においては省略しており、以降の説明もこの3文書のみで行う。
【0059】
この文書DBから文書用転置インデックスにより「見積もり」と「根拠」の2単語をどちらも含む文書のAND検索を行う。文書ID1、2は文書用転置インデックスにおいて「見積もり」と「根拠」のエントリの両方に出現するので、検索結果の文書として含まれる。一方文書ID3は「根拠」のエントリにしか現れないので、検索結果からは除外される。
【0060】
文書セクション単位の検索結果に基づいて文書を検索する方法と比較すると、文書セクション単位のOR検索では文書IDが1、2、3の文書が全て検索結果になり、文書セクション単位のAND検索では「見積もり」と「根拠」をどちらも含む発言が存在する文書セクションIDが1_18の文書セクションを含む文書IDが1の文書のみが検索結果となる。本方式ではそのどちらとも異なり、文書単位でのAND検索と同じ結果となる。文書セクション単位でのOR検索は検索者の意図に合致しない文書セクションがヒットしてしまい、文書セクション単位のAND検索は検索者の意図に合致する文書であっても全ての検索キーワードを含む文書セクションがなければ検索にヒットしないという課題がある。本方式では、バランスをとって文書単位のAND検索によりまず全ての検索キーワードを含む文書に絞り込む。後のステップで、文書セクション単位のOR検索により1個以上の検索キーワードを含む文書セクションの取得と、スコア調整を行う。
【0061】
文書用転置インデックスから文書を検索しながら、同時にスコア計算を進めることができる。今回はスコア計算方法としてTF-IDFを用いて説明する。
例えば、文書用転置インデックスにおける検索キーワード「見積もり」のエントリ内から、文書内出現位置における文書IDが1である部分を見ると、TF(文書IDが1の文書,見積もり)=sqrt(3)という値が得られる。
【0062】
また、検索キーワード「見積もり」と「根拠」について、文書頻度テーブルから文書頻度としてそれぞれ98と99が得られる。さらに<全文書数>の値として100が得られる。その結果、IDF(見積もり)=log(101/99)+1,IDF(根拠)=log(101/100)+1のようにIDFが計算できる。
【0063】
最終的に、文書IDが1の文書のスコアはTF(文書IDが1の文書,見積もり)×IDF(見積もり)+TF(文書IDが1の文書,根拠)×IDF(根拠)のようにして求められる。文書IDが2の文書についても同様である。
【0064】
図6のように検索結果を表示させたい場合、文書IDが1と文書IDが2の文書について、文書DB120からメタデータとしてタイトルも取得して保持しておく。開催日は取得してもしなくてもよい。
【0065】
この例で見るように、文書単位では全ての検索キーワードを含む文書に絞り込まれる。これによって、検索者の意図に合致する文書のみを検索結果にすることが可能である。
【0066】
ただし、各文書が内部に多様な話題を含むときに文書集合全体で文書頻度テーブルを作成した場合、検索キーワードごとのIDFの値の差が小さくなる場合がある。上記の例では「見積もり」のIDFがlog(101/99)+1、「根拠」のIDFがlog(101/100)+1となるが、その差は非常に小さい。IDFの目的は珍しい検索キーワードのスコア計算における重みを大きくすることだが、検索キーワードごとのIDFの差が小さければその目的を果たすことができないという課題がある。以降のステップでこの課題の対策を行う。
【0067】
ステップS503では、検索キーワードおよびステップS502により検索結果として得られた文書の文書ID集合を用いて、文書セクションDB130から元文書IDによる絞り込みと全検索キーワードのOR検索により文書セクションの検索を行い、かつ文書セクションについて検索結果表示順序のためスコア計算を行う。この検索処理とスコア計算処理を効率的に実施するには、
図4(B)にある文書セクション用転置インデックスと、
図4(C)にあるセクション文書頻度テーブルを利用することが有用である。
【0068】
検索キーワードをキーとして文書セクション用転置インデックスのレコードを取得し、その検索キーワードが現れる文書セクションIDのリストを得る処理を、全ての検索キーワードに対して実施する。今回はOR検索であるため、1つ以上の検索キーワードから文書セクションIDが得られた文書セクションを検索結果とする。ただし、文書セクションの元文書IDがステップS502により得られた文書ID集合に含まれない場合は、その文書セクションは検索結果から除外する。
【0069】
スコア計算はステップS502で説明したのと同様、TF-IDFやBM25により実施する。また、BM25の変種であるBM15を用いて計算することもできる。BM15はBM25から文書セクションの単語数や文字数の影響を除いた計算方法である。文書セクションが人間に理解しやすい適切な粒度で分割されている場合、BM15用いて文書セクションの単語数や文字数の影響を除いた方が適切な検索結果になることが期待される。
【0070】
さらに、検索結果において表示するために、文書セクション原文における検索キーワード周辺文字列を表すスニペットの抽出も、検索処理と同時に行う。スニペットはスニペット文字列、検索キーワード開始位置と終了位置のリストからなるデータである。スニペット文字列は検索セクション原文の部分文字列であり、スニペット文字列内に検索キーワードを1回以上含む。
【0071】
スニペット抽出の処理には、文書セクション用転置インデックスに含まれる検索キーワードの原文内出現位置を利用する。例えば原文内出現位置と原文を参照して、検索キーワードおよび検索キーワードの前後Nsn文字からなる文字列をスニペット文字列として抽出できる。検索キーワード開始位置と終了位置も原文内出現位置から求められる。ここでNsnは文書検索システム100に設定された設定値である。
【0072】
あるいは、単純に文書セクション原文全体をスニペット文字列としてもよい。この場合も検索キーワード開始位置と終了位置は文書セクション用転置インデックスにおける原文内出現位置から求められる。
【0073】
検索結果の各文書セクションについて、文書セクションIDと元文書IDとスニペットとメタデータを保持して、以降のステップで利用する。ただしメタデータは、検索結果表示に必要な一部の値だけ保持することもできる。
【0074】
例として、
図4のような文書セクションDB130から検索する場合を用いて説明する。
図4の文書セクションDB130には、元文書IDが1であり文書セクションIDが1_1から1_80までである80文書セクションと、元文書IDが2であり文書セクションIDが2_1から2_120までである120文書セクションを含む。それ以外の元文書IDについては省略している。
【0075】
この文書セクションDBから文書セクション用転置インデックスを用いて、元文書IDが1または2であり、かつ「見積もり」と「根拠」の少なくとも一方を含む文書セクションの検索を行う。ただし、文書セクション用転置インデックス単体では元文書IDが1または2であることを判別できないため、元文書IDで絞り込むために文書セクションデータも参照する。
【0076】
そうすると検索結果として、文書セクションIDが1_7、1_18、1_19、2_10、2_14の文書セクションが得られる。
【0077】
文書セクション用転置インデックスから文書セクションを検索しながら、同時にスコア計算を進めることができる。今回もスコア計算方法としてTF-IDFを用いて説明する。
【0078】
例えば文書セクション用転置インデックスにおける検索キーワード「見積もり」のエントリから、文書セクション内出現位置における文書セクションIDが1_18である部分を見ると、TF(文書セクションIDが1_18の文書セクション,見積もり)=sqrt(1)という値が得られる。同様に、TF(文書セクションIDが1_7の文書セクション,見積もり)=sqrt(2)などの値も得られる。
【0079】
また、検索キーワード「見積もり」と「根拠」について、文書セクション頻度テーブルから文書セクション頻度としてそれぞれ200、1000という値が得られる。さらに<全文書セクション数>の値として10000が得られる。
【0080】
その結果、IDF(見積もり)=log(10001/201)+1、IDF(根拠)=log(10001/1001)+1のようにIDFが計算できる。
【0081】
最終的に、文書セクションIDが1_18の文書セクションのスコアはTF(文書セクションIDが1_18の文書セクション,見積もり)×IDF(見積もり)+TF(文書セクションIDが1_18の文書セクション,根拠)×IDF(根拠)のように求められる。他の文書セクションについても同様である。
【0082】
最終的に、文書セクションIDが1_7、1_18、1_19の文書セクションを比較すると(1_18のスコア)>(1_7のスコア)>(1_19のスコア)となり、検索結果における表示順がこのスコア順になる。
【0083】
一方、文書セクションIDが2_10と2_14の文書セクションを比較すると、どちらも片方の検索キーワードが1回出現するだけなので、TFの値には差がない。一方でIDF(見積もり)>IDF(根拠)であるため、「見積もり」が出現する2_14のスコアが、「根拠」が出現する2_10のスコアより大きくなる。よって最終的な検索結果では表示順序が2_14、2_10の順になる。
【0084】
スニペット抽出の例も説明する。発言は検索者にとって一望しやすい程度に区切られていると考えて、スニペット文字列としては各文書セクションの原文そのものを用いることにする。文書セクションIDが1_18の文書セクションについて、「この見積もりの根拠はなんでしょうか。」というスニペット文字列が抽出される。さらに、文書セクション用転置インデックスと検索キーワードの文字数から「見積もり」はスニペット文字列中の3文字目から6文字目であることが分かる。同様に「根拠」はスニペット文字列中の8文字目から9文字目であることが分かる。このスニペット文字列と検索キーワードの開始位置および終了位置を文書セクションIDが1_18の文書セクションのスニペットとする。
【0085】
図6のように検索結果を表示させたい場合、検索結果の各文書セクションについて、文書セクションDB130からメタデータとして発言者および会議内時刻も取得して保持しておく。
【0086】
この例で見るように、文書セクション単位では複数の検索キーワードのうち1つ以上を含む文書セクションが検索結果となる。これによって、文書IDが2の文書のように全ての検索キーワードを含む文書セクションが存在しない文書も、検索結果として何らかの文書セクションを表示することが可能となる。
【0087】
さらに、文書単位では検索キーワードのIDFに差が出にくいとしても、文書セクション単位ではIDFに差が出やすく、特に珍しい検索キーワードを含む文書セクションを上位に表示することができる。上記の例ではIDF(見積もり)=log(10001/201)+1、IDF(根拠)=log(10001/1001)+1のようになり、文書単位ではIDFの差がなかった2つの検索キーワードが、文書セクション単位にすることで差が現れてスコアに反映される。
【0088】
ステップS504では、ステップS503により検索結果として得られた各文書セクションについて、ステップS502の検索結果である文書リストの中から元文書を決定する。具体的には文書セクションの元文書IDと文書の文書IDが一致すれば、当該文書は当該文書セクションの元文書である。そして、元文書ごとに複数の文書セクションを子要素としたデータを構築する。例えば、検索結果のうち文書IDが1の文書について、検索結果である文書セクションIDが1_7、1_18、1_19の文書セクションを子要素とする。また、文書IDが2の文書について、検索結果である文書セクションIDが2_10、2_14の文書セクションを子要素とする。
【0089】
ステップS505では、各文書において、文書のスコア(S502)に子要素の文書セクションのスコア(S503)を加算することで文書のスコアを更新する。
【0090】
ただし、1つの文書に子要素の文書セクションが複数ありスコアが複数計算されている場合、文書セクションのスコアの最大値をとったうえで文書のスコアと加算することが望ましい。全ての文書セクションのスコアを加算する方法もあるが、その方法は文書セクション数が多い文書のスコアが過剰に大きくなってしまうという問題がある。
【0091】
これまでの例を用いると、文書IDが1の文書のスコアを(ステップS502において計算された文書IDが1の文書のスコア)+(ステップS503において計算された文書セクションIDが1_7、1_18、1_19の文書セクションのスコアの最大値)として再計算する。文書IDが2の文書についても同様である。以降の例では(文書IDが1の文書のスコア)>(文書IDが2の文書のスコア)になったとして説明する。
【0092】
このように、文書全体のスコアと文書セクションのスコアから文書のスコアを再計算することで、文書全体と検索クエリの関連度の大きさおよび、その文書において最も検索クエリと関連が強い文書セクションの関連度の大きさを、総合的に判断した表示順序の設定が可能となる。
【0093】
ステップS506では、文書をスコア降順に並べ替えし、スコア上位Nd件の文書に絞り込む。Ndは検索者に検索結果として返す文書の件数である。Ndの値は文書検索システム100に設定値として組み込まれていてもよいし、検索者が検索時に指定してもよい。なお、検索結果として得られた文書がNd件以下である場合、並べ替えのみを行う。
【0094】
例えば文書検索システム100においてNd=10と指定されている場合、検索結果の文書は文書IDが1、2の2件なので並べ替えのみ行われ、スコア降順に文書IDが1、2の順になる。あるいはNd=1と指定されている場合、スコアが最大である文書IDが1の文書のみに絞り込まれ、文書IDが2の文書は除去される。以降はNd=10であるして説明する。
【0095】
ステップS507では、各文書の処理として、その文書の子要素である文書セクションをスコア降順に並べ替えし、スコア上位Ns件の文書セクションに絞り込んでそれ以外を除外する。Nsは検索者に検索結果として返す、一文書あたりの文書セクションの件数である。Nsの値は文書検索システム100に設定値として組み込まれていてもよいし、検索者が検索時に指定してもよい。なお、各文書について文書セクションの件数がNs件以下である場合、並べ替えのみを行う。
【0096】
例として文書IDが1の文書の子要素である、文書セクションIDが1_7、1_18、1_19の文書セクションを用いて説明する。文書検索システム100においてNs=10と指定されている場合、文書セクションは3件なので並べ替えのみ行う。結果として、スコア降順に全ての文書セクションが並べられ、文書セクションIDが1_18、1_7、1_19の順で検索結果が作成される。あるいは、文書検索システム100においてNs=2と指定されている場合、スコア降順に2件の文書セクションが並べられ、文書セクションIDが1_18、1_7の順で検索結果が作成される。以降はNs=10であるとして説明する。
【0097】
以上のように検索処理を行うことで、検索結果として順序付きの文書集合と、各文書の子要素として順序つきの文書セクション集合からなるデータが作成される。検索結果には、文書および文書セクションのメタデータと文書セクションのスニペットを含む。
文書検索システム100は、作成された検索結果をクライアント端末へ送信する。
【0098】
図6はクライアント端末に表示される検索画面の例である。クライアント端末は検索画面を用いることで、文書検索システム100へ検索クエリを送信し、文書検索システム100から受け取った検索結果を表示する。
【0099】
検索画面は検索クエリ入力欄601と検索ボタン602を含む。検索者が検索クエリ入力欄601に検索クエリとして文字列を入力したうえで検索ボタン602を押下したとき、クライアント端末から文書検索システム100へ検索の指示が送信される。
検索画面は、検索結果の文書ごとに文書枠603を含む。なお、クライアント端末が検索画面を表示した初期状態ではクライアント端末は検索結果を保持していないため、文書枠603は表示されない。
【0100】
文書枠603の中には文書メタデータ604を含む。文書メタデータ604は、当該文書に関するメタデータの一部を示す画面要素である。
図6では特に文書メタデータ604として文書のタイトルを表示している。
【0101】
文書枠603の中には、検索結果内で当該文書の子要素である複数の文書セクションごとに、文書セクション枠605を含む。
【0102】
文書セクション枠605には、当該文書セクションについて文書セクションメタデータ606と文書セクションスニペット607を含む。
文書セクションメタデータ606は当該文書セクションに関するメタデータの一部を示した画面要素である。
図6では特に文書セクションメタデータ606として、文書セクションの発言者および会議内時刻を表示している。
【0103】
文書セクションスニペット607は、検索結果における当該文書セクションのスニペットを示した画面要素である。スニペットは文書セクションの原文の一部であり、特に原文内において検索キーワードが出現する付近の文字列を表示している。文書セクションスニペット607において、検索キーワードを強調表示することができる。例えば
図6では、文書セクションの原文から、検索キーワードである「見積もり」「根拠」の周辺の文字列を表示しており、さらに「見積もり」「根拠」に下線を引くことで強調表示している。
【0104】
なお
図6の検索画面例では、文書内の検索条件に合う文書セクションを表示しているが、文書内の全ての文書セクションや、検索条件に合う文書セクションの前後の文書セクションも合わせて表示して、検索条件に合う文書セクションを、太字にする、文字色を変える、マーカーを引く、等、識別表示するようにしてもよい。
【0105】
上記により、文書データの検索において検索者にとって望ましい検索結果を得ることが可能となる。
【0106】
以上、本発明に係る実施形態について示したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記録媒体等としての実施態様をとることが可能である。具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【0107】
また、本発明におけるプログラムは、各フローチャートの処理方法をコンピュータが実行可能なプログラムである。なお、本発明におけるプログラムは各フローチャートの各装置の処理方法ごとのプログラムであってもよい。
【0108】
以上のように、前述した実施形態の機能を実現するプログラムを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記録媒体に格納されたプログラムを読み出し、実行することによっても本発明の目的が達成されることは言うまでもない。
【0109】
この場合、記録媒体から読み出されたプログラム自体が本発明の新規な機能を実現することになり、そのプログラムを記録した記録媒体は本発明を構成することになる。
【0110】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD-ROM、CD-R、DVD-ROM、磁気テープ、不揮発性のメモリカード、ROM、EPROM、シリコンディスク等を用いることが出来る。
【0111】
また、コンピュータが読み出したプログラムを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0112】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0113】
また、本発明は、複数の機器から構成されるシステムに適用しても、ひとつの機器から成る装置に適用しても良い。また、本発明は、システムあるいは装置にプログラムを供給することによって達成される場合にも適応できることは言うまでもない。この場合、本発明を達成するためのプログラムを格納した記録媒体を該システムあるいは装置に読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
【0114】
さらに、本発明を達成するためのプログラムをネットワーク上のサーバ、データベース等から通信プログラムによりダウンロードして読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。なお、上述した各実施形態およびその変形例を組み合わせた構成も全て本発明に含まれるものである。
【符号の説明】
【0115】
100 文書検索システム
110 文書検索部
120 文書DB
130 文書セクションDB