JP5533197B2 - 検索装置、ならびに、コンピュータプログラム - Google Patents

検索装置、ならびに、コンピュータプログラム Download PDF

Info

Publication number
JP5533197B2
JP5533197B2 JP2010102367A JP2010102367A JP5533197B2 JP 5533197 B2 JP5533197 B2 JP 5533197B2 JP 2010102367 A JP2010102367 A JP 2010102367A JP 2010102367 A JP2010102367 A JP 2010102367A JP 5533197 B2 JP5533197 B2 JP 5533197B2
Authority
JP
Japan
Prior art keywords
search
character string
gram
document
document data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2010102367A
Other languages
English (en)
Other versions
JP2011232942A (ja
Inventor
勝彦 佐藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Casio Computer Co Ltd
Original Assignee
Casio Computer Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Casio Computer Co Ltd filed Critical Casio Computer Co Ltd
Priority to JP2010102367A priority Critical patent/JP5533197B2/ja
Publication of JP2011232942A publication Critical patent/JP2011232942A/ja
Application granted granted Critical
Publication of JP5533197B2 publication Critical patent/JP5533197B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、複数の文書から、指定された検索語を有する文書を検索する検索装置、ならびに、コンピュータプログラムに関する。
文書の電子化の増大に伴い、これまでに蓄積されてきた大量の文書群から所望の文書を見つけ出す検索技術の重要性が高まっている。
英語などの多くの言語においては、単語を索引単位として索引ファイルを作成して、これを用いて高速な検索処理を実現することが一般的である。しかし、日本語の場合、スペース等によって単語の切れ目が明示的に示されないため、しばしば、Nグラムを索引単位とする方法が用いられている。
Nグラムとは、連続するN文字からなる部分文字列のことである。Nグラムによる索引ファイル(以下、転置インデックスと呼称する)の作成には、文字列にのみ基づくため、単語を認識する必要がない。しかし、検索処理される検索語が複数のNグラムに分割されて処理されるので、検索時間が増大するという問題がある。
特に、短い検索語の検索の場合には、検索時間の増大が顕著になる。なぜなら、例えば1文字の検索語をN≧2のNによりNグラム検索する場合、転置インデックスに登録されているNグラムのうち先頭1文字目が検索語に一致する全てのNグラムとの論理和を検索条件としなければならず、検索条件が大きく膨れ上がってしまうからである。
さらに、このような短い検索語と、別の検索語とを、論理積演算(AND演算)で組み合わせて検索する場合には、さらに検索時間が増大する。これはなぜなら、AND演算を行う前に、上述した全てのNグラムの論理和に対する文書集合を中間結果として保持しておく必要があるからである。
このような問題に対し、非特許文献1において、検索処理の高速化の技術が開示されている。具体的に、非特許文献1では、短い検索語を含む複数の検索語を、AND演算子で結合した条件における検索において、別の等価な演算に変形することで、検索処理の高速化を行う。
小川泰嗣,松田透,橋本信次,"N−gram索引における複合検索条件の効率的な処理方法",情報処理学会論文誌,Vol.40,No.SIG5,pp.43-53,May,1999
このような短い検索語が係る処理において、より単純な処理によって高速化を実現したい、との要望がある。すなわち、携帯電話や小型電子機器に搭載された小型の電子辞書等といった、搭載CPU性能が低く、搭載RAMサイズが小さく、またフラッシュメモリの1アクセス当たりの読み込みサイズが小さい場合においても、効率的な検索を実現したい、というものである。
そして、非特許文献1に開示されている別の等価な演算に変形する方法は、複数の検索語に1文字の検索語が含まれていた場合には、必ずしも有効とはならない場合がある。一方で、実際に検索を行う場面では、1文字のような短い検索語と他の検索語とのAND演算で検索する状況は少なくないと考えられる。
本発明は、以上のような課題を解決するためのものであり、複数の文書から、指定された検索語を有する文書を効率的に検索するのに好適な検索装置、ならびに、コンピュータプログラムを提供することを目的とする。
本発明にかかる検索装置は、
検索対象の複数の文書データから抽出された「N文字の文字列であるNグラム(Nは自然数)」のうち、N=1〜k−1のk−1個(kは自然数)のNグラムについては当該Nグラムが含まれる出現文書番号を構成要素とし、N=kのNグラムについては前記複数の文書データ中の出現位置情報を構成要素とする転置インデックスを記憶する記憶手段と、
検索文字列がk文字以上のときは、N=kのNグラムを使用して、前記検索文字列からNグラムを抽出し、前記検索文字列がk文字未満のときは、前記検索文字列をNグラムとして抽出するNグラム抽出手段と、
検索文字列がk文字以上のときは、前記検索文字列から抽出されたNグラムについて、前記転置インデックスの出現位置情報に基づいて、前記複数の文書データのうちから前記検索文字列を含む文書データを特定し、前記検索文字列がk文字未満のときは、前記転置インデックスの出現文書番号に基づいて、前記複数の文書データのうちから前記検索文字列を含む文書データを特定する文書特定手段と、
備えることを特徴とする。
上記検索装置において、
前記転置インデックスは、前記複数の文書データから抽出されたNグラムのそれぞれについて、前記複数の文書データ中の出現頻度情報をさらに構成要素とし、
前記文書特定手段は、前記出現頻度情報に基づいて、前記検索文字列から抽出されたNグラムのうち、出現頻度の少ないNグラムから順に、文書データの特定に用いる、
ことが望ましい。
上記検索装置において、
複数の検索文字列の論理積による検索の場合に、前記文書特定手段は、前記転置インデックスの出現頻度情報に基づいて、出現頻度の少ないNグラムを有する検索文字列から順に、文書データの特定に用いる、
ことが望ましい。
本発明にかかるコンピュータプログラムは、
検索対象の複数の文書データから抽出された「N文字の文字列であるNグラム(Nは自然数)」のうち、N=1〜k−1のk−1個のNグラムについては当該Nグラムが含まれる出現文書番号を構成要素とし、N=kのNグラムについては前記複数の文書データ中の出現位置情報を構成要素とする転置インデックスを記憶する記憶手段を備えるコンピュータを、
検索文字列がk文字以上のときは、N=kのNグラムを使用して、前記検索文字列からNグラムを抽出し、前記検索文字列がk文字未満のときは、前記検索文字列をNグラムとして抽出するNグラム抽出手段、
検索文字列がk文字以上のときは、前記検索文字列から抽出されたNグラムについて、前記転置インデックスの出現位置情報に基づいて、前記複数の文書データのうちから前記検索文字列を含む文書データを特定し、前記検索文字列がk文字未満のときは、前記転置インデックスの出現文書番号に基づいて、前記複数の文書データのうちから前記検索文字列を含む文書データを特定する文書特定手段、として機能させる。
本発明によれば、複数の文書から、指定された検索語を有する文書を効率的に検索するのに好適な検索装置、ならびに、コンピュータプログラムを提供することができる。
検索装置の概要構成図である。 検索装置が構成されるコンピュータ装置の概要構成の1例を示す図である。 検索装置が構成されるコンピュータ装置の概要構成の別の例を示す図である。 本実施形態に係る検索処理の流れを示す第1のフローチャートである。 本実施形態に係る検索処理の流れを示す第2のフローチャートである。 本実施形態に係る検索処理の流れを示す第3のフローチャートである。 転置インデックスの具体的な構成を示す図である。
以下、本発明の実施形態に係る検索装置について説明する。以下に説明する実施形態は説明のためのものであり、本発明の範囲を制限するものではない。
以下、図1を参照して実施形態1に係る検索装置10について説明する。
検索装置10は、記憶部11と、入力部12、Nグラム抽出部13と、文書特定部14と、出力部15と、を備える。
記憶部11は、検索対象の複数の文書データから抽出されたNグラムについて、複数の文書データ中の出現位置と出現頻度とを構成要素とする転置インデックスを、Nの異なる複数のNグラムについて記憶する。記憶部11は、例えば、ハードディスク装置によって構成される。
Nの異なる複数のNグラムとは、例えばN=1のモノグラムとN=2のバイグラムが対応することが典型的である。すなわち、Ndoc文字の文字列から構成される文書データからは、Ndoc個(=Ndoc−1+1個)のモノグラムとNdoc−1個(=Ndoc−2+1個)のバイグラムが抽出される。これらの抽出を複数の文書データの数だけ行い、そしてそれぞれの出現位置情報を記載した転置インデックスが、記憶部11に記憶される。
入力部12は、ユーザから検索文字列を受け付ける。具体的には、キーボードやタッチパネル等の入力装置によってユーザが入力した検索文字列を受付ける。そして、受け付けた検索文字列を、Nグラム抽出部13へ供給する。
Nグラム抽出部13は、入力部12によって受け付けられた検索文字列から、Nの異なる複数のNグラムのうち、検索文字列の文字数に応じて使用するNグラムを変化させて、検索文字列からNグラムを抽出する。すなわち、コンピュータ装置のCPUなどによって、検索文字列を構成するNグラムのうち、抽出可能なものを抽出する。そして、抽出されたNグラムを、文書特定部14へ供給する。
具体的に、上記の例のように、転置インデックスにモノグラムとバイグラムの出現位置情報が記憶されている場合では、ユーザが1文字の検索文字列を入力したときはモノグラムを、2文字以上の検索文字列を入力したときはバイグラムを、検索文字列から抽出する。すなわち、ユーザが入力する検索文字列の文字数に応じて、検索処理を効率的に行うことのできるNグラムを適切に選択する。
文書特定部14は、Nグラム抽出部13によって抽出されたNグラムと、記憶部11に記憶されている転置インデックスの出現位置情報に基づいて、複数の文書データのうちから検索文字列を含む文書データを特定する。そして、特定された文書データを、出力部15へ供給する。
すなわち、上述したNグラム抽出部13により検索文字列から抽出されたNグラムについて、転置インデックスの出現位置情報を基にして、複数の文書データのうちから検索文字列を含む文書データを特定する。
出力部15は、文書特定部14により特定された文書データを受け、ユーザへ出力する。具体的には、例えばディスプレイ等の出力装置を用いて、文書データの情報を出力する。
以下、図2Aおよび図2Bを用いて、図1に示した検索装置10が物理的に構成される一般的なコンピュータ装置の概要構成を説明する。
図2Aにおいて、コンピュータ装置20は、CPU(Central Processing Unit)21、ROM(Read Only Memory)22、RAM(Random Access Memory)23、HDD(Hard Disk Drive)24、入力装置25、出力装置26、通信制御装置27により構成される。各構成要素は、命令やデータを転送するための伝送経路であるシステムバスにより、相互に接続されている。
CPU21は、コンピュータ装置20全体の動作を制御し、各構成要素と接続され制御信号やデータをやりとりする。
ROM22は、コンピュータ装置20全体の動作制御に必要なコンピュータプログラムや各種データを記憶する。特に本実施形態では、検索処理のため必要なコンピュータプログラムや各種データを記憶する。
RAM23は、データやコンピュータプログラムを一時的に記憶するためのもので、ROM22から読み出したコンピュータプログラムやデータ、その他処理の進行に必要なデータが保持される。
HDD24は、検索処理の動作のために必要なデータ等を記憶するためのもので、特に本実施形態では、検索対象の複数の文書データ28、および、複数の文書データ28から抽出されたNグラムのそれぞれについて、複数の文書データ28中の出現位置と出現頻度とを構成要素とする転置インデックス29、を記憶する記憶部11として動作することが想定される。
入力装置25は、例えばキーボードやタッチパネル等によって構成され、ユーザからの入力を受け付ける。本実施形態では、入力部12を構成し、ユーザが入力した検索文字列を受け付ける。
出力装置26は、例えばディスプレイ等によって構成され、コンピュータ装置20の処理結果を出力する。本実施形態では、出力部15を構成し、特定された検索文字列を含む文書データ28を、ユーザへ出力する。
通信制御装置27は、コンピュータ装置20をインターネット等のコンピュータ通信網に接続するためのものであり、コンピュータ通信網に接続してデータをやり取りする場合に必要となる。例えば、本実施形態において、上述したHDD24に記憶されている検索対象の複数の文書データ28は、通信制御装置27を介して取得できるようにすることも可能である。
本実施形態では、複数の文書データ28は、HDD24内ではなく、コンピュータ装置20の外に存在していてもよい。この例について、図2Bを用いて説明する。
図2Bは、図2Aと同様な図であるが、この例では、複数の文書データ28はHDD24には存在せず、コンピュータ装置20の外に存在する。この場合、通信制御装置27によりコンピュータ通信網を介して文書データ28へ接続することになる。
そのため、図2Bの実施形態では図2Aでのものに比べ、コンピュータ装置20内に文書データ28を記憶する必要がなく、インターネットに適切に接続可能な環境であれば、小型の電子辞書のような限られた容量の装置においても実現しやすくなる。
このような構成によって実現される検索装置10について、具体的な検索処理の詳細を、以下に図3A〜図3Cを用いて説明していく。
最初に図3Aにおいて、検索処理が開始されると、まず検索装置10は、入力部12によってユーザから検索語を受け付ける(ステップS301)。ここで、ユーザから受け付ける検索語は、1語であってもよいし、複数の検索語を受け付けてもよい。
複数の検索語を受け付けた場合、複数の検索語の論理積、論理和、否定論理積など、演算方法に種類があり、以下では論理積演算の場合について詳述するが、本実施形態ではこれに限定されず、その他の演算方法による検索を行ってもよいものとする。
次に、Nグラム抽出部13によって、受け付けられた検索語のそれぞれから、Nグラムを抽出する処理に入る。ここでまず、検索語の文字数(M文字とする)に着目し、ある閾値kを用いて、k文字以上かどうかを判定する(ステップS302)。
ここで閾値kは、検索装置10において予め定められている値であり、k=2、k=3、あるいはそれ以外の2以上の自然数の値をとるが、以下では説明のために、その都度k=2やk=3、k=4などの場合を用いて説明をする。
k文字以上と判定された場合(ステップS302;YES)、検索語からN=kのNグラムを抽出する(ステップS303)。このとき、M文字の検索語について、先頭の文字から順に1文字ずつずらしながら抽出可能なNグラムを抽出する。すなわち、M文字の検索語からは、M−N+1個のNグラムが抽出される。
一方、k文字以上でないと判定された場合(ステップS302;NO)、検索語から、検索語の文字数に等しいNのNグラムを、すなわちM文字の検索語ではN=MのNグラムを、抽出する(ステップS304)。このとき抽出されるNグラムは、1個、すなわち検索語そのもののM文字列だけである。
上記ステップS303またはステップS304の後、すべての検索語を処理したかを判定する(ステップS305)。処理していなければ(ステップS305;NO)、ステップS302へ戻る。すなわち、ステップS302〜S305はループ構造をなし、検索語の数だけ繰り返し行われる。そして、検索語ごとにそれぞれNグラムが抽出される。
ここまでのNグラム抽出部13による処理の具体例として、ステップS301において、ユーザから「雨」、「高速化」、「全文検索処理」の3個の検索語を受け付けた場合を用いて説明する。
まず上記の閾値k=2の場合について考える。
最初の検索語「雨」は1文字列であるので、ステップS302での判定はNOとなり、ステップS304へ移行し、N=1のNグラム(モノグラム)が抽出される。すなわち、「雨」というモノグラムが1個、抽出される。
次にステップS305でステップS302へ戻り、次の検索語「高速化」は3文字列であるので、ステップS302での判定はYESとなり、ステップS303へ移行し、N=2(=k)のNグラム(バイグラム)が抽出される。すなわち、「高速」、「速化」というバイグラムが2個(3−2+1個)、抽出される。
再びステップS302へ戻り、最後の検索語「全文検索処理」は6文字列であるので、ステップS302での判定はYESとなり、ステップS303へ移行し、N=2(=k)のNグラム(バイグラム)が抽出される。すなわち、「全文」、「文検」、「検索」、「索処」、「処理」というバイグラムが5個(6−2+1個)、抽出される。
一方、別の例として、上記の閾値k=4の場合についても考える。
最初の検索語「雨」は1文字列であるので、ステップS302での判定はNOとなり、ステップS304へ移行し、N=1のNグラム(モノグラム)が抽出される。すなわち、上記と全く同様に、「雨」というモノグラムが1個、抽出される。
次にステップS305でステップS302へ戻り、次の検索語「高速化」は3文字列であるので、ステップS302での判定は同じくNOとなり、ステップS304へ移行し、N=3のNグラム(トリグラム)が抽出される。すなわち、「高速化」というトリグラムが1個、抽出される。
再びステップS302へ戻り、最後の検索語「全文検索処理」は6文字列であるので、ステップS302での判定はYESとなり、ステップS303へ移行し、N=4(=k)のNグラムが抽出される。すなわち、「全文検索」、「文検索処」、「検索処理」というNグラムが3個(6−4+1個)、抽出される。
このようなNグラム抽出部13による各検索語からのNグラム抽出処理が終わると、次に図3Aにおいて、頻度を導出する処理へ移行する。
まず、抽出された各検索語のNグラムについて、出現頻度を抽出する(ステップS306)。すなわち、記憶部11に記憶されている転置インデックス29の出現頻度情報を用い、複数の文書データ28中での出現頻度を抽出する。
ここで、図4を用いて、転置インデックス29の具体的な構成を説明する。本図に示すように、転置インデックス29は、Nグラム文字列パターンに関するファイル(pattern.idx)、出現位置情報に関するファイル(position.idx)、文書番号に関するファイル(number.idx)の3つのファイルから構成される。
Nグラム文字列パターンに関するファイル(pattern.idx)には、複数のNの異なるNグラムについて、Nグラム文字列パターンと出現位置情報格納アドレスとが対応して記載されている。図4では例として、バイグラムとモノグラムについて、それぞれ複数の文書データ28中に存在する文字列パターンの数だけ、その出現位置情報格納アドレスが記載されている。本実施形態ではバイグラムとモノグラムの2個に限られず、一般にN=1〜kのk個のNグラムについて記載されていてもよい。
すなわち、上述したような最も典型的な例であるk=2の場合では、転置インデックス29はモノグラムとバイグラムの2個について出現位置情報格納アドレスを記憶する。そして、ユーザから入力された検索文字列が2文字以上のときはバイグラムを、2文字未満(すなわち1文字)のときはモノグラムを、それぞれ検索文字列から抽出して、それぞれ転置インデックス29に記憶されているバイグラムまたはモノグラムの出現位置情報格納アドレスを参照して、検索文字列が含まれる文書を特定することになる。
一方、k=3の場合では、転置インデックス29はモノグラムとバイグラムとトリグラム(N=3のNグラム)の3個について出現位置情報格納アドレスを記憶することになる。このときは、ユーザから入力された検索文字列が3文字以上のときはトリグラムを、2文字のときはバイグラムを、1文字のときはモノグラムを、それぞれ検索文字列から抽出して、それぞれ転置インデックス29に記憶されているトリグラム、バイグラム、モノグラムのいずれか対応するものの出現位置情報格納アドレスを参照して、検索文字列が含まれる文書を特定することになる。
その結果、ユーザから受け付けられた検索文字列が、例えば1文字のような短い検索文字列であったとしても、必ず検索文字列の文字数以下のNグラムを用いた検索処理が可能となる。これは、Nグラムを用いた検索処理において一般的に効率的な検索が行うことが困難な、使用するNグラムより文字数の少ない検索文字列での検索を、避けることが可能となり、検索処理の効率化につながる。
出現位置情報に関するファイル(position.idx)には、上記pattern.idxに記載された各Nグラム文字列パターンについての、出現頻度と出現位置情報、または出現頻度と出現文書番号情報が記載されている。図4での例では、バイグラムとモノグラムが記載されている場合について対応しており、バイグラムの文字列パターンに対しては出現頻度と出現位置情報が、モノグラムの文字列パターンに対しては出現頻度と出現文書番号情報が記載されている。ここでも本実施形態では、バイグラムとモノグラムの2個に限られず、上記pattern.idxに対応して、一般にk個のNグラムについて記載されていてもよい。その場合、Nが最も大きいN=kのNグラム文字列パターンに対しては出現頻度と出現位置情報が、それ以外のN=1〜k−1のNグラム文字列パターンに対しては出現頻度と出現文書番号情報が記載されることになる。
ここで、N=1〜k−1のk−1個のNグラム文字列パターンに対して、出現位置でなく出現文書番号を用いている理由について詳述すると、Nグラム抽出部13によって検索文字列から抽出されたNグラムは、転置インデックス29の出現位置情報を参照しながら、文書特定部14において抽出されたNグラムがどの文書データ28に含まれているかを特定していく。
ここでN=kのNグラムは、k文字以上(M文字とする)の検索文字列から、複数(M−N+1個)抽出される。そのため、複数のNグラムが全て含まれている文書データ28が見つかったとしても、文書データ28の中で互いに離れた位置に存在していたら、それは見つけたい検索文字列を構成するものではないことになる。これを避けるため、文書データ28内の位置に着目し、M−N+1個の複数のNグラムが検索文字列を構成するように連続に位置しているかを調べる必要がある。
それに対しN=1〜k−1のNグラムでは、抽出されるNグラムは必ず1個なので、上述したような位置の連続性を調べる必要がない。すなわち、Nグラムが出現する文書データ28さえ見つかれば、それはそのまま検索文字列が存在する文書データ28だと特定できる。そのため、N=1〜k−1のNグラムに対しては、転置インデックス29には詳細な出現位置情報ではなく出現文書番号情報を構成要素とすることで、文書データ28内の位置から文書データ28を特定するという処理をとることなく、直接文書データ28を特定することができるようになり、処理の効率化につながる。
そのため、以下では、N=1〜k−1のNグラム文字列パターンに対して、出現位置でなく出現文書番号を用いた実施形態について説明するが、本実施形態では、すべてのNのNグラム文字列パターンに対して出現位置情報を用いることを妨げるものではない。
文書番号に関するファイル(number.idx)には、複数の文書データ28のそれぞれについて、文書番号と各文書の先頭文字位置が記載されている。ここで、上記position.idxでの出現位置と、number.idxでの各文書の先頭文字位置は、検索対象の文書群を文書番号順に並べたテキストの先頭文字位置を基準とした位置である。
すわなち、後述する文書特定部14での処理において、Nグラム文字列パターンの出現位置と各文書の先頭文字位置の大小を比べることで、各Nグラム文字列パターンがどの文書データ28中にあるのかを特定することになる。
このような転置インデックス29を参照して、上記ステップS306では、抽出された各検索語のNグラムについて、出現頻度を抽出する。
そして、各検索語について、最少出現頻度のNグラムを導出する(ステップS307)。すなわち、上記ステップS306で抽出された各検索語の各Nグラムについての出現頻度を比較して、各検索語ごとに複数の文書データ28中での出現頻度が最も少ないNグラムを導出する。
具体的な例として、上述した「雨」、「高速化」、「全文検索処理」の3個の検索語を受け付けた例における、閾値k=2の場合について考える。
ステップS306においては、転置インデックス29を用いて、抽出された各Nグラム(モノグラムまたはバイグラム)「雨」、「高速」、「速化」、「全文」、「文検」、「検索」、「索処」、「処理」の複数の文書データ28中での出現頻度を抽出する。ここでは例えば、「雨」3回、「高速」15回、「速化」5回、「全文」10回、「文検」5回、「検索」9回、「索処」4回、「処理」13回、のような出現頻度の結果が得られる。
この結果を受けてステップS307では、各検索語ごとに最少出現頻度のNグラム(モノグラムまたはバイグラム)を導出する。
最初の検索語「雨」については、モノグラム「雨」1個なので、これが最少出現頻度のNグラム(モノグラム)となる。
次の検索語「高速化」については、2個のバイグラム「高速」と「速化」があり、出現頻度は「速化」5回の方が「高速」15回よりも少ないため、「速化」が最少出現頻度のNグラム(バイグラム)となる。
最後の検索語「全文検索処理」については、5個のバイグラムのうち、「索処」4回が最少であるため、「索処」が最少出現頻度のNグラム(バイグラム)となる。
ここで、最少出現頻度のNグラムが複数あるときは、いずれか1個、典型的には検索文字列の位置が前方にあるもの、を導出する。また、最少出現頻度がゼロのNグラムが1つでも存在する場合には、複数の文書データ28中に検索文字列が存在しないということになるので、以下のステップに進まずに、典型的には「検索語が見つかりませんでした。」等をユーザへ出力して、処理を終了する(図示せず)。
ここまでの処理を受けて、図3Aでは、各検索語にて導出された最少出現頻度を比べ、最少値を有する検索語を、基準検索語とし、それ以外の検索語を、検証検索語とする(ステップS308)。
すなわち具体的には、上記3個の検索語について導出された3個の最少出現頻度のNグラム「雨」、「速化」、「索処」の出現頻度を比較する。出現頻度3回のモノグラム「雨」が他の2個のバイグラム「速化」5回、「索処」4回と比べて少ないため、検索語「雨」が基準検索語となり、それ以外の2個の検索語「高速化」と「全文検索処理」が検証検索語となる。
図3Aでの処理はここで終了し、上記の結果得られた情報を用いて、ここからフローチャートは図3Bでの文書特定部14の処理へ移行する。以下の処理では、まず基準検索語を含む文書データ28を絞り込み、その後で絞り込まれた文書データ28に、検証検索語が含まれているかどうかを判定することで、最終的にすべての検索語が含まれている文書データ28を特定していく。そのため、ステップS308において、最少出現頻度が最少値のNグラムを有する検索語を基準検索語とすることで、処理の早期の段階で文書データ28を少数に絞り込むことが可能となる。以下、詳述する。
図3Bにおいて、まず、基準検索語の文字数(M文字とする)に着目し、図3AでのステップS302でのものと同様の閾値kを用いて、k文字以上かどうかを判定する(ステップS309)。
ここでは上述した具体例をそのまま用いて、基準検索語が「雨」であり、閾値k=2の場合について考える。このとき、基準検索語の文字数(1文字)は2文字以上でないので(ステップS309;NO)、ステップS310へ移行する。
そして、記憶部11に記憶されている転置インデックス29を参照して、基準検索語「雨」を構成する1個のモノグラム「雨」の出現文書番号を読み込んで、出現候補文書番号を導出する(ステップS310)。ここでは、モノグラム文字列「雨」を含む文書データ28は通常は複数存在するので、出現候補文書番号も複数存在することになるが、ここではまず、最初に導出された1個の出現候補文書番号に着目する。そして、図3Cへと移行する。
図3Cでは、検証検索語に着目した繰り返し処理に入る。まず、1個の検証検索語の文字数(M文字とする)に着目し、図3AでのステップS302および図3BでのステップS309でのものと同様の閾値kを用いて、k文字以上かどうかを判定する(ステップS314)。
ここでも引き続き上述した閾値k=2の具体例を用いて説明する。2個の検証検索語「高速化」と「全文検索処理」のうち1個に着目して、2文字以上かどうかを判定する。本実施形態では最初にどちらに着目することも可能であるが、ステップS306にて導出された互いの最少出現頻度のNグラム(バイグラム)「速化」(5回)と「索処」(4回)を比べて、より少ない方から着目した方が、より早期に文書データ28を絞り込むことができ、処理の効率化につながる。したがって、ここでは最初に「全文検索処理」に着目して、以下説明する。
検証検索語「全文検索処理」は、2(=k)文字以上であるので(ステップS314;YES)、次に、ステップS303にて抽出された「全文検索処理」の5個のバイグラムのうち、最小出現頻度のバイグラムの出現位置を読み込んで、出現候補文書番号の文書内か評価する(ステップS320)。すなわち、すでにステップS306にて導出された最少出現頻度のバイグラム「索処」に着目し、転置インデックス29を参照して、出現位置を読み込む。
そして、バイグラム「索処」のある出現位置が、出現候補文書番号の文書内の先頭位置以上であるかを判定する(ステップS321)。先頭位置以上でなければ(ステップS321;NO)、この出現位置にあるバイグラム「索処」は、出現候補文書の中にあることはありえないので、ステップS320へ戻って、次のバイグラム「索処」の出現位置が出現候補文書番号の文書内であるかを判定し直す。この繰り返し処理を、先頭位置以上の出現位置が見つかるまで行う。
もしここで、バイグラム「索処」についての転置インデックス29内のすべての出現位置が、出現候補文書番号の文書内の先頭位置以上となっていなければ、基準検索語「雨」と検証検索語「全文検索処理」を同時に含む文書データ28が存在しないということを意味し、検索語が見つからなかった旨を適切にユーザへ出力して、処理はここで終了する(図示せず)。
一方、ある出現位置が先頭位置以上であれば(ステップS321;YES)、今度は同じ出現位置が、出現候補文書番号の文書内の最終位置以下であるかを判定する(ステップS322)。すなわち、ステップS321とステップS322の2つの判定を満たした出現位置が、出現候補文書番号の文書内にあると判定される。
ここで、最終位置以下でなければ(ステップS322;NO)、バイグラム「索処」についての転置インデックス29内にあるこれ以降の出現位置も、最終位置以下ではないと判断できるので、現在着目している出現候補文書には、検証検索語「全文検索処理」は存在しないことを意味することになる。
すなわち、現在着目している出現候補文書における処理は終了し、次に全ての出現候補文書番号を評価したかを判定する(ステップS327)。ここで未評価の出現候補文書番号があれば(ステップS327;YES)、処理はステップS309まで戻り、再びステップS310にて基準検索語における未評価の出現候補文書番号を導出する。そしてその出現候補文書番号に着目し直して、検証検索語における上記ステップS314、S320〜S322での処理を行う。
そして、ステップS321とステップS322の2つの判定を満たしたバイグラム「索処」の出現位置が存在した場合(ステップS322;YES)、次に検索語全体が出現候補文書内に存在するかを判定する。すなわち、検証検索語「全文検索処理」を構成する5個のバイグラム「全文」、「文検」、「検索」、「索処」、「処理」の出現位置を転置インデックス29を参照して読み込み(ステップS323)、各出現位置が「全文検索処理」を構成するような連続性があるかを判定する(ステップS324)。
ここで連続性を判定する際に、ステップS306にて抽出された各バイグラムの出現頻度を用いて、出現頻度の少ないバイグラムから出現位置を読み込むと、より効率的な処理が可能となる。また、連続性の評価には、必ずしも上記5個すべてのバイグラムを使用しなければならないわけではなく、最小限に検索語を被覆するように、「全文」、「検索」、「処理」の3個のみを読み込めば、連続性の評価は可能である。本実施形態では、これらを制限するものではなく、いずれの形態も可能である。
連続性がないと判定された場合(ステップS324;NO)、現在着目している出現候補文書内には検証検索語が存在しないということになるので、ステップS327へ移行し、
次に未評価の出現候補文書番号があるかを判定し直して、あれば再び未評価の出現候補文書番号に着目し直すことになる。
一方、連続性があると判定された場合(ステップS324;YES)、現在着目している出現候補文書中には、基準検索語「雨」と検証検索語「全文検索処理」が、ともに存在することになる。ここで全ての検証検索語を評価したかを判定する(ステップS325)。今回の具体例においては、まだ検証検索語「高速化」については評価していない(ステップS325;NO)。したがって、ステップS314まで戻り、検証検索語「高速化」について、上記ステップS314、S320〜S324までの処理を同様に行うことになる。
そして検証検索語「高速化」について、処理がステップS325まで到達したとき、全ての検証検索語を評価し終わり(ステップS325;YES)、3個の検索語「雨」、「高速化」、「全文検索処理」をいずれの含む文書データ28が、1個特定されたことになる。したがって、特定された出現候補文書番号を保持(ステップS326)する。
そして処理はステップS327へ移行し、未評価の出現候補文書番号があるかを判定する。すなわち、未評価の出現候補文章番号がなくなるまで、上述した「雨」を基準検索語とし、「高速化」と「全文検索処理」を検証検索語として組み合わせた処理を繰り返して、3語を含むすべての文書データ28を特定する。
全ての出現候補文書番号を評価し終われば(ステップS327;NO)、保持された全ての出現候補文書番号をユーザへ出力し(ステップS328)、処理を終了する。すなわち、ここで検索結果がユーザへ適切に出力される。
ここまで一通り、「雨」を基準検索語とし、「高速化」と「全文検索処理」を検証検索語とした3語の論路積による検索について説明してきたが、次の例として、基準検索語が1文字でないとき、すなわち、基準検索語を「全文検索処理」とし、「雨」と「高速化」を検証検索語とした場合の検索について説明する。
図3AでのステップS308までの処理によって、「全文検索処理」が基準検索語とされたとき、図3Bへ移行し、この6文字の基準検索語は2(=k)文字以上なので(ステップS309;YES)、この基準検索語を含む出現候補文書番号を導出する処理に入る。
すなわち、基準検索語「全文検索処理」を構成する5個のバイグラム「全文」、「文検」、「検索」、「索処」、「処理」の出現位置を転置インデックス29を参照して読み込み(ステップS311)、各出現位置が「全文検索処理」を構成するような連続性があるかを判定する(ステップS312)。ここでの処理は、上述したステップS323〜S324と同様であり、出現頻度の少ないバイグラムから出現位置を読み込むことや、最小限に検索語を被覆するように使用するバイグラムを選ぶことなど、複数の形態が可能である。
連続性がないと判定された場合(ステップS312;NO)、ステップS311へ戻る。すなわち、連続性があると判定されるまで繰り返す。ここでもし、すべての出現位置について連続性がないと判定されれば、この検証検索語はいずれの文書データ28にも含まれていないことを意味し、検索語が見つからなかった旨を適切にユーザへ出力して、処理はここで終了する(図示せず)。
連続性があると判定された場合(ステップS312;YES)、その連続性のあった出現位置から、転置インデックス29を参照して、出現候補文書番号を導出する(ステップS313)。そして図3Cでの検証検索語の処理へ移行する。
ここではまず、検証検索語である「雨」と「高速化」のうち1個に着目する。「高速化」に着目した場合、この3文字の検証検索語は2(=k)文字以上であるので(ステップS314;YES)、上記で詳述したステップS320〜S326による処理を行う。ここで、検証検索語「高速化」が含まれる文書データ28が1つ特定され、ステップS325へ到達したとき、まだ残りの検証検索語「雨」を評価してないため(ステップS325;NO)、ステップS314へ戻り、検証検索語「雨」の処理へ移行する。
そして、検証検索語「雨」は2文字以上ではないので(ステップS314;NO)、ここからステップS315〜S319による文書特定処理へ移行する。
まず、転置インデックス29を参照して、検証検索語「雨」を構成する1個のモノグラム「雨」の出現文書番号を読み込んで、出現候補文書番号と比較する(ステップS315)。
そして、出現文書番号が、出現候補文書番号以上であるかを判定する(ステップS316)。出現候補文書番号以上でなければ(ステップS316;NO)、この出現文書番号の文書にあるモノグラム「雨」は、出現候補文書の中にあることはありえないので、ステップS315へ戻って、次のモノグラム「雨」の出現文書番号が出現候補文書番号以上であるかを判定し直す。この繰り返し処理を、出現候補文書番号以上の出現文書番号が見つかるまで行う。
もしここで、モノグラム「雨」についての転置インデックス29内のすべての出現文書番号が、出現候補文書番号以上となっていなければ、基準検索語「全文検索処理」と検証検索語「雨」を同時に含む文書データ28が存在しないということを意味し、検索語が見つからなかった旨を適切にユーザへ出力して、処理はここで終了する(図示せず)。
一方、ある出現文書番号が出現候補文書番号以上であれば(ステップS316;YES)、今度は同じ出現文書番号が、出現候補文書番号と等しいかを判定する(ステップS317)。
ここで等しくなければ(ステップS317;NO)、モノグラム「雨」についての転置インデックス29内にあるこれ以降の出現文書番号も、出現候補文書番号と等しくならないと判断できるので、現在着目している出現候補文書における処理は終了し、次に全ての出現候補文書番号を評価したかの判定(ステップS327)へ移行する。
一方、等しければ(ステップS317;YES)、現在着目している出現候補文書中には、基準検索語「全文検索処理」と検証検索語「雨」が、ともに存在することになる。ここで全ての検証検索語を評価したかを判定する(ステップS318)。未評価の検証検索語があれば(ステップS318;NO)、再びステップS314へ戻り、未評価の検証検索語についての処理を行う。今回の具体例においては、全ての検証検索語を評価したことになり(ステップS318;YES)、この時点で3個の検索語「雨」、「高速化」、「全文検索処理」をいずれの含む文書データ28が、1個特定されたことになる。したがって、特定された出現候補文書番号を保持(ステップS319)する。
そして処理はステップS327へ移行し、未評価の出現候補文書番号があるかを判定する。すなわち、上述した先の具体例で既に説明したように、未評価の出現候補文章番号がなくなるまで、すべての文書データ28を特定する処理を繰り返し、全ての出現候補文書番号を評価し終われば(ステップS327;NO)、保持された全ての出現候補文書番号をユーザへ出力し(ステップS328)、処理を終了する。
以上で、ここでの例である、基準検索語「全文検索処理」、検証検索語「雨」、「高速化」で検索した場合における処理が終了したことになる。
ここまでフローチャートで説明してきた処理によって、「雨」のような1文字の短い検索語を含む複数の検索語の論理積演算による検索処理が行われることになる。すなわち、転置インデックス29にはN=1〜kのk個のNグラムについての情報が記憶され、検索語の長さに応じて、必ず検索語の文字数を上回らないNグラムを使用する。これにより、Nグラムを用いた検索処理において一般的に効率的な検索が行うことが困難な、短い検索語の検索、特に短い検索語を含む複数の検索語の論理積演算による検索において、効率的な検索が可能となる。
その際、転置インデックス29には、Nグラムについての情報が、k個分記憶されなければならないので、通常の1種類のNグラムのみを記憶する処理方法に比べて、大きな記憶領域を必要とするが、例えば、本実施形態において典型的な値であるk=2(モノグラムとバイグラム)の場合、モノグラムにおいては、出現位置ではなく文書番号を記憶することで、記憶領域の増大量を最小限に抑えることができる。
特に、1文字のような短い検索語と、他の検索語を組み合わせた論理積による検索は、実際には頻繁に行われるものであり、上記のように、1文字の検索語についてはモノグラムで、それ以上の文字数の検索語についてはバイグラムで、それぞれ検索処理を行なえば、記憶領域の増大量の最小限な抑制と、高速な処理速度との、両立が可能となる。
これにより、例えば、携帯電話や小型電子機器に搭載された小型の電子辞書等といった限られた資源、すなわち搭載CPUの処理速度が低く、容量が小さい場合においても、効率的な検索を実現することが可能になる。
また、本発明での実施形態は、上述した実施形態に加え、上記検索装置10としてコンピュータ装置20を機能させるためのコンピュータプログラムであってもよい。
上記コンピュータプログラムは、コンパクトディスク、フレキシブルディスク、ハードディスク、光磁気ディスク、ディジタルビデオディスク、磁気テープ、半導体メモリ等のコンピュータ読取可能な情報記憶媒体に記憶することができる。
また、上記コンピュータプログラムは、コンピュータプログラムが実行されるコンピュータ装置20とは独立して、コンピュータ通信網を介して配付・販売することができる。また、上記情報記憶媒体は、コンピュータ装置20とは独立して配付・販売することができる。
10…検索装置、11…記憶部、12…入力部、13…Nグラム抽出部、14…文書特定部、15…出力部、20…コンピュータ装置、21…CPU、22…ROM、23…RAM、24…HDD、25…入力装置、26…出力装置、27…通信制御装置、28…文書データ、29…転置インデックス

Claims (4)

  1. 検索対象の複数の文書データから抽出された「N文字の文字列であるNグラム(Nは自然数)」のうち、N=1〜k−1のk−1個(kは自然数)のNグラムについては当該Nグラムが含まれる出現文書番号を構成要素とし、N=kのNグラムについては前記複数の文書データ中の出現位置情報を構成要素とする転置インデックスを記憶する記憶手段と、
    検索文字列がk文字以上のときは、N=kのNグラムを使用して、前記検索文字列からNグラムを抽出し、前記検索文字列がk文字未満のときは、前記検索文字列をNグラムとして抽出するNグラム抽出手段と、
    検索文字列がk文字以上のときは、前記検索文字列から抽出されたNグラムについて、前記転置インデックスの出現位置情報に基づいて、前記複数の文書データのうちから前記検索文字列を含む文書データを特定し、前記検索文字列がk文字未満のときは、前記転置インデックスの出現文書番号に基づいて、前記複数の文書データのうちから前記検索文字列を含む文書データを特定する文書特定手段と、
    備えることを特徴とする検索装置。
  2. 前記転置インデックスは、前記複数の文書データから抽出されたNグラムのそれぞれについて、前記複数の文書データ中の出現頻度情報をさらに構成要素とし、
    前記文書特定手段は、前記出現頻度情報に基づいて、前記検索文字列から抽出されたNグラムのうち、出現頻度の少ないNグラムから順に、文書データの特定に用いる、
    とを特徴とする請求項に記載の検索装置。
  3. 複数の検索文字列の論理積による検索の場合に、前記文書特定手段は、前記転置インデックスの出現頻度情報に基づいて、出現頻度の少ないNグラムを有する検索文字列から順に、文書データの特定に用いる、
    とを特徴とする請求項に記載の検索装置。
  4. 検索対象の複数の文書データから抽出された「N文字の文字列であるNグラム(Nは自然数)」のうち、N=1〜k−1のk−1個のNグラムについては当該Nグラムが含まれる出現文書番号を構成要素とし、N=kのNグラムについては前記複数の文書データ中の出現位置情報を構成要素とする転置インデックスを記憶する記憶手段を備えるコンピュータを、
    検索文字列がk文字以上のときは、N=kのNグラムを使用して、前記検索文字列からNグラムを抽出し、前記検索文字列がk文字未満のときは、前記検索文字列をNグラムとして抽出するNグラム抽出手段、
    検索文字列がk文字以上のときは、前記検索文字列から抽出されたNグラムについて、前記転置インデックスの出現位置情報に基づいて、前記複数の文書データのうちから前記検索文字列を含む文書データを特定し、前記検索文字列がk文字未満のときは、前記転置インデックスの出現文書番号に基づいて、前記複数の文書データのうちから前記検索文字列を含む文書データを特定する文書特定手段、として機能させるためのコンピュータプログラム。
JP2010102367A 2010-04-27 2010-04-27 検索装置、ならびに、コンピュータプログラム Active JP5533197B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010102367A JP5533197B2 (ja) 2010-04-27 2010-04-27 検索装置、ならびに、コンピュータプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010102367A JP5533197B2 (ja) 2010-04-27 2010-04-27 検索装置、ならびに、コンピュータプログラム

Publications (2)

Publication Number Publication Date
JP2011232942A JP2011232942A (ja) 2011-11-17
JP5533197B2 true JP5533197B2 (ja) 2014-06-25

Family

ID=45322202

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010102367A Active JP5533197B2 (ja) 2010-04-27 2010-04-27 検索装置、ならびに、コンピュータプログラム

Country Status (1)

Country Link
JP (1) JP5533197B2 (ja)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3849274B2 (ja) * 1998-01-14 2006-11-22 富士ゼロックス株式会社 文書検索装置および記録媒体
JP4115048B2 (ja) * 1999-08-17 2008-07-09 株式会社リコー 文書検索システム
JP2006163623A (ja) * 2004-12-03 2006-06-22 Nippon Hoso Kyokai <Nhk> 質問応答装置及び質問応答プログラム、並びに、テレビ受像機
JP4237813B2 (ja) * 2008-05-26 2009-03-11 株式会社東芝 構造化文書管理システム

Also Published As

Publication number Publication date
JP2011232942A (ja) 2011-11-17

Similar Documents

Publication Publication Date Title
Bennani-Smires et al. Simple unsupervised keyphrase extraction using sentence embeddings
US9195738B2 (en) Tokenization platform
KR100721406B1 (ko) 카테고리별 검색 로직을 이용한 상품 검색 시스템 및 방법
US8577882B2 (en) Method and system for searching multilingual documents
CN104462085B (zh) 检索关键词纠错方法及装置
US20070055493A1 (en) String matching method and system and computer-readable recording medium storing the string matching method
JP2007004633A (ja) 言語モデル作成装置およびそれにより作成された言語モデルを使用する言語処理装置
JP5115741B2 (ja) 検索方法、類似度計算方法、類似度計算及び同一文書照合システムと、そのプログラム
WO2008145055A1 (fr) Procédé pour obtenir une information de mot de restriction et pour optimiser le système du procédé d&#39;entrée et de sortie
CN109800427B (zh) 一种分词方法、装置、终端及计算机可读存储介质
CN105653697B (zh) 一种推荐词检索方法及系统
WO2018156351A1 (en) Corpus specific generative query completion assistant
CN112784009A (zh) 一种主题词挖掘方法、装置、电子设备及存储介质
JP5083367B2 (ja) 検索装置、検索方法、ならびに、コンピュータプログラム
JP2010134922A (ja) 類似語決定方法およびシステム
CN101470701A (zh) 支持基于有限状态机的语义规则的文本分析器及其方法
JP5869948B2 (ja) パッセージ分割方法、装置、及びプログラム
JP2009086903A (ja) 検索サービス装置
US20220253604A1 (en) Context-based keyphrase extraction from input text
JP5533197B2 (ja) 検索装置、ならびに、コンピュータプログラム
KR101694179B1 (ko) 모음 제거 기반 인덱스 생성 방법 및 장치
JP2002297660A (ja) 文字列類似度算出方法、装置、プログラム及び記録媒体
CN113330430B (zh) 语句结构向量化装置、语句结构向量化方法及记录有语句结构向量化程序的记录介质
JP5601123B2 (ja) Nグラム検索のための転置インデックスの生成方法および生成装置、当該転置インデックスを用いた検索方法および検索装置、ならびに、コンピュータプログラム
JP5601116B2 (ja) Nグラム検索のための転置インデックスの生成方法および生成装置、当該転置インデックスを用いた検索方法および検索装置、ならびに、コンピュータプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130412

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131218

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140114

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140313

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140401

R150 Certificate of patent or registration of utility model

Ref document number: 5533197

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140414