JP4950755B2 - 文書検索方法及び装置並びにそのコンピュータプログラム - Google Patents

文書検索方法及び装置並びにそのコンピュータプログラム Download PDF

Info

Publication number
JP4950755B2
JP4950755B2 JP2007130321A JP2007130321A JP4950755B2 JP 4950755 B2 JP4950755 B2 JP 4950755B2 JP 2007130321 A JP2007130321 A JP 2007130321A JP 2007130321 A JP2007130321 A JP 2007130321A JP 4950755 B2 JP4950755 B2 JP 4950755B2
Authority
JP
Japan
Prior art keywords
query
regular expression
formal name
processed
symbol part
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.)
Expired - Fee Related
Application number
JP2007130321A
Other languages
English (en)
Other versions
JP2008287394A (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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2007130321A priority Critical patent/JP4950755B2/ja
Publication of JP2008287394A publication Critical patent/JP2008287394A/ja
Application granted granted Critical
Publication of JP4950755B2 publication Critical patent/JP4950755B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Machine Translation (AREA)
  • Document Processing Apparatus (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は検索装置に入力された検索対象となる文字列としてのクエリから、その同義の正規表現を生成して正規表現辞書作成を行い、質問拡張及び表記統一を行い、検索精度の向上及び、検索結果の表記ゆれ吸収を同時に可能にすることを特徴とした文書検索方法及び装置並びにそのコンピュータプログラムに関するものである。
従来、文書検索装置では、検索者が検索対象となる文字列としてのクエリを入力すると文書データべースから該当クエリを含む文書を検索する。従来の文書検索装置では、検索者がクエリを入力すると、該当クエリを有する文書だけでなく、該当クエリの表記ゆれを有する文書もあわせて検索して文書の検索漏れを防止する機能が付加される事が多い。表記ゆれを吸収するため、検索装置は同義語辞書を用いる。その辞書は、クエリを拡張するだけでなく、検索された各文書に含まれるクエリの表記ゆれを吸収する際にも必要となる。
例えば、非特許文献1に記載されている質問応答システムでは、ユーザの質問文と知識データベースのテキストの表現のずれを、同義語や同義フレーズをグループ化した同義語辞書を用いて吸収している。この質問応答システムは、質問キーワードに対してその答えの元となるテキストを文書集合から検索するため、キーワードに対して適合するテキストを探すというタスクにおいて検索システムと等しい。また、この質問応答システムが、質問文と回答を含むテキスト中の表現のずれを吸収するために同義語辞書を用いる際には、クエリとその表記ゆれを含む表現からなる集合全てを展開した状態で辞書に登録する必要がある。文献1では919グループの同義表現、3512語、217フレーズが登録されている同義語辞書を、手作業で作成している。
大規模テキスト知識ベースに基づく自動質問応答−ダイアログナビ−、清田陽司,黒橋禎男,木戸冬子、自然言語処理 Vol.10 No.4 2003
しかしながら、表記ゆれ表現を含む辞書を作るには、以下のような課題がある。
・表記ゆれを含む表現パターンは無数にあるため、全てを登録すると辞書サイズが非常に大きくなってしまう。
・新しい単語や、表記ゆれは日々生成され続けているので、ある時点での表現を集めただけでは足りない場合がある。また、スピードある対応が必要になる。
・手作業で作成するには膨大な時間及びコストがかかってしまう。
上記のような課題は、英数記号を含む文字列によって構成される製品名でより顕著である。
本発明は上記の問題点に鑑みてなされたもので、検索時の精度向上及び検索結果の表記ゆれ吸収を可能にする文書検索方法及び文書検索装置並びにそのコンピュータプログラムを提供することを目的とする。
本発明は上記の目的を達成するために、単語の正式名称と該正式名称の正規表現とを対にした情報をエントリとして持つ正式名称/正規表現辞書のデータベースと、検索対象となる文字列としてのクエリの正規表現作成時に変換規則として用いる任意に登録可能な変換リストのデータベースと、前記クエリの正規表現作成時に挿入する文字や記号を任意に登録できる挿入リストのデータベースとを備えたコンピュータ装置からなる文書検索装置に対してクエリを入力すると、前記文書検索装置が、文書データベースに格納されている複数の文書データの中から前記クエリを拡張したクエリ群を含む文書データを抽出して、該抽出結果を出力する文書検索方法であって、前記文書検索装置は、入力された前記検索対象となる文字列をクエリとして受け付け、受け付けたクエリと正式名称/正規表現辞書のエントリとを比較して、正式名称/正規表現辞書のエントリの正規表現に一致するものがあるか否かを判定し、前記受け付けたクエリと正式名称/正規表現辞書のエントリの正規表現が一致したときは、一致したエントリの正規表現を前記受け付けたクエリの正規表現とし、前記受け付けたクエリと正式名称/正規表現辞書のエントリの正規表現が一致しないときは、受け付けたクエリを文字種の異なる境界で分割して配列要素とし、前記配列要素が変換リストの表現と一致するか否かを判定し、前記配列要素が変換リストの表現と一致するときは該配列要素を前記一致した変化リストのエントリに変更し、前記配列要素が変換リストの表現と一致しないときは、前記配列要素がアルファベットを含むか否かを判定し、前記配列要素がアルファベットを含むときは、前記配列要素を、そのまま、或いは、全て大文字、或いは、全て小文字、或いは、先頭だけ大文字、に変換するとともに、配列要素中に重複が出た場合は重複部分を削除し、前記挿入リストをカンマで区切ったものの最後に「?」の文字を付け足して1つの要素とし、該要素を配列要素間に挿入して配列要素をつなげて前記受け付けたクエリの正規表現を作成し、前記作成した正規表現に一致する正式名称が正式名称/正規表現辞書にあるときは該正式名称を前記受け付けたクエリの正式名称として特定し、前記作成した正規表現に一致する正式名称が正式名称/正規表現辞書にないときは前記受け付けたクエリを正式名称として特定し、前記受け付けたクエリに対応して作成された前記正規表現のうち記号部分以外の全展開を行い、正規表現中の展開前の記号部分ごとに処理対象となっている記号部分の前または後ろの文字が記号であるか否かを判定し、処理対象となっている記号部分の前または後ろの文字が記号である場合は処理中の情報をコピーして、処理中の記号部分の前後の記号を削除し、処理対象となっている記号部分の前または後ろの文字が記号でない場合は、処理対象となっている記号部分の前または後ろの何れかの文字がクエリの先頭または終端であるか否かを判定し、処理対象となっている記号部分の前または後ろの何れかの文字がクエリの先頭または終端だった場合は、処理中の記号部分を展開せず削除し、処理対象となっている記号部分の前または後ろの何れかの文字がクエリの先頭または終端でない場合は、処理中の記号部分を展開した後、展開の終わったクエリのうち、先に生成したクエリと重複が生じたものは削除することによってクエリの拡張をおこなってクエリ群を作成し、拡張された前記クエリ群を用いて文書検索を行い、当該クエリ群を含む文書データを抽出し、前記特定された正式名称と該正式名称に対応する正規表現とを用いて、前記抽出された文書データ中に含まれるクエリの表記を統一し、表記統一された文書データの情報を出力する文書検索方法を提案する。
本発明の文書検索方法によれば、入力された英数記号列を含むクエリから正規表現で記述した表記ゆれパターンを自動的に生成し、その正規表現と正式名称を対にして辞書に登録することにより、検索時のクエリの拡張及び、検索結果の表記の統一を行う。
すなわち、本発明では
1.入力されたクエリの、様々な表記ゆれを含む表現を正規表現として記述し、辞書に登録する。
2.正規表現を全展開することで、考えられる全ての表記ゆれを含む正規表現を自動生成する。
3.新たな表記ゆれを発見した場合は、自動的に辞書中の正規表現を更新する。
を、英数記号を含む文字列を対象に行う。
このように正規表現を用いることにより、辞書ヘの登録単語数を削減することができ、1つの辞書をクエリ拡張と表記ゆれ吸収両方に使用可能であり、辞書サイズを縮小することができる。
また、考えられる全ての表記ゆれを含む表現を自動生成することにより、新語への対応スピード、網羅性共に向上が見込めると同時に、コストの削減にもなる。
さらに、入力されたクエリと正式名称、どちらも正規表現で記述するため、正式名称とは違うクエリが入力されても特定できる可能性が高い。
また、本発明は上記の文書検索方法を適用した文書検索装置、すなわち、検索対象となる文字列としてのクエリを入力すると、文書データベースに格納されている複数の文書データの中から前記クエリを拡張したクエリ群を含む文書データを抽出して、該抽出結果を出力する文書検索装置であって、入力された前記検索対象となる文字列をクエリとして受け付ける入力手段と、単語の正式名称と該正式名称の正規表現とを対にした情報をエントリとして持つ正式名称/正規表現辞書のデータベースと、前記クエリの正規表現作成時に変換規則として用いる任意に登録可能な変換リストのデータベースと、前記クエリの正規表現作成時に挿入する文字や記号を任意に登録できる挿入リストのデータベースと、受け付けたクエリと正式名称/正規表現辞書のエントリとを比較して、正式名称/正規表現辞書のエントリの正規表現に一致するものがあるか否かを判定し、前記受け付けたクエリと正式名称/正規表現辞書のエントリの正規表現が一致したときは、一致したエントリの正規表現を前記受け付けたクエリの正規表現とし、前記受け付けたクエリと正式名称/正規表現辞書のエントリの正規表現が一致しないときは、受け付けたクエリを文字種の異なる境界で分割して配列要素とし、前記配列要素が変換リストの表現と一致するか否かを判定し、前記配列要素が変換リストの表現と一致するときは該配列要素を前記一致した変化リストのエントリに変更し、前記配列要素が変換リストの表現と一致しないときは、前記配列要素がアルファベットを含むか否かを判定し、前記配列要素がアルファベットを含むときは、前記配列要素を、そのまま、或いは、全て大文字、或いは、全て小文字、或いは、先頭だけ大文字、に変換するとともに、配列要素中に重複が出た場合は重複部分を削除し、前記挿入リストをカンマで区切ったものの最後に「?」の文字を付け足して1つの要素とし、該要素を配列要素間に挿入して配列要素をつなげて前記受け付けたクエリの正規表現を作成し、前記作成した正規表現に一致する正式名称が正式名称/正規表現辞書にあるときは該正式名称を前記受け付けたクエリの正式名称として特定し、前記作成した正規表現に一致する正式名称が正式名称/正規表現辞書にないときは前記受け付けたクエリを正式名称として特定する正式名称特定手段と、前記受け付けたクエリに対応して作成された前記正規表現のうち記号部分以外の全展開を行い、正規表現中の展開前の記号部分ごとに処理対象となっている記号部分の前または後ろの文字が記号であるか否かを判定し、処理対象となっている記号部分の前または後ろの文字が記号である場合は処理中の情報をコピーして、処理中の記号部分の前後の記号を削除し、処理対象となっている記号部分の前または後ろの文字が記号でない場合は、処理対象となっている記号部分の前または後ろの何れかの文字がクエリの先頭または終端であるか否かを判定し、処理対象となっている記号部分の前または後ろの何れかの文字がクエリの先頭または終端だった場合は、処理中の記号部分を展開せず削除し、処理対象となっている記号部分の前または後ろの何れかの文字がクエリの先頭または終端でない場合は、処理中の記号部分を展開した後、展開の終わったクエリのうち、先に生成したクエリと重複が生じたものは削除することによってクエリの拡張をおこなってクエリ群を作成するクエリ拡張手段と、拡張された前記クエリ群を用いて文書検索を行い、当該クエリ群を含む文書データを抽出する文書検索手段と、前記正式名称特定手段により特定された正式名称と該正式名称に対応する正規表現とを用いて、前記抽出された文書データ中に含まれるクエリの表記を統一する表記統一手段と、表記統一された文書データの情報を出力する出力手段とを備えた文書検索装置を提案する。
さらに、本発明は、コンピュータ装置を上記文書検索装置として動作させるためのコンピュータプログラムとして、単語の正式名称と該正式名称の正規表現とを対にした情報をエントリとして持つ正式名称/正規表現辞書のデータベースと、検索対象となる文字列としてのクエリの正規表現作成時に変換規則として用いる任意に登録可能な変換リストのデータベースと、前記クエリの正規表現作成時に挿入する文字や記号を任意に登録できる挿入リストのデータベースとを備えたコンピュータ装置からなる文書検索装置に対してクエリを入力すると、前記文書検索装置が、文書データベースに格納されている複数の文書データの中から前記クエリを拡張したクエリ群を含む文書データを抽出して、該抽出結果を出力する前記文書検索装置を動作させるコンピュータプログラムであって、入力された前記検索対象となる文字列をクエリとして受け付けるステップと、受け付けたクエリと正式名称/正規表現辞書のエントリとを比較して、正式名称/正規表現辞書のエントリの正規表現に一致するものがあるか否かを判定するステップと、前記受け付けたクエリと正式名称/正規表現辞書のエントリの正規表現が一致したときは、一致したエントリの正規表現を前記受け付けたクエリの正規表現とするステップと、前記受け付けたクエリと正式名称/正規表現辞書のエントリの正規表現が一致しないときは、受け付けたクエリを文字種の異なる境界で分割して配列要素とするステップと、前記配列要素が変換リストの表現と一致するか否かを判定するステップと、前記配列要素が変換リストの表現と一致するときは該配列要素を前記一致した変化リストのエントリに変更するステップと、前記配列要素が変換リストの表現と一致しないときは、前記配列要素がアルファベットを含むか否かを判定するステップと、前記配列要素がアルファベットを含むときは、前記配列要素を、そのまま、或いは、全て大文字、或いは、全て小文字、或いは、先頭だけ大文字、に変換するとともに、配列要素中に重複が出た場合は重複部分を削除し、前記挿入リストをカンマで区切ったものの最後に「?」の文字を付け足して1つの要素とし、該要素を配列要素間に挿入して配列要素をつなげて前記受け付けたクエリの正規表現を作成するステップと、前記作成した正規表現に一致する正式名称が正式名称/正規表現辞書にあるときは該正式名称を前記受け付けたクエリの正式名称として特定するステップと、前記作成した正規表現に一致する正式名称が正式名称/正規表現辞書にないときは前記受け付けたクエリを正式名称として特定するステップと、前記受け付けたクエリに対応して作成された前記正規表現のうち記号部分以外の全展開を行うステップと、正規表現中の展開前の記号部分ごとに処理対象となっている記号部分の前または後ろの文字が記号であるか否かを判定するステップと、処理対象となっている記号部分の前または後ろの文字が記号である場合は処理中の情報をコピーして、処理中の記号部分の前後の記号を削除するステップと、処理対象となっている記号部分の前または後ろの文字が記号でない場合は、処理対象となっている記号部分の前または後ろの何れかの文字がクエリの先頭または終端であるか否かを判定するステップと、処理対象となっている記号部分の前または後ろの何れかの文字がクエリの先頭または終端だった場合は、処理中の記号部分を展開せず削除するステップと、処理対象となっている記号部分の前または後ろの何れかの文字がクエリの先頭または終端でない場合は、処理中の記号部分を展開した後、展開の終わったクエリのうち、先に生成したクエリと重複が生じたものは削除することによってクエリの拡張をおこなってクエリ群を作成するステップと、拡張された前記クエリ群を用いて文書検索を行い、当該クエリ群を含む文書データを抽出するステップと、前記特定された正式名称と該正式名称に対応する正規表現とを用いて、前記抽出された文書データ中に含まれるクエリの表記を統一するステップと、表記統一された文書データの情報を出力するステップとを含むコンピュータプログラムを提案する。
本発明の文書検索方法及び文書検索装置によれば、正規表現を用いることにより、辞書ヘの登録単語数を削減することができ、1つの辞書をクエリ拡張と表記ゆれ吸収両方に使用可能であり、辞書サイズを縮小することができる。また、考えられる全ての表記ゆれを含む正規表現を自動生成することにより、新語への対応スピード、網羅性共に向上が見込めると同時に、コストの削減にもなる。さらに、入力されたクエリと正式名称、どちらも正規表現で記述するため、正式名称とは違うクエリが入力されても特定できる可能性が高まるという非常に優れた効果を奏する。
また、本発明のコンピュータプログラムを用いることにより、任意のコンピュータ装置によって本発明の文書検索方法を実施する文書検索装置を容易に構成することができるという非常に優れた効果を奏するものである。
以下、図面を参照して本発明の一実施形態を説明する。
図1は本発明の一実施形態における文書検索装置の機能ブロック図である。図において、10は所定のコンピュータプログラムによって動作するコンピュータ装置からなる文書検索装置で、入力部1と、質問拡張部2、正式名称/正規表現辞書31が格納されているデータベース3、変換リスト41が格納されているデータベース4、挿入リスト51が格納されているデータベース5、文書検索部6、表記統一部7、出力部8を備えている。これらの各構成部はコンピュータ装置のハードウェアとソフトウェアの双方によって構成されている。
詳細は後述するとして、ここでは先に概要を述べる。
入力部1では任意の形式で検索するクエリを受け付ける。質問拡張部2ではクエリが数字、アルファベット、記号、その他の文字種のうち2種以上を含む場合は複数の同義表現に拡張しその拡張したクエリ群を、そうでない場合はクエリをそのままの状態で文書検索部6へ出力する。文書検索部6では質問拡張部2の出力を含む文書を検索し、その結果である文書集合を表記統一部7へ渡す。表記統一部7では、クエリ拡張されている場合に限り、文書検索部6の返してきた文書データの集合に含まれる入力クエリの表記を統一し、文書データの集合を出力部8ヘ渡す。出力部8では処理結果を任意の形で出力する。
尚、入力部1及び出力部8における入出力方法や文書検索部4での検索方法については周知の既存技術(例えば、非特許文献2:情報の科学と技術 Vol.54 2004 No.2、特集インターネット検索エンジン、検索エンジンのアルゴリズム(兼宗進)(p78〜p83)、検索エンジンのアーキテクチャ(山名早人)(p84〜p89)に開示される技術)を使用することとする。
また、ここでの正規表現はPerlで書くことを例に説明を行っている。よって、他の表現を用いる場合には、その手法に準じる。また、正規表現の中でも“.*”や“.+”などの、“任意の文字を任意の数繰り返す”不確定な要素を含む表現は用いない。また、Perlの表現とは異なるが、空白記号を表現するのに便宜上“”を用いる。
本装置10を使用する際には、事前の設定(辞書登録機能)を行う必要がある。
すなわち、ユーザは検索装置10を利用するときに、辞書の更新(新語の登録および、正規表現拡張)を行うかどうかの「辞書登録機能」を、設定ファイルなどを用いて選択できるようにしておく。
本装置10を初めて使用する際などに、正式名称/正規表現辞書31を作成する必要がある場合には、「辞書登録機能」をONにしておかなければならない。
本装置10をクエリの拡張のみに使用する場合や、辞書登録されては困るような表記ゆれ表現をクエリとして用いる場合などには、「辞書登録機能」をOFFにすることもできる。
また、クエリの拡張に使用する変換規則や記号などは、変換リスト41、挿入リスト51にあらかじめ設定しておくことができる。
次に、本装置10の各構成部の動作を詳細に説明する。
入力部1は、ユーザが任意の形式で入力した検索対象となる文字列を取得し、この文字列をクエリとして受け付け、受け付けたクエリを質問拡張部2へ渡す。尚、クエリは文字列で構成される。
質問拡張部2は、例えば図2に示すように入力判別部21と、正式名称特定部22、クエリ拡張部23とから構成され、正式名称/正規表現辞書31と、変換リスト41、挿入リスト51を用いて処理を行う。
正式名称/正規表現辞書31は、単語の同義表現の集合を正規表現で現して、単語の正式名称と対にしたものを1エントリとする辞書である。図3に正式名称/正規表現辞書31の一例を示す。
変換リスト41は、同義表現を多数もつブランド名や、削除しても意味の変化が生じないと思われる記号などを登録したリストである。同義表現を多く持つブランド名のようなエントリは、同義表現集合を1つのエントリとして変換項目に登録する。例えば図4のエントリ1〜4では(表現1,表現2,表現3)のように、変換項目の同義表現を「,(カンマ)」で区切った。また、削除のみ可能なエントリはエントリ5の(&)のように1エントリ1表現で登録する。
挿入リスト5のエントリに登録した表現は、クエリを、表記ゆれを含む表現へと拡張する際に用いられる。よって、挿入リスト5には、表記ゆれ表現に頻繁に使用される空白記号やハイフンなど、クエリ拡張の際に挿入したい記号を登録しておく。挿入リスト5の一例を図5に示す。図5の挿入リスト5においては、エントリ1の挿入項目として「“”(空白記号)」が登録され、エントリ2の挿入項目として「-(ハイフン)」が登録されている。
入力判別部21は、入力部1から入力したクエリが(アルファべット、数字、記号)のうちどれかを含み、2種類以上の文字種で構成されている場合は正式名称特定部22へクエリを出力する。そうでない場合は文書検索部6へクエリを出力する。
正式名称特定部22は、正式名称/正規表現辞書31と、変換リスト41、挿入リスト51を用いて、図6に示す処理を行う。ここでの処理には事前の設定で行った「辞書登録機能」のON/OFFの情報が必要となるため、あらかじめその情報を取り込んでおきステップ(22s26),(22s27)の処理で使用する。
ここで、正式名称特定部22が行う処理の詳細を図6及び図7のフローチャートを参照して説明する。
正式名称特定部22は、入力判別部21から受け取ったクエリと正式名称/正規表現辞書31のエントリとを比較し、正式名称/正規表現辞書31のエントリの正規表現に一致するものがあるか否かを判定し(22s1)、一致するものがあった場合には、ステップ(22s3)の処理へ進み、一致したエントリの正規表現をクエリ拡張部23へ出力する。また、一致するものがなかった場合は、ステップ(22s2)の処理へ進み正規表現作成を行う。
ステップ(22s2)の正規表現作成の詳細処理は図7に示すとおりであり、まずクエリを文字種の異なる境界で分割し、配列の要素とする(22s21)。このとき、空白記号は要素とせず削除する。次にルール適用処理を行う(22s22)。このルール適用処理(22s22)の詳細は図8に示すとおりであり、この処理には変換リスト41を用いる。
すなわち、ルール適用処理(22s22)では,ステップ(22s221)からステップ(22s226)の処理を、ステップ(22s21)で作成した配列の要素毎に繰り返し、全要素を調べたら繰り返しを終了する。
ステップ(22s222)では、配列要素が変換リストの表現と一致するか否かを判定し、一致する場合はステップ(22s223)の処理へ、そうでない場合はステップ(22s224)の処理へと進む。
ステップ(22s223)では、配列要素を(一致したエントリ,?)に変更して、ステップ(22s224)の処理へ進む。
ステップ(22s224)では、配列要素がアルファベットを含むか否かを判定し,アルファべットを含む場合はステップ(22s225)の処理へ、そうでない場合はステップ(22s226)ヘ処理を進める。
ステップ(22s225)では、配列要素を(そのまま、全て大文字、全て小文字、先頭だけ大文字)に変換し、要素中に重複が出た場合は重複部分を削除する。この後、ステップ(22s226)の処理へ進む。
ステップ(22s226)では、配列の全要素を調べ終わったら処理を終了して、ステップ(22s2)における記号挿入処理のステップ(22s23)の処理へ進む。
記号挿入処理のステップ(22s23)では、挿入リスト51を「,(カンマ)」で区切ったものの最後に「?」の文字を付け足して1要素とし、クエリ配列要素間に挿入した後、ステップ(22s24)の処理へ進む。
正規表現作成処理のステップ(22s24)では、配列要素をつなげて、正規表現を作成する。この処理の詳細を図9のフローチャートに示す。
すなわち、ステップ(22s24)の処理では、配列の要素ごとにステップ(22s241)〜(22s248)までの処理を繰り返す。
ステップ(22s242)では1要素中の「,(カンマ)」で区切られた文字が全て1文字であるか否かを判定し,1文字である場合はステップ(22s243)の処理へ、そうでない場合はステップ(22s244)の処理へ進む。
ステップ(22s243)では、「,(カンマ)」を削除し、「()」の文字を「[]」の文字へ変換して、ステップ(22s245)の処理へ進む。
ステップ(22s244)では、「,(カンマ)」を「|(パイプ)」へ変換して、ステップ(22s245)の処理へ進む。
ステップ(22s245)では、要素の最後に「?」の文字を含むか否かを調べ、要素の最後に「?」の文字を含む場合はステップ(22s246)の処理へ、要素の最後に「?」の文字を含まない場合はステップ(22s247)の処理へ進む。
ステップ(22s246)では、要素の外側の括弧の右外へ「?」の文字を移し、ステップ(22s247)の処理へ進む。
ステップ(22s247)では、全ての要素の処理が終わったら、ステップ(22s248)の処理へ進む。
ステップ(22s248)では、全要素をつなげて文字列とし、処理を終了する。この後、ステップ(22s25)の処理へと進む。
ステップ(22s25)では、作成した正規表現に一致する正式名称が正式名称/正規表現辞書31にあるか否かを調べる。この結果、作成した正規表現に一致する正式名称が正式名称/正規表現辞書31にある場合はステップ(22s26)の処理へ、ない場合はステップ(22s27)の処理へ進む。
ステップ(22s26)は、上記一致した正式名称に対応する正規表現を新しく作成した正規表現を含む形で拡張し、辞書登録機能がONのときにはこれを登録する。このステップ(22s26)の処理の詳細を図10のフローチャートを参照して説明する。ステップ(22s26)の処理では、図10に示すように、ステップ(22s161)〜(22s2610)の処理を行う。
ステップ(22s261)では、2つの正規表現を、括弧表現の対を単位にして区切り、配列に格納する。このとき括弧表現がついていない部分には「()」の文字を付けてから格納する。この後、ステップ(22s262)の処理へ進む。
ステップ(22s262)では、2つの正規表現間で完全一致する要素を探し、そこを境界に一致しない要素のまとまり同士を前から比較していく。この後、ステップ(22s263)の処理へ進む。
ステップ(22s263)では、ステップ(22s262)で抽出した2つの正規表現間で一致しない要素のまとまり同士の中でも部分一致する部分を探す。この後、ステップ(22s264)の処理へ進む。
ステップ(22s264)では、要素内の1部分が異なるか否かを判定し,要素内の1部分だけ異なり他の部分は一致する場合にはステップ(22s265)の処理へ、それ以外はステップ(22s267)の処理へ進む。
ステップ(22s265)では、要素内の異なる部分が一文字であるか否かを判定し、要素内の異なる部分が一文字の場合はステップ(22s266)の処理へ、それ以外の場合はステップ(22s268)の処理へ進む。
ステップ(22s266)では、要素を囲む括弧が「[]」の文字のときは不一致文字を中に付け足し、「()」の文字のときは「|(パイプ)」の文字でつなぐ。この後,ステップ(22s269)の処理へ進む。
ステップ(22s267)は、ステップ(22s264)の判定の結果、一致する要素がない場合の処理なので、それぞれの要素の括弧の外側へ「?」の文字をつけてから元の位置ヘ挿入する。この後、ステップ(22s269)の処理へ進む。
ステップ(22s268)では、「[]」の文字のときはこれを「()」の文字に変えて「|(パイプ)」の文字でつなぐ。この後、ステップ(22s269)の処理へ進む。
ステップ(22s269)では、ステップ(22s262)の処理で検出した一致しない部分の全て(異なる部分の全て)を比較し終えたら繰り返し処理を終了して、ステップ(22s2610)の処理へ進む。
ステップ(22s2610)では、前述した「辞書登録機能」がONの場合は、図3に示した正式名称/正規表現辞書31の対応するエントリの正規表現を新たに作った正規表現に登録しなおしてからステップ(22s26)の処理を終了する。
ステップ(22s26)の処理を終了したら、ステップ(22s2)の処理を終了して、ステップ(22s23)の処理へ進む。
ステップ(22s27)では、もし辞書登録機能がONの場合には、入力されたクエリを正式名称として、作成した正規表現とセットで図3に示した正式名称/正規表現辞書31の新しいエントリとして登録する。そうしてステップ(22s2)の処理を終えたら、ステップ(22s3)の処理ヘ進む。
ステップ(22s3)では、ステップ(22s2)の正規表現作成処理が終わったら、辞書に登録されていた、または新しく作成した正式名称と正規表現の対をクエリ拡張部23へ出力して処理を終了する。
クエリ拡張部23は、上記作成された正規表現を用いてクエリの拡張を行ってクエリ群を作成する。クエリ拡張部23の処理の詳細は図11のフローチャートに示すとおりで、ステップ(23s1)〜(23s9)の処理を行う。
ステップ(23s1)では、正式名称特定部23が出力した正規表現のうち、記号部分以外の全展開を行い、ステップ(23s2)の処理へ進む。
ステップ(23s2)〜(23s8)では、正規表現中の展開前の記号部分ごとにこれらの全ての処理を進める。
ステップ(23s3)では、処理対象となっている記号部分の前または後ろの文字が記号であるか否かを判定し、処理対象となっている記号部分の前または後ろの文字が記号である場合は処理中の情報をコピーして、ステップ(23s4)及びステップ(23s6)の処理を並行して進める。それ以外の場合はステップ(23s7)の処理を行う。
ステップ(23s4)では、処理中の記号部分の前後の記号を削除して、ステップ(23s3)の処理へ戻る。
ステップ(23s 5)では、処理対象となっている記号部分の前または後ろの何れかの文字がクエリの先頭または終端であるか否かを判定し、処理対象となっている記号部分の前または後ろの何れかの文字がクエリの先頭または終端だった場合にステップ(23s6)の処理を、それ以外の場合はステップ(23s7)の処理を行う。
ステップ(23s6)では、処理中の記号部分を展開せず削除して、ステップ(23s2)の処理へ進み次の記号部分の処理へ移る。
ステップ(23s7)では、処理中の記号部分を展開して、ステップ(23s8)の処理へと進む。
ステップ(23s8)では、正規表現中に含まれる記号部分を全て処理し終えたら繰り返し処理を終了し、ステップ(23s 9)の処理へ進む。
ステップ(23s 9)では、展開の終わったクエリのうち、先に生成したクエリと重複が生じたものは削除して、処理を終了する。
クエリ拡張部23は、展開し終えたクエリの同義表現集合と、その正式名称、正規表現を文書検索部6へ渡す。また、クエリ拡張部23は、クエリ拡張を行わなかった場合にはクエリのみを文書検索部6に渡す。
以上で質問拡張部2の処理は終了となる。
文書検索部6は、質問拡張部2から、[クエリのみ]またはクエリの[正式名称、正規表現、同義表現集合]を受け取る。そして、前者の場合はクエリを用いて、後者の場合はクエリの同義表現集合を用いて、周知の既存技術を用いて文書検索処理を行い、文書データベース100に蓄積されている複数の文書データの中から該当する文書データを抽出する。そして検索結果の文書データのリストと、正式名称、正規表現がある場合はそれも、表記統一部7へと出力する。
表記統一部7は、図12に示すように、出力判別部71と統一部72とから構成されており、質問拡張部2において質問拡張を行った場合は検索結果とクエリの正式名称とその正規表現を文書検索部6から受け取る。質問拡張部2において質問拡張を行わなかった場合は検索結果のみを文書検索部6から受け取る。
出力判別部71は、文書検索部6から受け取ったのが検索結果のみだった場合は何もせずそのまま出力部8へ検索結果を渡す。また、出力判別部71は、文書検索部6から検索結果に加えて正式名称と正規表現も受け取った場合は統一部72へこれらを渡して処理を依頼する。
統一部72では、正規表現を用いて検索結果である文書データの集合中に含まれるクエリの表記ゆれを含む表現を探し、正式名称で書き換えを行う。そして、その結果を出力部8へ渡す。
出力部8は、任意の形式でクエリの表記が統一された文書データの情報を出力する。
次に、上記実施形態に関して具体例を用いた一実施例を詳細に説明する。
ここでは正規表現はPerlの表現にしたがっている。また、記号「“”」は空白記号(スペース)をあらわしている。
本実施例では、事前の設定(辞書登録機能)として、「辞書登録機能」をONにしておく。また、本実施例では文書検索装置10の入力部1へ検索対象となる文字列として「FOMA P902i」というクエリが入力されたものとして説明する。この場合、質問拡張部2で用いる正式名称/正規表現辞書31、変換リスト41、挿入リスト51としては、それぞれ前述した図3,4,5に示したものを例として用いる。
質問拡張部2の入力判別部21では、入力部1で受け付けたクエリ「FOMA P902i」を入力として受け取る。クエリ「FOMA P902i」はアルファべット、数字、空白記号からなるため、正式名称特定部22へクエリを出力する。
正式名称特定部22では、前述した図6に示す処理を行う。すなわち、正式名称特定部22は、ステップ(22s 1)では入力判別部21から受け取ったクエリ「FOMA P902i」は、図3に示す正式名称/正規表現辞書31のエントリの正規表現に一致するものがないのでステップ(22s2)ヘ進み、正規表現作成を行う。
ステップ(22s2)の正規表現作成処理では、変換リスト41と、挿入リスト51、正式名称/正規表現辞書31を用い、ステップ(22s21)において、まずクエリ「FOMA P902i」を文字種の異なる境界で分割し、[FOMA,P,902,i]とする。FOMAとPの間の“”(空白)は削除する。
次に、ステップ(22s22)でルール適用処理を行う。この処理には変換リスト41を用いる。
ステップ(22s221)では、ステップ(22s21)の処理で作成した配列[F0MA,P,902,i]の要素ごとにステップ(22s221)〜(22s226)の処理を繰り返す。このとき[F0MA]の処理から行う。
ステップ(22s222)では、配列要素[FOMA]が変換リスト41のエントリと一致するか否かを判定し、配列要素[FOMA]はエントリ1と一致するので、ステップ(22s223)の処理へと進む。
ステップ(22s223)では、配列要素[FOMA]を[(FOMA,フォーマ,?)]に変更して、ステップ(22s224)の処理へ進む。
ステップ(22s224)では、変更された配列要素(FOMA,フォーマ,?)はアルファべットを含むので、ステップ(22s225)へ処理を進める。
ステップ(22s225)の処理では、(FOMA,フォーマ,?)→(FOMA, FOMA,foma,Foma,フォーマ,?)→(FOMA,foma,Foma,フォーマ,?)となり、ステップ(22s226)の処理へ進む。
ステップ(22s226)では、全ての要素を調べていないので、ステップ(22s221)の処理へ戻る。
ステップ(22s221)では、次の配列要素[P]の処理を行う。
ステップ(22s222)では、配列要素[P]が変換リストと一致しないので、ステップ(22s224)の処理へ進む。
ステップ(22s224)では、配列要素[P]はアルファベットを含むので、ステップ(22s225)へ処理を進める。
ステップ(22s225)の処理では、P→(P,P,p,P)→(P,p)となり、ステップ(22s226)の処理へ進む。
ステップ(22s226)では、全ての要素を調べていないので、ステップ(22s221)の処理へ戻り、残りの[902],[i]も同様に処理を行い、全ての要素の処理を行うと最終的な配列要素は[(FOMA,foma,Foma,フォーマ,?),(P,p),902,(i,I)]となる。その時点で処理を終了し、ステップ(22s2)の正規表現作成処理のステップ(22s23)の処理ヘ進む。
ステップ(22s23)では、図5に示す挿入リスト51を「,(カンマ)」で区切ったもの[“”,-]の最後に「?」の文字を付け足して1要素[“”,-,?]としてクエリ配列要素間に挿入し、[FOMA,foma,Foma,フォーマ,?),(“”,-,?),(P,p),(“”,-,?),902,(“”,-,?),(i,I)]とした後、ステップ(22s24)の処理ヘ進む。
ステップ(22s24)では、配列要素をつなげて正規表現を作成する。すなわち、配列の要素ごとにステップ(22s241)〜(22s248)まで(FOMA,foma,Foma,フォーマ,?),(“”,-,?),(P,p),(“”,-,?),902,(“”,-,?),(i,I)の順に処理を7回繰り返す。まずは(FOMA, foma,Foma,フォーマ,?)の処理から行う。
ステップ(22s242)の処理では、(FOMA,foma,Foma,フォーマ,?)は1要素中の「,(カンマ)」で区切られた文字が全て1文字でないので、ステップ(22s244)の処理へ進む。
ステップ(22s244)では、「,(カンマ)」を「|(パイプ)」へ変換し、(FOMA|foma|Foma|フォーマ|?)とした後、ステップ(22s245)の処理へ進む。
ステップ(22s245)の処理では、配列要素(FOMA|foma|Foma|フォーマ|?)は配列要素の最後に「?」の文字があるので、ステップ(22s246)の処理へ進む。
ステップ(22s246)では、配列要素の外側の括弧の右外へ「?」の文字を移し、(FOMA|foma|Foma|フォーマ)?として、ステップ(22s247)の処理 へ進む。
ステップ(22s247)では、まだ全要素を調べていないので、ステップ(22s241)の処理へ戻る。
次に、ステップ(22s241)では、配列要素(“”,-,?)の処理を行う。
ステップ(22s242)の処理では、(“”,-,?)は、1要素中の「,(カンマ)」で区切られた文字が全て1文字であるので、ステップ(22s243)の処理へ進む。
ステップ(22s243)では、配列要素(“”,-,?)の「,(カンマ)」を削除して、「()」の文字を「[]」の文字ヘ変換し、配列要素[“”-?]とした後に、ステップ(22s245)の処理へ進む。
ステップ(22s245)では、配列要素[“”-?]は要素の最後に「?」の文字があるので、ステップ(22s246)の処理へ進む。
ステップ(22s246)では、要素の外側の括弧の右外ヘ「?」の文字を移し、[“”-]?とした後、ステップ(22s247)の処理へ進む。
ステップ(22s247)では、まだ全要素を調べていないので,ステップ(22s241)の処理へ戻り、残りの(P,p),(“”,-,?),902,(“”,-,?),(i,I)も同様にして処理を行う。全ての要素の処理が終わったら、ステップ(22s248)の処理へ進む。
ステップ(22s247)の処理において、全ての要素の処理が終わったと判断したら、繰り返し処理を終了して、ステップ(22s28)の処理へと進む。
ステップ(22s248)では、全ての要素の処理が終わったら、全要素をつなげて文字列(F0MA|Foma|foma)?[“”-]?[Pp][“”-]?902[“”-]?[iI]とし、ステップ(22s25)の処理へ進む。
ステップ(22s25)では、作成した正規表現に一致する正式名称「DoCoMo P902i」が図3の正式名称/正規表現辞書31のエントリ3にあるので、ステップ(22s26)の処理へ進む。
ステップ(22s26)では、一致した正式名称に対応する正規表現を、新しく作成した正規表現を含む形で拡張する。
ステップ(22s261)では、正式名称/正規表現辞書31中の正規表現(DoCoMo|Docomo|ドコモ)[“”-]?[Pp][“”-]902[“”-]?iと新しく作成した正規表現(FOMA|Foma|foma)?[“”-]?[Pp][“”-]?902[“”-]?[iI]の2つの正規表現を、括弧表現の対を単位にして区切り、配列に格納する。このとき括弧表現がついていない部分には()を付けてから格納するので、[(DoCoMo|Docomo|ドコモ),[“”-]?,[Pp],[“”-],(902),[“”-]?,(i)]と、[(FOMA|Foma|foma)?,[“”-]?,[Pp],[“”-]?,(902),[“”-]?,[iI]]となる。この後、ステップ(22s262)の処理へ進む。
ステップ(22s262)では、上記2つの正規表現間で一致する要素を探す。この結果、[[“”-]?,[Pp],[“”-],(902),[“”-]?]が一致しているので、一致部分の前後の要素のまとまり[(DoCoMo|Docomo|ドコモ)]と[(FOMA|Foma|foma)],[(i)]と[[iI]]を対象に以下のステップ(22s263)〜(22s268)の処理を繰り返し、前から比較していく。その際、挿入等の変更は新たに作成した配列(F0MA|Foma|foma)?[“”-]?[Pp][“”-]?902[“”-]?[iI]の要素に対して行う。まずは[(DoCoMo|Docomo|ドコモ)]と[(FOMA|Foma|foma)]の処理から行うためにステップ(22s263)ヘ進む。
ステップ(22s263)では、ステップ(22s262)で抽出した2つの正規表現間で一致しない要素のまとまり同士の中でも部分一致する部分を探す。この結果,要素のまとまり[(DoCoMo|Docomo|ドコモ)]と[(FOMA|Foma|foma)]には部分一致が無いので、ステップ(22s264)の処理へ進む。
ステップ(22s264)の処理では、要素内に一致する部分が無いので、ステップ(22s267)の処理へ進む。
ステップ(22s267)の処理では、それぞれの要素の括弧の外側へ「?」の文字をつけて繋げ、[(DoCoMo|Docomo|ドコモ)?(FOMA|Foma |foma)?]とし、ステップ(22s269)の処理へ進む。
ステップ(22s269)の処理では、まだ全ての要素を比較していないので、ステップ(22s262)の処理へ戻り、次の異なる部分を比較処理を繰り返す。
ステップ(22s262)では、2つの正規表現[(i)]と[[iI]]との間で一致する部分を探し、ステップ(22s263)の処理へ進む。
ステップ(22s263)の処理では、ステップ(22s262)の処理で抽出した2つの正規表現間で一致しない要素のまとまり同士の中でも部分一致する部分を探す。ここでは、2つの正規表現[(i)]と[[iI]]ではiのみが等しい。この後、ステップ(22s264)の処理へ進む。
ステップ(22s264)の処理では、2つの正規表現[(i)]と[[iI]]は要素内の1部分だけ異なり他の部分は一致するので、ステップ(22s265)の処理へ進む。
ステップ(22s265)の処理では、2つの正規表現[(i)]と[[iI]]の要素内の異なる部分が一文字なので、ステップ(22s266)の処理ヘ進む。
ステップ(22s266)の処理では、要素を囲む括弧が[]の時は不一致文字を中に付け足し、[[iI]]としてステップ(22s269)の処理へ進む。
ステップ(22s269)の処理では、異なる部分を比較し終えたら、新たに作成中であった配列をつなげて文字列[(DoCoMo|Docomo|ドコモ)?(FOMA|Foma|foma)?,[“”-]?,[Pp],[“”-]?,(902),[“”-]?,[iI]]ヘ戻し、繰り返しを終了して、ステップ(22s2610)の処理へ進む。
ステップ(22s2610)では、図3に示した正式名称/正規表現辞書31のエントリ3をDoCoMo P9O2i/(DocoMo|Docomo|ドコモ)[“”-]?[Pp][“”-]902[“”-]?iからDoCoMo P902i/[(DoCoMo|Docomo|ドコモ)?(F0MA|Foma|foma)?[“”-]?[Pp][“”-]?902[“”-]?[iI]]に変更して、ステップ(22s26)の処理を終了し、ステップ(22s2)へ戻り、ステップ(22s2)の処理も終了し、ステップ(22s3)の処理へ進む。
ステップ(22s3)では、ステップ(22s2)の正規表現作成処理が終わったら、DoCoMo P902i/[(DoCoMo|Docomo|ドコモ)?(FOMA|Foma|foma)?[“”-]?[Pp][“”-]?902[“”-]?[iI]]をクエリ拡張部23へ出力して処理を終了する。
クエリ拡張部23では、前述した図11に示す処理を行う。即ち、クエリ拡張部23は、ステップ(23s1)では正式名称特定部22が出力した正規表現のうち、記号部分以外の全展開を行い、(例1)FOMA[“”-]?P[“”-]?902[“”-]?i、(例2)[“”-]?p[“”-]?902[“”-]?i等としてステップ(23s2)の処理へ進む。
ステップ(23s2)〜(23s8)では、正規表現中の展開前の記号部分ごとに処理を進める。
上記(例1)の場合はステップ(23s3)〜(23s6)の処理は行わずにステップ(23s7)の処理でFOMA[“”-]?P[“”-]?902[“”-]?iをそのまま全展開し、
FOMA P 902 i
FOMA P 902-i
FOMA P 902i
FOMA P-902 i
FOMA P-902-i
FOMA P-902i
FOMA P902 i
FOMA P902-i
FOMA P902i
FOMA-P 902 i
FOMA-P 9O2-i
FOMA-P 9O2i
FOMA-P-902 i
FOMA-P-902-i
FOMA-P-902i
FOMA-P902 i
FOMA-P902-i
FOMA-P902i
FOMAP 902 i
FOMAP 902-i
FOMAP 902i
FOMAP-902 i
FOMAP-902-i
FOMAP-902i
FOMAP902 i
FOMAP902-i
FOMAP902i
としてステップ(23s8)の処理ヘと進む。
上記(例2)の場合はステップ(23s5)の判定の結果、記号部分の前がクエリの先頭なので、ステップ(23s6)の処理を行ってp[“”-]?902[“”-]?iとなったものをステップ(23s7)で全展開して
p 9O2i
p 9O2-i
p 902i
P-902 i
P-902-i
p-9O2i
p902 i
p902-i
p902i
としてステップ(23s8)の処理ヘと進む。
ステップ(23s8)では、展開した正規表現中に含まれる記号部分を全て処理し終えたら繰り返し処理を終了してステップ(23s9)の処理へ進む。
ステップ(23s9)の処理では、展開の終わったクエリのうち、先に生成したクエリと重複が生じたものは削除する。ここでは重複はないため処理を終了して、展開し終えたクエリの同義表現集合 FOMA P-902i,FOMA-P902I,p902i等1728通りと、正式名称DoCoMo P902i、正規表現[(DoCoMo|Docomo|ドコモ)?(F0MA|Foma|foma)?[“”-]?[Pp][“”-]?902[“”-]?[iI]]を文書検索部6へ渡す。以上で質問拡張部2の処理は終了となる。
文書検索部6は、質問拡張部2から、クエリの[正式名称,正規表現,同義表現集合]を受け取り、クエリの同義表現集合を用いて、既存の技術で検索を行う。そして検索結果の文書データのリストと、正式名称、正規表現を表記統一部7へと出力する。
表記統一部7は、前述した図12に示す処理を行う。すなわち、表記統一部7では質問拡張部2でクエリの拡張を行っているため
・検索結果
・正式名称 DoCoMo P902i
・正規表現 [(DoCoMo|Docomo|ドコモ)?(FOMA|Foma|foma)?[“”-]?[Pp][“”-]?902[“”-]?[iI]]
を受け取る。
これらを受け取った表記統一部7の出力判別部71では、正式名称と正規表現が入力されるので、これらを統一部72に渡して統一部72での処理を進める。
統一部72では、正規表現[(DoCoMo|Docomo|ドコモ)?(FOMA|Foma|foma)?[“”-]?[Pp][“”-]?9O2[“”-]?[iI]]を用いて検索結果である文書データの集合中に含まれるクエリの表記ゆれを含む表現を探し、正式名称「DoCoMo P902i」で書き換えを行う。そしてその結果を出力部8へ渡す。
出力部8は、任意の形式でクエリの表記が統一された文書データの集合をユーザに提示する。
前述したように本発明の文書検索方法を適用した本実施形態の文書検索装置10によれば、正規表現を用いることにより、辞書ヘの登録単語数を削減することができ、1つの辞書をクエリ拡張と表記ゆれ吸収両方に使用可能であり、辞書サイズを縮小することができる。また、考えられる全ての表記ゆれを含む正規表現を自動生成することにより、新語への対応スピード、網羅性共に向上すると同時に、コストを削減することができる。さらに、入力されたクエリと正式名称、どちらも正規表現で記述するため、正式名称とは違うクエリが入力されても特定できる可能性が高まる。さらにまた、本実施形態の文書検索装置10に適用している本発明のコンピュータプログラムを用いることにより、任意のコンピュータ装置によって本発明の文書検索方法を実施する文書検索装置を容易に構成することができる。
本発明の一実施形態における文書検索装置の機能ブロック図 本発明の一実施形態における質問拡張部の詳細構成を示す機能ブロック図 本発明の一実施形態における正式名称/正規表現辞書の一例を示す図 本発明の一実施形態における変換リストの一例を示す図 本発明の一実施形態における挿入リストの一例を示す図 本発明の一実施形態における正式名称特定部の処理動作を説明するフローチャート 本発明の一実施形態における正規表現作成処理の動作を説明するフローチャート 本発明の一実施形態におけるルール適用処理の動作を説明するフローチャート 本発明の一実施形態における正規表現作成処理の動作を説明するフローチャート 本発明の一実施形態における正規表現拡張処理の動作を説明するフローチャート 本発明の一実施形態におけるクエリ拡張部の処理動作を説明するフローチャート 本発明の一実施形態における表記統一部の詳細構成を示す機能ブロック図
符号の説明
1…入力部、2…質問拡張部、3,4,5…データベース、6…文書検索部、7…表記統一部、8…出力部、21…入力判別部、22…正式名称特定部、23…クエリ拡張部、31…正規名称/正規表現辞書、41…変換リスト、51…挿入リスト、71…出力判別部、72…統一部、100…文書データベース。

Claims (6)

  1. 単語の正式名称と該正式名称の正規表現とを対にした情報をエントリとして持つ正式名称/正規表現辞書のデータベースと、検索対象となる文字列としてのクエリの正規表現作成時に変換規則として用いる任意に登録可能な変換リストのデータベースと、前記クエリの正規表現作成時に挿入する文字や記号を任意に登録できる挿入リストのデータベースとを備えたコンピュータ装置からなる文書検索装置に対してクエリを入力すると、前記文書検索装置が、文書データベースに格納されている複数の文書データの中から前記クエリを拡張したクエリ群を含む文書データを抽出して、該抽出結果を出力する文書検索方法であって、
    前記文書検索装置は、
    入力された前記検索対象となる文字列をクエリとして受け付け、
    受け付けたクエリと正式名称/正規表現辞書のエントリとを比較して、正式名称/正規表現辞書のエントリの正規表現に一致するものがあるか否かを判定し、
    前記受け付けたクエリと正式名称/正規表現辞書のエントリの正規表現が一致したときは、一致したエントリの正規表現を前記受け付けたクエリの正規表現とし、
    前記受け付けたクエリと正式名称/正規表現辞書のエントリの正規表現が一致しないときは、受け付けたクエリを文字種の異なる境界で分割して配列要素とし、
    前記配列要素が変換リストの表現と一致するか否かを判定し、
    前記配列要素が変換リストの表現と一致するときは該配列要素を前記一致した変化リストのエントリに変更し、
    前記配列要素が変換リストの表現と一致しないときは、前記配列要素がアルファベットを含むか否かを判定し、
    前記配列要素がアルファベットを含むときは、前記配列要素を、そのまま、或いは、全て大文字、或いは、全て小文字、或いは、先頭だけ大文字、に変換するとともに、配列要素中に重複が出た場合は重複部分を削除し、前記挿入リストをカンマで区切ったものの最後に「?」の文字を付け足して1つの要素とし、該要素を配列要素間に挿入して配列要素をつなげて前記受け付けたクエリの正規表現を作成し、
    前記作成した正規表現に一致する正式名称が正式名称/正規表現辞書にあるときは該正式名称を前記受け付けたクエリの正式名称として特定し、
    前記作成した正規表現に一致する正式名称が正式名称/正規表現辞書にないときは前記受け付けたクエリを正式名称として特定し、
    前記受け付けたクエリに対応して作成された前記正規表現のうち記号部分以外の全展開を行い、
    正規表現中の展開前の記号部分ごとに処理対象となっている記号部分の前または後ろの文字が記号であるか否かを判定し、
    処理対象となっている記号部分の前または後ろの文字が記号である場合は処理中の情報をコピーして、処理中の記号部分の前後の記号を削除し、
    処理対象となっている記号部分の前または後ろの文字が記号でない場合は、処理対象となっている記号部分の前または後ろの何れかの文字がクエリの先頭または終端であるか否かを判定し、
    処理対象となっている記号部分の前または後ろの何れかの文字がクエリの先頭または終端だった場合は、処理中の記号部分を展開せず削除し、
    処理対象となっている記号部分の前または後ろの何れかの文字がクエリの先頭または終端でない場合は、処理中の記号部分を展開した後、展開の終わったクエリのうち、先に生成したクエリと重複が生じたものは削除することによってクエリの拡張をおこなってクエリ群を作成し、
    拡張された前記クエリ群を用いて文書検索を行い、当該クエリ群を含む文書データを抽出し、
    前記特定された正式名称と該正式名称に対応する正規表現とを用いて、前記抽出された文書データ中に含まれるクエリの表記を統一し、
    表記統一された文書データの情報を出力する
    ことを特徴とする文書検索方法。
  2. 前記文書検索装置は、新たなクエリが入力されたときに作成した正規表現と該正規表現から特定した単語の正式名称の情報を用いて前記正式名称/正規表現辞書を更新する
    ことを特徴とする請求項1に記載の文書検索方法。
  3. 検索対象となる文字列としてのクエリを入力すると、文書データベースに格納されている複数の文書データの中から前記クエリを拡張したクエリ群を含む文書データを抽出して、該抽出結果を出力する文書検索装置であって、
    入力された前記検索対象となる文字列をクエリとして受け付ける入力手段と、
    単語の正式名称と該正式名称の正規表現とを対にした情報をエントリとして持つ正式名称/正規表現辞書のデータベースと、
    前記クエリの正規表現作成時に変換規則として用いる任意に登録可能な変換リストのデータベースと、
    前記クエリの正規表現作成時に挿入する文字や記号を任意に登録できる挿入リストのデータベースと、
    受け付けたクエリと正式名称/正規表現辞書のエントリとを比較して、正式名称/正規表現辞書のエントリの正規表現に一致するものがあるか否かを判定し、前記受け付けたクエリと正式名称/正規表現辞書のエントリの正規表現が一致したときは、一致したエントリの正規表現を前記受け付けたクエリの正規表現とし、前記受け付けたクエリと正式名称/正規表現辞書のエントリの正規表現が一致しないときは、受け付けたクエリを文字種の異なる境界で分割して配列要素とし、前記配列要素が変換リストの表現と一致するか否かを判定し、前記配列要素が変換リストの表現と一致するときは該配列要素を前記一致した変化リストのエントリに変更し、前記配列要素が変換リストの表現と一致しないときは、前記配列要素がアルファベットを含むか否かを判定し、前記配列要素がアルファベットを含むときは、前記配列要素を、そのまま、或いは、全て大文字、或いは、全て小文字、或いは、先頭だけ大文字、に変換するとともに、配列要素中に重複が出た場合は重複部分を削除し、前記挿入リストをカンマで区切ったものの最後に「?」の文字を付け足して1つの要素とし、該要素を配列要素間に挿入して配列要素をつなげて前記受け付けたクエリの正規表現を作成し、前記作成した正規表現に一致する正式名称が正式名称/正規表現辞書にあるときは該正式名称を前記受け付けたクエリの正式名称として特定し、前記作成した正規表現に一致する正式名称が正式名称/正規表現辞書にないときは前記受け付けたクエリを正式名称として特定する正式名称特定手段と、
    前記受け付けたクエリに対応して作成された前記正規表現のうち記号部分以外の全展開を行い、正規表現中の展開前の記号部分ごとに処理対象となっている記号部分の前または後ろの文字が記号であるか否かを判定し、処理対象となっている記号部分の前または後ろの文字が記号である場合は処理中の情報をコピーして、処理中の記号部分の前後の記号を削除し、処理対象となっている記号部分の前または後ろの文字が記号でない場合は、処理対象となっている記号部分の前または後ろの何れかの文字がクエリの先頭または終端であるか否かを判定し、処理対象となっている記号部分の前または後ろの何れかの文字がクエリの先頭または終端だった場合は、処理中の記号部分を展開せず削除し、処理対象となっている記号部分の前または後ろの何れかの文字がクエリの先頭または終端でない場合は、処理中の記号部分を展開した後、展開の終わったクエリのうち、先に生成したクエリと重複が生じたものは削除することによってクエリの拡張をおこなってクエリ群を作成するクエリ拡張手段と、
    拡張された前記クエリ群を用いて文書検索を行い、当該クエリ群を含む文書データを抽出する文書検索手段と、
    前記正式名称特定手段により特定された正式名称と該正式名称に対応する正規表現とを用いて、前記抽出された文書データ中に含まれるクエリの表記を統一する表記統一手段と、
    表記統一された文書データの情報を出力する出力手段とを備えた
    ことを特徴とする文書検索装置。
  4. 前記正式名称特定手段は、作成した正規表現と該正規表現から特定した単語の正式名称の情報を用いて前記正式名称/正規表現辞書を作成する手段を有することを特徴とする請求項3に記載の文書検索装置。
  5. 単語の正式名称と該正式名称の正規表現とを対にした情報をエントリとして持つ正式名称/正規表現辞書のデータベースと、検索対象となる文字列としてのクエリの正規表現作成時に変換規則として用いる任意に登録可能な変換リストのデータベースと、前記クエリの正規表現作成時に挿入する文字や記号を任意に登録できる挿入リストのデータベースとを備えたコンピュータ装置からなる文書検索装置に対してクエリを入力すると、前記文書検索装置が、文書データベースに格納されている複数の文書データの中から前記クエリを拡張したクエリ群を含む文書データを抽出して、該抽出結果を出力する前記文書検索装置を動作させるコンピュータプログラムであって、
    入力された前記検索対象となる文字列をクエリとして受け付けるステップと、
    受け付けたクエリと正式名称/正規表現辞書のエントリとを比較して、正式名称/正規表現辞書のエントリの正規表現に一致するものがあるか否かを判定するステップと、
    前記受け付けたクエリと正式名称/正規表現辞書のエントリの正規表現が一致したときは、一致したエントリの正規表現を前記受け付けたクエリの正規表現とするステップと、
    前記受け付けたクエリと正式名称/正規表現辞書のエントリの正規表現が一致しないときは、受け付けたクエリを文字種の異なる境界で分割して配列要素とするステップと、
    前記配列要素が変換リストの表現と一致するか否かを判定するステップと、
    前記配列要素が変換リストの表現と一致するときは該配列要素を前記一致した変化リストのエントリに変更するステップと、
    前記配列要素が変換リストの表現と一致しないときは、前記配列要素がアルファベットを含むか否かを判定するステップと、
    前記配列要素がアルファベットを含むときは、前記配列要素を、そのまま、或いは、全て大文字、或いは、全て小文字、或いは、先頭だけ大文字、に変換するとともに、配列要素中に重複が出た場合は重複部分を削除し、前記挿入リストをカンマで区切ったものの最後に「?」の文字を付け足して1つの要素とし、該要素を配列要素間に挿入して配列要素をつなげて前記受け付けたクエリの正規表現を作成するステップと、
    前記作成した正規表現に一致する正式名称が正式名称/正規表現辞書にあるときは該正式名称を前記受け付けたクエリの正式名称として特定するステップと、
    前記作成した正規表現に一致する正式名称が正式名称/正規表現辞書にないときは前記受け付けたクエリを正式名称として特定するステップと、
    前記受け付けたクエリに対応して作成された前記正規表現のうち記号部分以外の全展開を行うステップと、
    正規表現中の展開前の記号部分ごとに処理対象となっている記号部分の前または後ろの文字が記号であるか否かを判定するステップと、
    処理対象となっている記号部分の前または後ろの文字が記号である場合は処理中の情報をコピーして、処理中の記号部分の前後の記号を削除するステップと、
    処理対象となっている記号部分の前または後ろの文字が記号でない場合は、処理対象となっている記号部分の前または後ろの何れかの文字がクエリの先頭または終端であるか否かを判定するステップと、
    処理対象となっている記号部分の前または後ろの何れかの文字がクエリの先頭または終端だった場合は、処理中の記号部分を展開せず削除するステップと、
    処理対象となっている記号部分の前または後ろの何れかの文字がクエリの先頭または終端でない場合は、処理中の記号部分を展開した後、展開の終わったクエリのうち、先に生成したクエリと重複が生じたものは削除することによってクエリの拡張をおこなってクエリ群を作成するステップと、
    拡張された前記クエリ群を用いて文書検索を行い、当該クエリ群を含む文書データを抽出するステップと、
    前記特定された正式名称と該正式名称に対応する正規表現とを用いて、前記抽出された文書データ中に含まれるクエリの表記を統一するステップと、
    表記統一された文書データの情報を出力するステップとを含む
    ことを特徴とするコンピュータプログラム。
  6. 新たな検索対象となる文字列が入力されたときに作成した正規表現と該正規表現から特定した単語の正式名称の情報を用いて前記正式名称/正規表現辞書を更新するステップを含む
    ことを特徴とする請求項5に記載のコンピュータプログラム。
JP2007130321A 2007-05-16 2007-05-16 文書検索方法及び装置並びにそのコンピュータプログラム Expired - Fee Related JP4950755B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007130321A JP4950755B2 (ja) 2007-05-16 2007-05-16 文書検索方法及び装置並びにそのコンピュータプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007130321A JP4950755B2 (ja) 2007-05-16 2007-05-16 文書検索方法及び装置並びにそのコンピュータプログラム

Publications (2)

Publication Number Publication Date
JP2008287394A JP2008287394A (ja) 2008-11-27
JP4950755B2 true JP4950755B2 (ja) 2012-06-13

Family

ID=40147071

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007130321A Expired - Fee Related JP4950755B2 (ja) 2007-05-16 2007-05-16 文書検索方法及び装置並びにそのコンピュータプログラム

Country Status (1)

Country Link
JP (1) JP4950755B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106959976A (zh) * 2016-01-12 2017-07-18 腾讯科技(深圳)有限公司 一种搜索处理方法以及装置

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7228083B2 (ja) 2019-01-31 2023-02-24 日本電信電話株式会社 データ検索装置、方法およびプログラム

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07121547A (ja) * 1993-10-21 1995-05-12 Matsushita Electric Ind Co Ltd 情報検索装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106959976A (zh) * 2016-01-12 2017-07-18 腾讯科技(深圳)有限公司 一种搜索处理方法以及装置
US10713302B2 (en) 2016-01-12 2020-07-14 Tencent Technology (Shenzhen) Company Limited Search processing method and device
CN106959976B (zh) * 2016-01-12 2020-08-14 腾讯科技(深圳)有限公司 一种搜索处理方法以及装置

Also Published As

Publication number Publication date
JP2008287394A (ja) 2008-11-27

Similar Documents

Publication Publication Date Title
Martins et al. Spelling correction for search engine queries
Hodge et al. A comparison of standard spell checking algorithms and a novel binary neural approach
JPS63254559A (ja) 複合ワードのためのスペリング援助方法
CN112925563B (zh) 一种面向代码重用的源代码推荐方法
JP5308786B2 (ja) 文書データ検索装置
CN111159990A (zh) 一种基于模式拓展的通用特殊词识别方法及***
JP4950755B2 (ja) 文書検索方法及び装置並びにそのコンピュータプログラム
Ridley An expert system for quality control and duplicate detection in bibliographic databases
US9218336B2 (en) Efficient implementation of morphology for agglutinative languages
Kaur et al. Spell checker for Punjabi language using deep neural network
KR20170107808A (ko) 원문문장을 번역 소단위들로 분할하고 소번역단위들의 번역어순을 결정하는 번역어순패턴 데이터 구조, 이를 생성하기 위한 명령어들을 저장한 컴퓨터 판독가능한 저장매체 및 이를 가지고 번역을 수행하는 컴퓨터 판독가능한 저장매체에 저장된 번역 프로그램
WO2009113289A1 (ja) 新規事例生成装置、新規事例生成方法及び新規事例生成用プログラム
JP3260428B2 (ja) 情報検索処理装置
CN110309258A (zh) 一种输入检查方法、服务器和计算机可读存储介质
US20040054677A1 (en) Method for processing text in a computer and a computer
US20170031892A1 (en) System and method for representing sequences of bits
KR100659370B1 (ko) 시소러스 매칭에 의한 문서 db 형성 방법 및 정보검색방법
KR102146625B1 (ko) 오토마타 기반 증분적 중위 확률 계산 장치 및 방법
US20240086442A1 (en) Heuristic identification of shared substrings between text documents
Yahya et al. Enhancement tools for Arabic web search
Birnbaum et al. Reassessing the locus of normalization in machine-assisted collation.
Elhadi et al. Detection of Duplication in Documents and WebPages Based Documents Syntactical Structures through an Improved Longest Common Subsequence.
JPH07244669A (ja) 文書検索方式
Perakovic et al. Possibility of applying fuzzy logic in the e-Learning system
JP2704945B2 (ja) 重複表現処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090730

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20110613

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20110614

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20110615

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110616

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20110616

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110713

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110829

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: 20120302

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120309

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150316

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees