JP3548263B2 - 文書登録方法および文書検索方法 - Google Patents
文書登録方法および文書検索方法 Download PDFInfo
- Publication number
- JP3548263B2 JP3548263B2 JP04446995A JP4446995A JP3548263B2 JP 3548263 B2 JP3548263 B2 JP 3548263B2 JP 04446995 A JP04446995 A JP 04446995A JP 4446995 A JP4446995 A JP 4446995A JP 3548263 B2 JP3548263 B2 JP 3548263B2
- Authority
- JP
- Japan
- Prior art keywords
- word
- search
- document
- character
- dictionary
- 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
Links
Images
Landscapes
- Document Processing Apparatus (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
【0001】
【産業上の利用分野】
本発明は、文書中の単語をキーワードとして検索する文書登録方法および文書検索方法に関する。
【0002】
【従来の技術】
従来、文書検索方式としては、文書をある約束毎に基づいて分類して登録し、その分類基準をコード化したもの(分類コード)等を検索条件として文書検索を行う方式や、検索時にキーワード等の文書の属性を検索条件として検索を行う方式や、あるいはこれらを組み合わせた方式が知れている。
【0003】
キーワードを用いた従来の文書検索方式では、探したい文書を特定するための検索用キーワードを、文章データの登録時にキーボード等を用いて入力する必要があるが、この入力作業はかなりの時間を要するばかりでなく、文書を的確に検索するためのキーワードを設定することが困難であるといった問題があった。
【0004】
そこで、上記問題を解決する方法として、例えば特開平4−135278号公報では、文書登録時にキーワードを入力せず、検索時に入力された検索語と検索時の文書の文章データとをすべて比較する「全文検索フリーキーワード方式」を提案している。
【0005】
また、文書登録時に文書の文章データを単語展開し、あらかじめ文書に使用されている単語を抽出し、文書と検索用語を対応づけて登録しておく「全文展開登録フリーキーワード方式」も上記問題を解決する方法として提案されている。
【0006】
ここで、上記の「全文展開登録フリーキーワード方式」における、文章データの単語展開の方法として、例えば特開平3−271992号公報に示されるような文法情報を基に文章を解析する手段があるが、この特開平3−271992号公報では、不用な接辞及び接辞相当語を除き、複合語を抽出するために文法情報または品詞情報を用いて解析している。
【0007】
【発明が解決しようとする課題】
しかしながら、上述した例えば特開平4−135278号公報の「全文検索フリーキーワード方式」においては、検索時にすべての文書の文章データと検索語とを比較する必要があるため、検索時間が長くなるといった問題がある。
【0008】
また、上記の例えば特開平3−271992号公報に示される「全文展開登録フリーキーワード方式」における文章データの単語展開の方法では、文法情報を用いて単語展開を行うために、複雑な処理を必要とし単語展開処理に時間がかかり、検索単語の登録処理時間が長くなるといった問題がある。
【0009】
本発明は、上記事情に鑑みてなされたものであり、簡単なアルゴリズムで文書の単語を展開することで、高速に文書を登録及び検索することのできる文書登録方法および文書検索方法を提供することを目的としている。
【0010】
【課題を解決するための手段】
本発明の文書登録方法は、所定の文書中の単語をキーワードとして登録する文書登録方法において、前記所定の文書を構成する複数種の文字列から1つ以上の文字からなる文字列を切り出す文字切り出しステップと、所定の規則に従った、いずれも文字数がN(N=1,2・・・N)である複数個の単語の集合体を一単語グループとし当該文字数毎にグループ分けされた複数の単語グループのうち、所定の文字数Nに対応する単語グループを指定する単語グループ指定ステップと、前記単語グループ指定ステップにより指定された所定の単語グループにおける複数個の単語を順次指定する単語指定ステップと、前記文字切り出しステップにより切り出された切出文字列を、前記単語指定ステップにより指定された指定単語と比較する比較ステップと、前記比較ステップの比較により、前記指定単語と前記切出文字列とが一致した場合に、当該文書と対応づけて前記文字列を前記キーワードとして抽出するキーワード抽出ステップと、を有し、前記比較ステップにおいては、当該切出文字列が前記指定単語と一致するまで、当該切出文字列と前記単語グループ指定ステップにより指定された所定の単語グループにおける複数個の単語とを順次比較し、当該所定の単語グループ内において当該一致が見られない際は、前記単語グループ指定ステップにおいて新たに指定された所定の単語グループにおける複数個の単語とを、当該一致が見られるまで順次比較を試行する、ことを特徴とする。
本発明の文書検索方法は、所定の文書中の単語をキーワードとして検索する文書検索方法において、前記所定の文書を構成する複数種の文字列から1つ以上の文字からなる文字列を切り出す文字切り出しステップと、所定の規則に従った、いずれも文字数がN(N=1,2・・・N)である複数個の単語の集合体を一単語グループとし当該文字数毎にグループ分けされた複数の単語グループのうち、所定の文字数Nに対応する単語グループを指定する単語グループ指定ステップと、前記単語グループ指定ステップにより指定された所定の単語グループにおける複数個の単語を順次指定する単語指定ステップと、前記文字切り出しステップにより切り出された切出文字列を、前記単語指定ステップにより指定された指定単語と比較する比較ステップと、前記比較ステップの比較により、前記指定単語と前記切出文字列とが一致した場合に、当該文書と対応づけて前記文字列を前記キーワードとして抽出するキーワード抽出ステップと、を有し、前記比較ステップにおいては、当該切出文字列が前記指定単語と一致するまで、当該切出文字列と前記単語グループ指定ステップにより指定された所定の単語グループにおける複数個の単語とを順次比較し、当該所定の単語グループ内において当該一致が見られない際は、前記単語グループ指定ステップにおいて新たに指定された所定の単語グループにおける複数個の単語とを、当該一致が見られるまで順次比較を試行することを特徴とし、さらに、前記キーワード抽出ステップにより抽出されたキーワードを格納するキーワード格納ステップと、検索キーワードを入力する検索キーワード入力ステップと、前記キーワード格納ステップにて格納されたキーワードを所定の順序で読み出すキーワード読み出しステップと、前記キーワード読み出しステップにて読み出されたキーワードを、前記検索キーワード入力ステップにて入力された検索キーワードと比較する検索キーワード比較ステップと、前記検索キーワード比較ステップの比較結果に基づき、前記キーワード格納ステップにより格納された前記キーワードを読みだし、前記キーワードにより前記所定の文書を指定する文書指定ステップと、を有することを特徴とする。
【0011】
【実施例】
以下、図面を参照しながら本発明の実施例について述べる。
【0012】
図1ないし図12は本発明の第1実施例に係わり、図1は文書登録/検索システムの構成を示す構成図、図2は図1の登録/検索制御部の構成を示す構成図、図3は図1の文字数別単語辞書ファイル記録部に記録される文字数別単語辞書ファイルの構成を示す構成図、図4は図1の文書登録/検索システムによる検索単語の登録処理の流れを示す第1のフローチャート、図5は図1の文書登録/検索システムによる検索単語の登録処理の流れを示す第2のフローチャート、図6は図4の第1のフローチャートで読み込まれる文書の一例を示す図、図7は図6の文書をメモリ上に展開した文字列を示す図、図8は図4及び図5に示したフローチャートで生成される検索単語ファイル記録部に記録される検索単語ファイルの構成を示す構成図、図9は図8の検索単語ファイルによる文書の検索処理の流れを示すフローチャート、図10は図9の検索処理の具体例を説明する説明図、図11は図9の検索処理により得られた該当文書ファイルの構成を示す構成図、図12は図11の該当文書ファイルに基づく検索結果表示部の表示例を示す図である。
【0013】
本実施例の文書登録/検索システムは、図1に示すように、文書(例えば特許出願文書)1を光学的に読みとるOCRやフロッピディスク2に記録された文書データを読み込むフロッピディスクドライブ等からなる文書読取部3と、読み取った文書データを文書毎に文書ファイルとして記録する文書ファイル記録部4と、検索のための単語を文字数別の辞書として記録している文字数別単語辞書ファイル記録部5と、文書ファイル記録部4に記録されている文書データと文字数別単語辞書ファイル記録部5に記録されている文字数別の単語を比較することで検索単語の登録/検索の処理を行う登録/検索制御部6と、登録/検索制御部6により登録された検索単語をコード化して文書毎に記録する検索単語ファイル記録部7と、検索時に検索すべき検索単語を入力する例えばキーボードからなる検索単語入力部8と、検索単語入力部8から入力された検索単語に基づいた検索結果を記録する検索結果記録部9と、検索結果を表示する検索結果表示部10とから構成される。
【0014】
なお、検索単語入力部8から入力された検索単語による検索は、登録/検索制御部6の制御により検索単語入力部8から入力された検索単語を文字数別単語辞書ファイル記録部5の文字数別の文字列と比較し、検索単語のコードを取得し、このコードに基づいて検索単語ファイル記録部7を検索することで行われる。
【0015】
前記登録/検索制御部6は、文書データを文字数別に文字列展開することで検索単語の登録/検索を行うものであり、図2に示すように、文書読取部3を介して文書ファイル記録部に記録された複数、例えば10万件の文書毎の文書ファイルのうち1文書ファイルの文書データを展開するメモリ21と、文書データの文字位置をカウントする文字位置カウンタ22と、文字位置カウンタ22が指す文字位置から後述する切り出し方法により所定の文字数の文字列をレジスタ23を介して切り出し登録あるいは検索処理を行う制御部24と、切り出した文字列の文字数に対応するカウント値を出力することで文字数別単語辞書ファイル記録部5に記録されている文字数別単語辞書ファイルを指定する文字数カウンタ25と、文字数別単語辞書ファイルを順次指定しスキャンする為のカウント値を出力する単語番号カウンタ26と、単語番号カウンタ26により指定された文字数別単語辞書ファイル内の単語とレジスタ23により切り出された文字列とを比較する比較部27とを備えて構成される。
【0016】
そして、比較部27により文字数別単語辞書ファイル内の単語とレジスタ23により切り出された文字列とが一致したと判断された場合に文字数別単語辞書ファイル内の単語に対応したコードを文書毎に検索単語ファイル記録部7に記録するようになっている。
【0017】
ここで、比較部27において、文書データの最後まで繰り返しても、切り出した文字列が文字数別単語辞書のいずれにも存在しない場合には、その文字列を残文字ファイル28に記録し、後述する残文字処理の中で辞書登録部29を用いて文字数別単語辞書へ追加登録するようになっている。
【0018】
つまり、残文字処理は、登録/検索制御部6の文字列展開処理において、作成された残文字ファイルに、検索単語への展開が出来なかった文字列を保存する。この中には、辞書に登録されていない為に展開できなった単語と、不要文字いわゆるゴミ文字(例えば、@ や * )が含まれている。従って、この残文字ファイルを検索結果表示部10の例えばモニタに表示し、操作者がそれを見て、文字数別単語辞書に登録しておいた方が良いと判断した文字列に関しては、辞書登録部29を用いてその文字数の文字数別単語辞書ファイルに登録する。
【0019】
なお、この残文字処理に関しては、上記の様に操作者が必要/不必要の判断をするのではなく、必要の無い、不要文字も含めて、自動的に文字数に合った文字数別単語辞書ファイルに登録するようにしても良い。
【0020】
文字数別単語辞書ファイル記録部5には、図3に示すように、文字数別単語辞書ファイルが記録されている。この文字数別単語辞書には、文字数に応じて例えば1文字から20文字までの20個の単語辞書がファイルの形式で記録されている。そして、文字数別単語辞書は、今後新たな単語登録の必要性が生じた場合には、辞書登録部29を用いて順次単語を追加登録していくようになっている。
【0021】
次に、このように構成された本実施例の文書登録/検索システムの作用について説明する。まず、文書の検索単語の登録処理について説明する。
【0022】
図4に示すように、文書検索システムでは、ステップS1で登録したい文書1を文書読取部3により、例えばOCRで光学的に読み込む、または、例えばフロッピーディスクに電子的に保存されていた文書であれば、その内容をテキストデータとして読み込む。そして、ステップS2で読み込んだ文書の文書データを文書ファイル記録部4に記録する。
【0023】
次にステップS3で、登録/検索制御部6の制御部24が展開処理を実行させたい文書データを文書ファイル記録部4から読み出しメモリ21に記憶する。なお、ここでは、読みだした文書番号を例えば”T00000”とし、文書を図6に示すような特許公開公報とすると、メモリ21には図7に示すように、文書データが展開される。
【0024】
そしてステップS4及びS5で、文字数カウンタ25を1、文字位置カウンタ22を0にセットし、ステップS6で文字位置カウンタ22が示す数に対応する文書データの位置(この時点は文書の最初から1文字目)から文字数カウンタ25の文字数分(この時点では1字)を切り出し、レジスタ23に記憶する。この場合、制御部24でレジスタ23に記憶された、例えば”〔書類名〕……”のうちの最初の「〔 」という文字のシフトJISコードが調べられる。
【0025】
そして、制御部24は、ステップS7で単語番号カウンタを1にセットし、ステップS8で文字数別単語辞書内のN文字単語辞書ファイル(この時点ではN=1であり、1文字単語辞書)の先頭から1単語を読みだし、読みだした1単語とレジスタ23に記憶されている文字列とを比較部27にて比較する。
【0026】
そして図5に示すステップS11に処理を移し、図4のステップS8での比較により、ステップS11では読みだした1単語とレジスタ23に記憶されている文字列とが一致したかどうか判断し、一致していない場合にはステップS12で単語番号カウンタ26を1増加し、ステップS13でN文字単語辞書ファイルの最後の単語かどうか判断し最後の単語でない場合は図4のステップS8に戻り、次の1単語を読みだし、同様な処理をN文字単語辞書の最後まで繰り返す。
【0027】
説明を簡単に行うために、図6に示した文書の「〔 」という文字が、比較の結果、1文字辞書に登録されていなかったとする。
【0028】
その結果、処理は図5のステップS15に移り、ステップS15では、文字位置カウンタ22を1増加し、ステップS16で文書の最後でないと判断され、図4のステップS6に戻り、図7に示す文書データの最初から2文字目の1字である「書」を切り出しレジスタ23に記憶し、上記「〔 」という文字と同様に1文字単語辞書ファイルを検索する。
【0029】
「書」において、ステップS11での1文字単語辞書の検索の判断結果、1文字辞書に存在している場合には、ステップS14でその文書に対応した検索単語ファイルにその文字の辞書番号と単語番号を書き込む。例えば、図7における「書」という単語は、図3に示した1文字辞書ファイルの8番目に存在しているので、図8に示すように、検索単語ファイルには辞書番号が1、単語番号が8と書き込む。ここで、辞書番号と単語番号を合わせて単語IDとする。
【0030】
なお、本実施例では、1文字辞書の辞書番号は1、2文字辞書の辞書番号は2、N文字辞書の辞書番号はNとしている。
【0031】
そして、図4のステップS6から図5のステップS16までの処理を文書の最後まで繰り返す。
【0032】
この中で、例えば「書」という1文字が複数回出現する場合も有り得る。その場合には、出現回数(例えば出現回数4回)を検索単語ファイル内に図8のごとく追記する。
【0033】
このようにして1文字展開が文書の最後になると、ステップS16で文書の最後が認識され、ステップS17で文字数カウンタを1増加し、2文字の展開に移るが、ステップS18では文字数カウンタ25のカウント値が20以内かどうか判断しているため、この時点では図4のステップS5に戻る。そして、図4のステップS5で文字位置カウンタを0にセットし、文書の最初から始まる2文字を切り出し、1文字の場合と同様に図4のステップS5から図5のステップS14を繰り返し、今度は2文字単語辞書ファイルにその切り出した2文字が存在するか検索する。
【0034】
検索の結果、2文字辞書に存在していた場合には、その文書に対応した検索単語ファイルに、その文字の単語IDすなわち辞書番号と単語番号を書き込む。
【0035】
例えば、図7の例では「〔書」という単語は、2文字辞書に存在しないので、結局、図5のステップS15で文字位置カウンタ22を1増加して、ステップS16を介して、図4のステップS6に戻り、図7に示すハッチングされた文書データの最初から2文字目の文字からの2文字である「書類」が展開処理される。その結果、「書類」という2文字の単語は、図3に示したように、2文字単語辞書に存在するので、図7に示すように、検索単語ファイルに辞書番号2、単語番号4と書き込む。
【0036】
その後、ステップS15で文字位置カウンタを1増加し、ステップS16を介して文書の最初の3文字目から始まる2文字「類の」を切り出し、上記と同様に2文字辞書を検索する
同様の処理を文書の最後まで繰り返し、すべての文書データに対して2文字展開処理を行う。そして2文字展開処理が終了すると、ステップS17で文字数カウンタ25を1増加させ、3文字の展開に移るが、ステップS18では文字数カウンタ25のカウント値が20以内かどうか判断しているため、この時点では図4のステップ5に戻る。
【0037】
そして、同様の処理を、3文字、4文字と続け、20文字まで実行する。20文字展開処理が終了すると、ステップS17で文字数カウンタ25を1増加させるので、ステップS18では文字数カウンタ25のカウント値が21となったと判断し処理を終了する。
【0038】
文書の最後まで繰り返しても、文字数別単語辞書のいずれにもその単語が存在しない場合には、その文字を残文字ファイルに記録し、残文字処理の中で辞書登録部29を用いて文字数別単語辞書ファイルへ追加登録する。
【0039】
以上の処理を、例えば10万件の文書(文書番号”T00000”から”T99999”)に対して実行し、図8に示すような検索単語ファイルを得る。
【0040】
次に、このように文書毎に得られた検索単語ファイルに基づく文書検索処理について説明する。
【0041】
文書検索処理では、図9に示すように、制御部24は、ステップS21で検索単語入力部8から検索単語が入力されると、ステップS22で入力された検索単語の文字数Mを算出する。そして、ステップS23で文字数カウンタ25を制御しM文字単語辞書と検索単語とを比較し検索単語IDを得る。次にステップS24で検索単語ファイル記録部7にアクセスして検索単語ファイルを検索する。そして、ステップS25で検索結果を当該文書ファイルとして検索結果記録部に記録し、ステップS26で検索結果として文書見出し情報を検索結果表示部10に表示して処理を終了する。
【0042】
次に、上記の処理を図10ないし図12を用いて具体的に説明する。
【0043】
図10に示すように、例えば「内視鏡」という単語で文書を探し出したいとすれば、操作者が検索単語「内視鏡」を、検索単語入力部3の例えばキーボード等を用いてレジスタ23に入力する(図9のステップS21)。
【0044】
そして、検索単語の文字数Mを計算する(図9のステップS22)。次に、計算した文字数を文字数カウンタ25にセットし、文字数別単語辞書ファイル記憶部5より同じ文字数の単語辞書ファイルを読み込む。この場合は、3文字単語辞書ファイルの内容を読み込み、読み込んだ辞書の中の単語と検索単語「内視鏡」を比較部27で順次比較する(図9のステップS23)。
【0045】
M文字単語辞書から順次読みだす方法としては、単語番号カウンタ26を1ずつ増加し、その単語番号カウンタ26の示す順番の単語を辞書から読みだす事で実現する。つまり、検索単語と一致した時の文字数カウンタ25の値(この例では3)が辞書番号、単語番号カウンタ26の値が単語番号(この例では11)となる(図3参照)。この操作により検索単語の辞書番号と単語番号すなわち検索単語IDを知る事が出来る(この場合では、辞書番号=3、単語番号=11、従って検索単語ID=00030011)。
【0046】
次に、検索単語ファイル記憶部7より文書毎にファイル形式で記録されている検索単語ファイルの中で、検索単語「内視鏡」に対応した単語IDを有する文書を検索する(図9のステップS24)。
【0047】
この検索は、最初に、文書番号”T00000”の検索単語ファイルを読み込む。読み込んだ検索単語ファイル内に、検索単語ID(辞書番号、単語番号)が存在するか検索する。
【0048】
もし存在すれば、その文書番号”T00000”を該当文書ファイルに記録する。もし、存在しなければ、次の文書番号”T00001”の検索単語ファイルを読み込む。そして、上記文書番号”T00000”の時と同様に、文書番号”T00001”の検索単語ファイル中に検索単語IDが存在するか検索する。
【0049】
以上の処理を文書番号”T00000”から”T99999”まで繰り返し、該当する文書に関しては、その文書番号を該当文書ファイルとして検索結果記録部9に記録する(図9のステップS25)。例えば、今回は、図11に示すように、”T00000”、”T00001”、”T00002”、”T00003”、”T00010”、…、”T99999”が該当したとする該当文書ファイルが記録される。
【0050】
次に、該当文書ファイルに記録された文書番号に対応する文書ファイルから、題名、作者、作成日等その文書の見出し情報を読み込み、検索結果表示部10に図12に示すような一覧表を表示する(図9のステップS26)。
【0051】
操作者は、その一覧表を見て探したい文書が存在した場合には、その文書を図示しないマウス等で指定する。指定された文書の全文書を文書ファイルから読み込み、検索結果表示部10のモニタ上に表示するか、または図示しないプリンタに印刷出力する。
【0052】
ここで、検索単語が実際の文書中のどの位置に存在するか表示したい事がある。この場合は、登録時の単語展開同様に、文字数カウンタ25を検索単語と同じ文字数(この場合は3)にセットし、文字位置カウンタ22を0から順次増加する事で該当文書の最初から最後まで切り出し、検索単語(この場合は「内視鏡」)との比較を比較部27で行う。そして、一致した時の文字位置カウンタ22の示す文字位置から文字数カウンタ25の文字数分を、他の単語の表示と異なって表示すればよい。
【0053】
ここで更に、操作者が別な検索単語(例えば「光源」)を指定し、該当文書を絞り込みたい場合は、前記該当文書に対応する検索単語ファイルのみ(今回は”T00000”、”T00001”、”T00002”、”T00003”、”T00010”、…、”T99999”)を、前記と同様にして検索する。
【0054】
この絞り込みの場合、該当文書の検索単語ファイルのみを検索するので、全文書の検索単語ファイルを検索するのに比べて、絞り込み後の検索は高速である。
【0055】
今回は、”T00010”のみが該当したとすれば、”T00010”の文書の見出し情報を表示する。操作者は、それが探したい文書であった場合には、その文書をマウス等で指定する。指定された文書の全文書を文書ファイルから読み込み、モニタ上に表示するか、またはプリンタに印刷出力する。
【0056】
また、操作者が出現回数で文書を絞り込みたい場合、例えば、「内視鏡」という検索単語で検索し、上述したように、”T00000”、”T00001”、”T00002”、”T00003”、”T00010”、…、”T99999”が該当したとする。
【0057】
その後、「内視鏡」の出現回数が5回以上の文書を探したい場合は、操作者は絞り込み条件として出現回数5回を入力する。
【0058】
文書”T00000”、”T00001”、”T00002”、”T00003”、”T00010”、…、”T99999”の検索単語ファイルから、「内視鏡」(単語ID=00030011)という単語の出現回数を読みだす。
【0059】
そして、出現回数が5回以上の文書を探し、該当するファイルが有れば、対応する文書の見出し情報のみを表示する。後の処理は、前記と同じである。つまり、文書に含まれる単語の出現回数を検索条件にして、文書の検索が可能となる。
【0060】
以上説明したように、本実施例の文書検索装置によれば、検索対象となる文書の検索単語の登録は、文書を構成する文字列を所定の方法の1つである文字数に応じて切り出し、切り出した文字列をあらかじめ記録されている文字数別単語辞書と単に比較することで、検索単語を登録するといった簡単なアルゴリズム処理によって文書を展開しているので、高速に文書内から検索単語を抽出し登録することができる。
【0061】
また、抽出された検索単語は、文書毎の検索単語ファイルにコードとして記録されており、検索時は、文書を検索するためのキーワードとしての検索単語を検索単語入力部より入力することで、上記と同様に文字数別単語辞書から入力した検索単語のコードを得、得られたコードと文書毎の検索単語ファイル内のコードとを単に比較するだけなので、検索対象の文書の検索を高速に行うことができる。
【0062】
次に、第2実施例について説明する。図13ないし図21は本発明の第2実施例に係わり、図13は検索単語ファイル記録部に記憶される検索単語ファイルとビットマップファイルの構成を示す構成図、図14は図13の検索単語ファイルとビットマップファイルを生成し検索単語を登録する処理の流れを示すフローチャート、図15は図13の検索単語ファイルとビットマップファイルを用いた文書の検索処理の流れを示すフローチャート、図16は図13のビットマップファイルの第1の変形例を示す図、図17は図13のビットマップファイルの第2の変形例を示す図、図18は図14の登録処理に用いられる文字数別単語辞書ファイルの変形例の構成を示す構成図、図19は図18の変形例の文字数別単語辞書ファイルにより生成される検索単語ファイルの構成を示す構成図、図20は図18の変形例の文字数別単語辞書ファイルにより生成されるビットマップファイルの構成を示す構成図、図21は図13の検索単語ファイルの変形例の構成を示す構成図である。第2実施例は第1実施例とほとんど同じであるので、異なる点のみ説明する。
【0063】
第2実施例の制御部24では、検索単語ファイル記録部7に第1実施例とは異なるフォーマットで検索単語情報を記録するようになっており、図13に示すように、検索単語ファイル記録部7の検索単語情報は、全文書に対して1つの検索単語ファイル31と、”T00000”から”T99999”の全文書の中に有った単語の数だけ存在するビットマップファイル32とから構成される。検索単語ファイル31とビットマップファイル32の詳細な構成は後述する。その他の構成は第1実施例と同じである。
【0064】
次に、本実施例の登録処理について説明する。第2実施例の登録処理は第1実施例とほとんど同じであり、異なる点は、図5におけるステップS11での一致後の検索単語ファイル記録部7への検索情報の処理である。すなわち、図14に示すように、ステップS11で図4のステップS8での比較により、ステップS11では読みだした1単語とレジスタ23に記憶されている文字列とが一致したと判断されると、ステップS30で検索単語ファイルに既に同じ単語IDが記録されているかどうか判断し、記録されていない場合はステップS31に、記録されている場合にはステップS33に進む。ステップS31では、図13に示した検索単語ファイル31に単語IDが記録され、次にステップS32で図13に示したビットマップファイル32が作成される。そして、ステップS33で作成したビットマップファイル32の文書番号に対応するビットに”1”がセットされて、第1実施例と同様に、ステップS15に処理を移行する。その他の処理の流れは第1実施例と同じである。
【0065】
ここで、上記の処理を具体的な例を用いて説明するとともに、検索単語ファイル31とビットマップファイル32の詳細な構成を説明する。
【0066】
すなわち、文献検索システムに登録したい文書を、文書読取部3でOCRで読み込み、または、電子的に保存されていた文書であれば、その内容をテキストデータとしてリードし、文書ファイル記録部4に記録する。
【0067】
第1実施例と同様に、文書の最初から1文字目の1字を切り出し、1文字単語辞書ファイルにその文字が登録されているか検索する。
【0068】
検索の結果、1文字辞書に存在していた場合には、検索単語ファイル31にその文字の辞書番号と単語番号を書き込む。なお、本実施例では、上述したように、検索単語ファイルは全文書に対して、1個しか存在しない。
【0069】
例えば、第1実施例で示した図7の文書例では、「書」という文字は1文字辞書ファイルの8番目に存在していた(図3参照)ので、検索単語ファイルには辞書番号が0001、単語番号が0008と書き込むことになる。
【0070】
次に、この単語IDをファイル名とするビットマップファイルを作成し(ビットマップファイルの各ビットの初期値は0にセット)、例えば文書番号”T00000”には「書」という文字がない場合は、そのビットマップファイル中の文書番号”T00000”に対応した位置(ここではビット番号=0)のビットは0のままであり、例えば文書番号”T00001”に「書」という文字がある場合は、そのビットマップファイル中の文書番号”T00001”に対応した位置(ここではビット番号=1)のビットを、1にセットする。従って、ビットマップファイルは、”T00000”から”T99999”の全文書の中に有った単語の数だけ存在する事のなる。
【0071】
これで単語IDが00010008の単語「書」は、文書番号”T00001”内に存在する事が識別できる。なお、ビットマップファイルのファイル名を単語IDの00010008としておく事で、単語IDから、それに対応したビットマップファイルが読み出せる。
【0072】
検索の結果、1文字辞書に登録されていなかった場合には、第1実施例と同様に、文書の最初から2文字目の1文字を切り出し、上記と同様に1文字辞書を検索する。
【0073】
同様の処理を文書の最後まで繰り返す。この中で、例えば「書」という1文字が複数回出現した場合でも、既にビットマップ上のビットはセットして有るので、ビットセット処理は行わない。
【0074】
文書の最後まで繰り返しても、1文字辞書ファイルにその単語が存在しない場合には、その文字を残文字ファイルに記録し、第1実施例に示した残文字処理を実行する。
【0075】
次に、文書の最初から始まる2文字を切り出し、1文字の場合と同様に今度は2文字単語辞書ファイルにその切り出した2文字が存在するか検索する。
【0076】
検索の結果、2文字辞書内の単語が存在していた場合には、その単語IDすなわち辞書番号と単語番号を前記検索単語ファイルに書き込む。例えば、文書番号”T00001”に図7の例では「書類」という文字が存在する場合には、図3に示したように該当する単語が2文字辞書に存在するので、検索単語ファイルに辞書番号0002、単語番号0004と書き込む。また、ビットマップファイル名が00020004のビットマップファイルを作成し、文書番号が”T00001”に対応するビット(ビット番号=1)を1にセットする。
【0077】
検索の結果が、2文字辞書に登録されていなかった場合には、文書の最初の2文字目から始まる2文字を切り出し、上記と同様に2文字辞書を検索する。同様の処理を文書の最後まで繰り返す。
【0078】
この様な処理を、3文字、4文字〜20文字まで実行する。
【0079】
次に、文書番号”T00002”の文書を同様に読み込む。
【0080】
この文書に対して、同様に先頭から1文字を切り出し、1文字辞書の中に存在するか検索する。その結果「書」と言う単語が存在した場合には、ビットマップファイル名が00010008の文書番号”T00002”に対応した位置のビット(ビット番号=2)を1にセットする。
【0081】
その後は、上述した文書番号”T00001”と同様の処理を切り出し、単語が20文字になるまで繰り返す。
【0082】
以上の処理を、10万件の文書に対して実行することで、図13に示した検索単語ファイル31およびそれに対応したビットマップファイル32が作成される。
【0083】
なお、検索単語ファイルはRAM上に、ビットマップファイルはハードディスク上に置く事により、以後の検索が高速に実行できる。
【0084】
次に、このようにして得られた検索単語ファイル31及びビットマップファイル32に基づく文書検索処理について説明する。
【0085】
文書検索処理は、第1実施例とほとんど同じであり、図15に示すように、制御部24は、ステップS21で検索単語入力部8から検索単語が入力されると、ステップS22で入力された検索単語の文字数Mを算出する。そして、ステップS23で文字数カウンタ25を制御しM文字単語辞書と検索単語とを比較し検索単語IDを得る。次にステップS24で検索単語ファイル記録部7にアクセスして検索単語ファイル31を検索する。次に、ステップS35で単語IDと同じ名前のビットマップファイルを、ハードディスク上からロードし、ステップS36で読み込んだビットマップ内のどの位置に1ビットがセットして有るか検索して”1”にセットしてあるビット番号を取得する。そして、第1実施例と同様に、ステップS25で検索結果を当該文書ファイルとして検索結果記録部に記録し、ステップS26で検索結果として文書見出し情報を検索結果表示部10に表示して処理を終了する。
【0086】
次に、上記の処理を具体的に説明する。
【0087】
例えば「内視鏡」という単語で文書を探し出したいとすれば、操作者が検索単語「内視鏡」を、検索単語入力部8のキーボード等を用いて入力する。
【0088】
検索単語の文字数Mを計算する。計算した文字数Mを文字数カウンタ25にセットし、対応した文字数の単語辞書ファイルを読み込む。この場合は、M=3の文字単語辞書ファイルを読み込む。
【0089】
単語番号カウンタ26を1から順にインクリメントし、辞書内の単語と検索単語「内視鏡」を比較検索する。
【0090】
比較の結果一致した時の単語番号カウンタ26から、単語番号(この例では0011:図3参照)を認識する。この操作により「内視鏡」という検索単語の辞書番号と単語番号すなわち単語ID=00030011を知る事が出来る。
【0091】
次に、検索単語ファイル31を読み込む。検索単語ファイル31の中から、検索単語「内視鏡」に対応した単語IDが存在するか検索する。検索単語ファイルはRAM上に設けられているので、この検索は瞬時に終了する。
【0092】
もし存在すれば、その単語IDと同じ名前のビットマップファイル32を、ハードディスク上から読み込む。読み込んだビットマップ32内のどの位置に1ビットがセットして有るか検索する。
【0093】
ここでは、文書番号”T00020”と”T00185”に対応した位置のビットが1にセットされていたとする。この処理で、文書番号”T00020”と文書番号”T00185”には、「内視鏡」という単語が存在している事が判明した。
【0094】
そして、第1実施例と同様に、”T00020”と”T00185”を該当文書ファイルに記録する。
【0095】
次に本実施例での絞り込み検索を説明する。
【0096】
例えば、前記までの処理で「内視鏡」という単語が存在する”T00020”と”T00185”が検索されていたとする。さらに、「光源」という検索単語で検索する場合は、最初に前記の「内視鏡」での検索同様に、「光源」という検索単語の単語IDを単語辞書ファイルから検索する。
【0097】
次に、「光源」の単語IDが検索単語ファイル31に存在するか調べ、存在すればその単語IDに対応したビットマップ32を読み込む。読み込んだ後はそのビットを全て検索するのではなく、”T00020”と”T00185”に対応するビットが1か否かのみを調べる。
【0098】
その結果、”T00020”に対応するビットのみが1で、”T00185”に対応するビットが0であったとすれば、”T00020”のみを該当文書ファイルに記録する。
【0099】
そして、第1実施例と同様に、上記検索で検索した文書番号に対応する文書ファイルから題名、作者、作成日等その文書の見出し情報を読み込み、一覧表表示する。
【0100】
以上説明したように、本実施例によれば、第1実施例の場合には、文書毎に存在する検索単語ファイルを全て検索する必要が有ったが、本実施例では、検索単語に対応した1つのビットマップファイルのみを検索すれば良い為、さらに高速に検索する事が可能となる。
【0101】
なお、第2実施例で作成したビットマップファイルを圧縮して記録するようにしてもよい。
【0102】
すなわち、ビットマップファイルの中身は、その単語が存在する文書を識別する為のビットが書かれている。従って、多くの文書に存在する単語に関しては、そのビットマップは殆ど1である。また、逆に1つの文書にのみ存在する単語に関しては、1にセットしてあるビットが1つのみでその他はすべて0である。
【0103】
従って、例えば、0または1が連続して並んでいる時には、図16に示すように、高い圧縮率を実現できるランレングス法を用いてビットマップファイルサイズを圧縮する事が可能である。
【0104】
このランレングス法に関しては、例えば[コンピュータ画像処理のP.128〜P.132]に記載されているので、その詳細は省略する。
【0105】
また、存在する文書が少ない単語に関しては、そのビットマップファイルはビットマップ形式では無く、文書番号そのもので記録しておく方法もある。
【0106】
この場合、例えば10万件の文書をビットマップ形式で記録した場合には10万ビットが必要であるのに対して、図17に示すように、文書番号で記録した場合には1文書につき17ビットで可能になる。
【0107】
ここで、ビットマップファイルの内容がビットマップファイル形式なのか文書番号形式なのかは、ビットマップファイルのファイル名に識別情報を入れておく事で識別可能とする。例えば、ファイルの内容がビットマップ形式の場合はファイル名の拡張子をBITとし、ファイルの内容が文書番号の場合は、拡張子をBUNとする。なお、ビットマップファイルを読み出すときは、拡張子がどちらか不明なので、まず、拡張子無しのファイル名で読み出してみて、その読み出したファイルの拡張子を調べることで、ファイル形式を判別する。
【0108】
また、上記第2実施例では文書中に出現する単語による検索単語の登録及びその検索単語による文書検索について説明したが、文書中に出現する単語以外に、文書中には表れないがその文書を特定する情報、例えば作者名、文献発行日、雑誌名等の特定項目を用いて検索するようにしてもよい。
【0109】
この場合、検索単語と同様に作者、発行日、雑誌名等を、辞書登録部29により、その文字数の単語辞書ファイルに、新たに発生させた単語番号と共に登録する。図18に特定項目として作者名を登録した単語辞書ファイルの一例を示す。
【0110】
そして、上記第2実施例で作成した検索単語ファイルに特定項目の単語IDを追加すると共に、特定項目毎のビットマップファイルを作成する。
【0111】
この様に検索単語ファイルおよびビットマップファイルを構成する事により、文書中に出現する検索単語と同様のアルゴリズム処理で、特定項目での検索が可能となる。
【0112】
なお、例えば、文書番号”T00005”の文書の作者名が「山田 一」であった時の、検索単語ファイル、ビットマップファイルを、図19及び図20に示す。
【0113】
また、たとえば、文書中の単語では無く、発行日と言う特定項目で検索するとする(例えば、文献発行日「1994年06月10日」で検索する)。
【0114】
この場合、検索単語の時と同様に、文字列「1994年06月10日」の単語IDを、単語同様の処理で、1文字単語辞書ファイルから20文字単語辞書ファイルを検索して取得する。
【0115】
上記単語IDが検索単語ファイルに存在するか検索する。存在した場合には、その単語IDに対応するビットマップファイルを読みだし、文書番号を取得する。その後の処理は同じ。
【0116】
ただし、特定項目の場合、それに該当する文書数が少ないと考えられるので(例えば、「1994年06月10日」に発行された雑誌は多くても数冊であると予想される為)、ビットマップファイルは、図17に示したように文書番号形式で記録した方が良い。
【0117】
このように特定項目を用いることで、文書中に出現する単語検索と同じアルゴリズムで、単語以外の特定項目での検索が可能となり、検索能力を向上させることができる。
【0118】
さらに、上記第2実施例において、出現回数が多い順に、検索単語ファイルを並び変えておいてもよく、または、良く検索される検索単語の順に、検索単語を並び変えて置いてもよい。
【0119】
すなわち、検索頻度に応じて検索単語ファイルを並び変えて置く。図21に出現回数の多い順に並び変えた時の検索単語ファイルの一例を示す。
【0120】
このように検索単語ファイルの並び変えを行うことで、出現回数が多い単語、または検索頻度が多い単語に関しては、検索する順番が早いので、その分だけ高速に検索できる。
【0121】
特に、検索頻度が多い順に並び変えておく方法は、使用分野が特定している場合(例えば特許分野、医療分野、工業分野、薬品分野等)に大変有効である。
【0122】
次に、第3実施例について説明する。図22ないし図31は本発明の第3実施例に係わり、図22は文書検索/登録システムの構成を示す構成図、図23は図22の頭文字別辞書ファイル記録部に記録される頭文字別辞書ファイルの構成を示す構成図、図24は図22の文書検索/登録システムによる検索単語の登録処理の流れを示す第1のフローチャート、図25は図22の文書検索/登録システムによる検索単語の登録処理の流れを示す第2のフローチャート、図26は図24及び図25による処理の具体例を説明する説明図、図27は図26における処理により得られたビットマップファイルの構成を示す構成図、図28は図22の文書検索/登録システムによる文書の検索処理の流れを示す第1のフローチャート、図29は図22の文書検索/登録システムによる文書の検索処理の流れを示す第2のフローチャート、図30は図28及び図29による処理の具体例を説明する説明図、図31は図22の文書検索/登録システムによる検索自由文による検索が可能な検索処理の変形例を説明する図である。第3実施例は第2実施例とほとんど同じであるので、異なる点のみ説明する。
【0123】
前記第1及び第2実施例では、単語辞書をその単語の文字数で分類していた。即ち、1文字で構成される単語のみが集まった1文字単語辞書から、20文字で構成される単語が集まった20文字単語辞書までの20個の辞書で構成されていた。
【0124】
この場合、例えば3文字単語辞書内の単語数は約2万個近くあり、その中から例えば「内視鏡」を検索して捜し出すのには、かなりの時間が必要であり、文書の展開及び検索時間を高速にする事には限界がある。
【0125】
そこで、本実施例では、単語を頭文字毎に分類する事によって、1単語辞書内の単語数を少なくする事ができ、より高速な登録と検索を実現する。
【0126】
本実施例では、文字数別単語辞書の代わりに、図22に示すように、頭文字毎に単語を分類した頭文字別辞書ファイル40を記録している頭文字別辞書ファイル記録部41を用いる。すなわち、図23に示すように、頭文字別辞書ファイル40では、例えば「内」が先頭文字の単語として、「内」「内科」「内容」「内視鏡」「内政干渉」等を1つのグループとし、「書」であれば、「書」「書類」「書物」「書棚」等を1つのグループとしている。また、頭文字別辞書ファイル記録部41には、後述する頭文字別先頭アドレスを格納している頭文字別先頭アドレス格納部42が設けられている。
【0127】
なお、文字数別単語辞書の場合は1つ1つの単語辞書をファイル形式としたが、頭文字別単語辞書では頭文字単語辞書毎にグループとし、グループをメモリ等へ順次並べて格納して有る。ちなみに、1つの頭文字別辞書の中に含まれる単語数は、1番多いもので約400個程度である。また、本実施例では、検索単語ファイルは使用しないが、代わりにビットマップファイルは全ての単語に対してあらかじめ作成しておく(ただし、ビットは全て0に初期セット)。
【0128】
また、本実施例では、図22に示すように、文字数カウンタの代わりに頭文字先頭アドレスカウンタ44が設けられている。この頭文字先頭アドレスカウンタ44の作用については後述する。その他の構成は第2実施例と同じである。
【0129】
次に、本実施例の検索単語登録処理を図24ないし図27を用いて説明する。
【0130】
図24に示すように、文書検索システムでは、ステップS41で登録したい文書1を文書読取部3により、例えばOCRで光学的に読み込む、または、例えばフロッピーディスクに電子的に保存されていた文書であれば、その内容をテキストデータとして読み込む。そして、ステップS42で読み込んだ文書の文書データを文書ファイル記録部4に記録する。
【0131】
次にステップS43で、登録/検索制御部6の制御部24が展開処理を実行させたい文書データを文書ファイル記録部4から読み出しメモリ21に記憶する。なお、ここでは、読みだした文書番号を例えば”T00000”とし、文書を図26(a)に示すような特許公開公報とする。
【0132】
そしてステップS44で、文字位置カウンタ22を0にセットし、ステップS45で文字位置カウンタ22が示す数に対応する文書データの位置(この時点は文書の最初から1文字目)から1文字数分を切り出しレジスタ23に記憶する。そして、ステップS46で切り出した1文字のシフトJISコードを調べる。例えば、この場合の「内」のシフトJISコードは、93E0である。
【0133】
次に、ステップS47で、頭文字先頭アドレスカウンタ44がシフトJISコードを出力することで、図26(b)に示すように、頭文字別先頭アドレス格納部42内の、93E0番目に格納された「頭文字別先頭アドレス」を読み取る。この場合は、10001000である。
【0134】
これで、「内」の頭文字辞書が格納されているグループの先頭アドレスが取得できた事になる。
【0135】
次に、図26(c)に示す頭文字単語辞書グループ内の単語と、文書との逐次マッチングを取る。なお、図26(d)に頭文字単語辞書の詳細なデータ構成を示す。
【0136】
具体的には、文字位置カウンタ22が示す所から、単語辞書内の単語と同じ文字数の文字列を切り出し、レジスタ23へとセットする。そして、比較部27でレジスタ23の内容と単語辞書の単語のマッチングをとる。
【0137】
つまり、ステップS48で単語番号カウンタ26の値を1にセットする。そして、ステップS49ないしS51で辞書内の「内」と、文書の「内」のマッチングを取る。そして、図25に移り、ステップS52でマッチング結果を判定する。この場合、辞書内の「内」と文書の「内」が一致するので、この文書には「内」が存在する事が判明した。
【0138】
そこで、第2実施例同様に、ステップS53及びS54で「内」に対応するビットマップファイル中の、この文書に対応するビットを1にセットする。
【0139】
ただし、このビットマップのファイル名は、「内」のシフトJISコードと、単語辞書中にある順番(単語番号カウンタ26の値)を合わせたものとする。従って、この場合は、シフトJISが93E0で、順番が0001であるから、そのファイル名は、93E00001となる。
【0140】
そして、ステップS55で単語番号カウンタ26を1進め、ステップS56単語グループの最後かどうか判断するが、この場合は最後ではないので、図24のステップS49にもどる。
【0141】
同様にして、辞書内の次の単語である「内科」と、この「内科」と同じ文字数の文書の「内視」を切り出しマッチングを取るが、一致しないのでビットマップファイルへの書き込みは行われない。そして、ステップS55で単語番号カウンタ26を1進め、ステップS56単語辞書の最後かどうか判断するが、この場合は最後ではないので、図24のステップS49にもどる。
【0142】
再び同様にして、辞書内の次の単語である「内容」と、この「内容」と同じ文字数の文書の「内視」を切り出しマッチングを取るが、一致しないのでビットマップファイルへの書き込みは行われない。そして、ステップS55で単語番号カウンタ26を1進め、ステップS56単語辞書の最後かどうか判断するが、この場合は最後ではないので、図24のステップS49にもどる。
【0143】
再び同様にして、辞書内の次の単語である辞書内の「内視鏡」と、この「内視鏡」と同じ文字数の文書の「内視鏡」を切り出してマッチングを取る。ここで、辞書内の「内視鏡」と文書の「内視鏡」が一致したので、この文書には「内視鏡」が存在する事が判明した。
【0144】
そこで、第2実施例同様に、ステップS53及びS54で「内視鏡」に対応するビットマップファイル中の、この文書に対応するビットを1にセットする。
【0145】
ただし、上述したようにこのビットマップのファイル名は、「内」のシフトJISコードと、単語辞書中にある順番(単語番号カウンタ26の値)を合わせたものとする。従ってこの場合は、シフトJISが93E0で、順番が0004であるから、そのファイル名は、93E00004となる。
【0146】
全く同様にして、辞書内の「内政干渉」と文書の「内視鏡画」のマッチングを取り、単語番号カウンタ26を1進める。
【0147】
このようにして、上記の処理を、頭文字が「内」で始まる単語辞書内の単語が無くなるまで行う。
【0148】
そして、ステップS56で単語が無くなったと判断したら、ステップS57で文字位置カウンタを1増加し、図26(e)に示すように、文書の切り出し位置を1つ右へとずらす。上記の処理を、ステップS58で文書の終わりと判断するまで、繰り返すことで、図27に示すようなビットマップファイルを得る。
【0149】
次に、このようにして得られたビットマップファイルに基づく文書検索処理について、図28ないし図30を用いて具体的に説明する。
【0150】
図30(a)に示すように、「内視鏡」が検索単語として、キーボードから入力されたとする。
【0151】
そこで、図28に示すように、ステップS61で検索単語の1文字数分を切り出し、レジスタ23に記憶する。そして、ステップS62で切り出した1文字のシフトJISコードを調べる。例えば、この場合の「内」のシフトJISコードは、93E0である。
【0152】
次に、ステップS63で、図30(b)に示すように、頭文字別先頭アドレス格納部42内の、93E0番目に格納された「頭文字別先頭アドレス」を読み取る。この場合は、10001000である。
【0153】
これで、「内」の頭文字辞書が格納されているグループの先頭アドレスが取得できた事になる。
【0154】
次に、図30(c)に示す頭文字単語辞書内の単語と、検索単語「内視鏡」との逐次マッチングを取る。なお、図30(d)に頭文字単語辞書の詳細なデータ構成を示す。
【0155】
具体的には、検索単語「内視鏡」をレジスタにセットし、単語辞書内の単語と比較部27を用いて逐次比較していく。
【0156】
つまり、ステップS64で単語番号カウンタ26の値を1にセットする。そして、ステップS65及びS66で検索単語の「内視鏡」と、単語辞書内の「内」のマッチングを取る。そして、図29に移り、ステップS67でマッチング結果を判定する。この場合、辞書内の「内」と検索単語の「内視鏡」が一致しない事が判明した。そして、ステップS71で単語番号カウンタ26を1増加させる。次に、ステップS72で単語辞書の最後かどうか判断するが、この場合は最後ではないので、図28のステップS65に戻り、辞書内の次の単語、この場合は「内科」という単語と、レジスタ内の検索単語「内視鏡」とのマッチングを、上記の処理と同様に行う。以下、同様にして単語番号カウンタ26を1進め、検索単語「内視鏡」と、辞書内の「内容」とのマッチングを取り、再び単語番号カウンタ26を1進め、検索単語「内視鏡」と、辞書内の「内視鏡」とのマッチングを取る。
【0157】
ここで、検索単語の「内視鏡」と辞書内の「内視鏡」が一致した。
【0158】
従って、この場合は、シフトJISが93E0で、単語番号カウンタが0004であるから、そのファイル名は、93E00004である事が判明した。
【0159】
そこで、図29のステップS68ないしS70で、図30(e)に示すようなビットマップファイル名が93E00004のファイルを読み込み、その中で、1にセットしてあるビットを探し出す。次に、そのビットに対応する文書を該当文書ファイルに記録する。
【0160】
上記の処理を単語辞書の最後の単語まで繰り返し、ステップS72で最後と判断されると、ステップS73で該当文書ファイルに記録されている文書の見出し情報を検索結果表示部10に表示する。
【0161】
このように、本実施例では、単語を頭文字毎に分類する事によって1単語辞書内の単語数を少なくする事によって、より高速な登録と検索を実現する。
【0162】
なお、検索時に、合成語(2つの単語を合わせた語)で検索したい場合が有る。例えば、「半導体操作」と言う単語を検索単語として検索する場合を考えると、「半導体操作」と言う語は、「半導体」と言う単語と「操作」と言う単語を合成したものである。
【0163】
そこで、この様な処理を可能とする本実施例の変形例について説明する。ここで、検索単語の登録に関しては、本実施例と同じであるので説明は省略する。
【0164】
この変形例では、最初に、検索単語に対して、本実施例の展開と同様の展開処理を施し、合成語がどのような単語で合成されているのかを調べる。
【0165】
(1)頭文字辞書の先頭アドレスの取得
検索単語の最初から1文字目を切り出し、その文字のシフトJISコードを調べる。例えば、この場合の「半」のシフトJISコードは、94BCである。
【0166】
次に、単語頭文字別先頭アドレス格納部内の、94BC番目に格納された「頭文字別先頭アドレス」を読み取る。
【0167】
これで、「半」の頭文字辞書が格納されているエリアの先頭アドレスが判別できた事になる。
【0168】
(2)頭文字単語辞書と検索単語との逐次マッチング
頭文字単語辞書内の単語と、検索単語との逐次マッチングを取る。具体的には、先頭アドレスから始まる単語辞書内の単語の文字数と同じ文字数の文字列を検索単語から切り出し、逐次マッチングさせる。
【0169】
この場合では、辞書内の「半分」と、検索単語の「半導」のマッチングを取る。そして、単語番号カウンタ26の値を1にセットする。次に辞書内の「半々」と、検索単語の「半導」のマッチングを取る。そして、単語番号カウンタ26を1進める。さらに、辞書内の「半透明」と、検索単語の「半導体」のマッチングを取る。
【0170】
そして、単語番号カウンタ26を1進める。続いて、辞書内の「半導体」と、検索単語の「半導体」のマッチングを取る。そして、単語番号カウンタ26を1進める。
【0171】
ここで、辞書内の「半導体」と検索単語の「半導体」が一致したので、この検索単語には「半導体」が存在する事が判明した。
【0172】
また、「半導体」に対応するビットマップのファイル名は、94BC0004で有る事が求められた。
【0173】
上記の処理を、頭文字が「半」で始まる単語グループ内の単語が無くなるまで行う。単語が無くなったら、検索単語の切り出し位置を1つ右へとずらす。
【0174】
上記の処理を、検索単語の終わりまで、繰り返す。
【0175】
上記処理を行った結果、「半導体操作」と言う合成語を構成している単語としては、「半導体」「導体」「体操」「操作」がその候補として挙げられたとする。
【0176】
(3)検索単語の選択
上記処理で求められた候補単語を検索結果表示部10のモニタ等に表示し、操作者に検索に使用したい単語を選択される。
【0177】
この場合は、「半導体」と「操作」を選択したとする。
【0178】
(4)ビットマップファイル内のビットの検索
第2実施例での「内視鏡」と「光源」の両方の単語を有する文書の絞り込み処理と同様に、「半導体」と「操作」の両方を有する文書を探し出す。すなわち、「半導体」に対応するビットファイルファイルを読み込み、その中で、1にセットしてあるビットを探し出す。また、「操作」に対応するビットマップファイルを読み込み、その中で、1にセットしてあるビットを抽出する。
【0179】
その中で、「半導体」と「操作」の両方のビットマップファイルに1がセットして有る文書を抽出する。
【0180】
(5)文書中における検索単語の連結性調査
「半導体」と「操作」の両方が存在する複数の文書に対して、最初に「半導体」と言う単語と文書の文字列とのマッチングを取り、「半導体」が存在する位置を調査する。
【0181】
同様に、「操作」と言う単語と文書の文字列とのマッチングを取り、「操作」が存在する位置を調査する。処理としては、第1実施例の表示処理での単語位置探索と同様である。そして、調査した中で、「半導体」と言う単語が存在し、その直後に「操作」と言う単語が存在する様な位置関係にあるものを抽出する。
【0182】
これで、「半導体」と「操作」の両方が存在し、しかも両方が続けて記述された「半導体操作」である合成語のある文書が抽出できたことになる。そして、抽出した文書の見出し情報を検索結果表示部に表示する。また、合成語からなる検索単語が、例えば「文書検索」(=文書+検索)の場合のように、文字の重複なしに一意的に展開できた場合は、合成語を構成する単語について選択の自由度がなくなるので、上記「(3)検索単語の選択」のステップをスキップすることができる。
【0183】
上記変形例での処理は、検索単語として合成語の場合を想定したが、検索単語として、自由文を使用する事も考えられる。
【0184】
その場合もこの変形例と同様に、図31(a)に示すような入力された検索自由文を、図31(b)に示すように単語展開し、図31(c)に示すように検索に使用する検索単語の候補を選択し、その候補単語が全て存在する文書を探し出せば良い事になる。図31の場合「CCD」と、「面順次発光光源」と、「ビデオ内視鏡システムが候補単語となっている。
【0185】
この変形例では、合成語等での検索が可能となるので、検索入力時の自由度が増す。
【0186】
次に、第4実施例について説明する。図32ないし図36は本発明の第4実施例に係わり、図32は頭1文字と最後尾1文字が同じ単語毎に細分化されたグループからなる頭文字別単語辞書の構成を示す構成図、図33は図32の頭文字別単語辞書を用いた検索単語の登録処理の流れを示す第1のフローチャート、図34は図33の第1のフローチャートに続く検索単語の登録処理の流れを示す第2のフローチャート、図35は図32及び図33で登録された検索単語による文書の検索処理の流れを示す第1のフローチャート、図36は図35の第1のフローチャートに続く文書の検索処理の流れを示す第2のフローチャートである。第4実施例は第3実施例とほとんど同じであり、システム構成は同じで処理のみが異なるので、異なる点のみ説明する。
【0187】
第3実施例では、頭文字別単語辞書を用いたが、日本語の場合はこの方法で単語が細かく分類でき高速化が図られるが、英語の場合には、同じ頭文字で始まる単語の数が多く存在する為に、単語が細分化されず、この方法はさほど効果を持たない。
【0188】
そこで、本実施例では、英語の様に頭文字が同じ単語が多数存在する場合でも、辞書内の単語の細分化が実現でき、登録/検索の高速化を可能とする。
【0189】
辞書内の単語を、以下のいずれかの方法で細分化しておく。
【0190】
(1)頭1文字と最後尾1文字が同じ単語毎に細分化する。
【0191】
例えば、図32に示すように、頭1文字が「a」で始り最後が「r」で終わる単語、「answer」「ancestor」「appear」等を1つのグループとし、「a」で始り最後が「y」で終わる単語「angry」「apply」「army」等を1つのグループとする。
【0192】
(2)頭2文字毎に、細分化する
例えば、頭2文字が「ab」で始まる単語、「able」「above」「abroad」等を1つのグループとし、「ac」で始まる単語「accent」「accompany」「account」等を1つのグループとする。
【0193】
(3)頭1文字と文字数が同じ単語毎に細分化する。
【0194】
例えば、頭1文字が「a」で始り文字数が3文字の単語、「art」「air」「arm」等を1つのグループとし、「a」で始り文字数が5文字の単語「apart」「atlas」「aside」等を1つのグループとする。
【0195】
(4)上記(1)〜(3)を掛け合わせた条件で、細分化する。
【0196】
そして、上記のようにして、細分化したグループには、シフトJISの未使用コードを割り振る。つまり、例えば、シフトJISコードでは7100から71FFまでは未使用エリアとなっているので、上記(1)の頭1文字が「a」で始り最後が「r」で終わる単語群には、シフトJISコードの71F0を割り振る。
【0197】
次に本実施例の検索単語の登録処理について説明する。
【0198】
英語の場合は個々の単語がスペースで区切られている為、単語の区切りが明確でない日本語の場合とは、展開が異なる。
【0199】
例えば、上記の細分化グループとして(1)におけるグループである頭1文字と最後尾1文字が同じ単語毎に細分化してある場合を考える。
【0200】
図33に示すように、本実施例の文書検索システムでは、ステップS81で登録したい文書1を文書読取部3により、例えばOCRで光学的に読み込む、または、例えばフロッピーディスクに電子的に保存されていた文書であれば、その内容をテキストデータとして読み込む。そして、ステップS82で読み込んだ文書の文書データを文書ファイル記録部4に記録する。
【0201】
次にステップS83で、登録/検索制御部6の制御部24が展開処理を実行させたい文書データを文書ファイル記録部4から読み出しメモリ21に記憶する。
【0202】
そしてステップS84で、文字位置カウンタ22を0にセットし、ステップS85で文字位置カウンタ22が示す数に対応する文書データの位置(この時点は文書の最初から1文字目)から次のスペースまでの1単語を切り出し(この場合は例えばanswer)、そして、ステップS86で切り出した1単語をレジスタ23に格納すると共に、ステップS87で先頭1文字と最後尾1文字(この場合は、aとr)を調べ、その結果からステップS88で先頭1文字と最後尾1文字に対応する単語辞書のシフトJISコードを調べる。なお、例えば、この場合の「answer」が属ずるグループのシフトJISコードは、71F0である。
【0203】
次に、ステップS89で、頭文字先頭アドレスカウンタ44がシフトJISコードを出力することで、71F0番目に格納された「頭文字別先頭アドレス」を読み取る。この場合は、15704300であったとする。これで、「answer」の属する頭文字辞書が格納されているエリアの先頭アドレスが判別できた事になる。
【0204】
次に、頭文字単語辞書内の単語と、文書との逐次マッチングを取る。具体的には、比較部27で、レジスタ23に格納されている文字位置カウンタ22が示す所からスペースまでの切りだした単語と単語辞書の単語とのマッチングをとる。
【0205】
つまり、ステップS90で単語番号カウンタ26の値を1にセットする。そして、ステップS91及びS92で、例えば辞書内の「ancestor」と、文書の「answer」のマッチングを取る(図32参照)。そして、図34に移り、ステップS93でマッチング結果を判定する。この場合、辞書内の「ancestor」と文書の「answer」とが一致しないので、ステップS96で単語番号カウンタ26を1進め、ステップS97で単語グループの最後かどうか判断するが、この場合は最後ではないので、図33のステップS91にもどる。
【0206】
同様にして、ステップ91及びS92で、辞書内の次の単語である「appear」と、文書の「answer」のマッチングを取る。そして、図34に移り、ステップS93でマッチング結果を判定する。この場合、辞書内の「ancestor」と文書の「answer」とが一致しないので、ステップS96で単語番号カウンタ26を1進め、ステップS97で単語グループの最後かどうか判断するが、この場合は最後ではないので、図33のステップS91にもどる。
【0207】
同様にして、ステップ91及びS92で、辞書内の次の単語である「answer」と、文書の「answer」のマッチングを取る。
【0208】
ここで、辞書内の「answer」と文書の「answer」が一致したので、この文書には「answer」が存在する事が判明した。
【0209】
ステップS93よりステップS94に処理が移行し、第3実施例同様に、「answer」に対応するビットマップ中の、この文書に対応するビットを1にセットする。
【0210】
ただし、このビットマップのファイル名は、「answer」が属するグループのシフトJISコードと、単語辞書中にある順番(単語番号カウンタ26の値)を合わせたものとする。従って、この場合は、シフトJISが71F0で、順番が0003であるから、そのファイル名は、71F00003となる。
【0211】
上記マッチングは、同じ単語が見つかるか、又は辞書内の単語グループの最後まで繰り返す。
【0212】
同じ単語が見つかるか、辞書内の単語グループの最後まで繰り返したら、ステップS99で文書内の単語切り出し開始位置を、次のスペースへと右へずらす。また、その時に切り出す文字列の最後は、2番目のスペースまでとする。
【0213】
そして、ステップS100で文書の最後かどうか判定することで、上記の処理を、文書の終わりまで、繰り返す。
【0214】
ここで、英語の場合、文書中の単語が名詞であれば複数形の時に最後尾に「s,es」を付け、動詞であれば過去形の時に最後尾に「ed」を付け、形容詞であれば比較級の時に「er,est」を付ける等の語尾変化を伴う事が多い。
【0215】
従って、この「頭文字辞書の先頭アドレスの取得」処理(図33のステップS85〜S89)において、切り出した単語が語尾変化をしている事も考えられるので、もし文書中の単語の語尾が 「s,es,ed、er,est」であった場合には、その語尾を取り除いた文字列に対しても、語尾を取り除かない文字列に対する処理に合わせて、同様の処理を行っておく。
【0216】
なお、単語が複数形、過去形、比較形時に規則変化する場合にはこの処理で対応でき、不規則変化する場合にはその不規則変化した形での単語をあらかじめ辞書に登録しておく事で対応できる。
【0217】
次に、このようにして得られたビットマップファイルに基づく文書検索処理について、図35及び図36を用いて説明する。
【0218】
まず、「answer」が検索単語として、キーボードから入力されたとする。
【0219】
そこで、図35に示すように、ステップS101で検索単語の先頭1文字と最後尾1文字(この場合は、aとr)を調べ、その結果からステップS102で先頭1文字と最後尾1文字に対応する単語辞書のシフトJISコードを調べる。なお、例えば、この場合の「answer」が属ずるグループのシフトJISコードは、71F0である。
【0220】
次に、ステップS103で、頭文字先頭アドレスカウンタ44がシフトJISコードを出力することで、71F0番目に格納された「頭文字別先頭アドレス」を読み取る。この場合は、15704300であったとする。これで、「answer」の属する頭文字辞書が格納されている先頭アドレスが判別できた事になる。
【0221】
次に、頭文字単語辞書内の単語と、文書との逐次マッチングを取る。具体的には、比較部27で、レジスタ23に格納されている検索単語と単語辞書の単語とのマッチングをとる。
【0222】
つまり、ステップS104で単語番号カウンタ26の値を1にセットする。そして、ステップS105及びS106で、例えば辞書内の「ancestor」と、文書の「answer」のマッチングを取る(図32参照)。そして、図36に移り、ステップS107でマッチング結果を判定する。この場合、辞書内の「ancestor」と文書の「answer」とが一致しないので、ステップS111で単語番号カウンタ26を1進め、ステップS112で単語グループの最後かどうか判断するが、この場合は最後ではないので、図35のステップS105にもどる。
【0223】
同様にして、ステップS105及びS106で、辞書内の次の単語である「appear」と、文書の「answer」のマッチングを取る。そして、図36に移り、ステップS107でマッチング結果を判定する。この場合、辞書内の「ancestor」と文書の「answer」とが一致しないので、ステップS111で単語番号カウンタ26を1進め、ステップS112で単語グループの最後かどうか判断するが、この場合は最後ではないので、図35のステップS105にもどる。
【0224】
同様にして、ステップS105及びS106で、辞書内の次の単語である「answer」と、文書の「answer」のマッチングを取る。
【0225】
ここで、辞書内の「answer」と文書の「answer」が一致したので、この文書には「answer」が存在する事が判明した。
【0226】
従って、この場合は、シフトJISが71F0で、順番が0003であるから、そのファイル名は、71F00003である事が判明した。
【0227】
そこで、図29のステップS108ないしS110で、ビットマップファイル名が93E00004のファイルを読み込み、その中で、1にセットしてあるビットを探し出す。次に、そのビットに対応する文書を該当文書ファイルに記録する。
【0228】
上記の処理を単語グループの最後の単語まで繰り返し、ステップS112で最後と判断されると、ステップS113で該当文書ファイルに記録されている文書の見出し情報を検索結果表示部10に表示する。
【0229】
このように、本実施例によれば、英語の様に、同じ頭文字を有する単語が多く存在する場合でも、単語辞書を更に細分化する事で、登録/検索処理の高速化が維持できる。
【0230】
次に、第5実施例について説明する。図37ないし図41は本発明の第5実施例に係わり、図37は文書登録/検索システムの構成を示す構成図、図38は図37の文書登録/検索システムにおける入力検索単語による検索項目及び候補項目を取得する処理の流れを示すフローチャート、図39は図38の検索項目と同じ文字数の辞書との比較処理の流れを示すフローチャート、図40は図38の検索項目より1文字多い文字数の辞書との比較処理の流れを示すフローチャート、図41は図38の検索項目より1文字少ない文字数の辞書との比較処理の流れを示すフローチャートである。第5実施例は第2実施例とほとんど同じであるので、異なる点のみ説明する。
【0231】
第2実施例の変形例(図18参照)でも述べたように、文書を検索する場合には、文書に含まれる単語以外に、作者名、発行日、雑誌名等での検索する事も頻繁におきる。
【0232】
ここで、登録時にこれら特定項目を検索語としてキーボードから入力する時には、タイプミスによる誤入力をともなう事がある。特に、作者名をローマ字入力する場合には、以下の三種類のミスを犯しやすい。
【0233】
(1)スペル入力ミス
例えば、「ICHIROU」と入力すべきところを、「ISHIROU」と入力してしまう。
【0234】
(2)重複入力ミス
例えば、「ICHIROU」と入力すべきところを、「ICCHIROU」と入力してしまう。
【0235】
(3)スペル抜けミス
例えば、「ICHIROU」と入力すべきところを、「IHIROU」と入力してしまう。
【0236】
そこで、本実施例では、この様な登録時の入力ミスが有った場合でも、検索を可能とするいわゆる曖昧検索を実現する。
【0237】
本実施例の文書登録/検索システムでは、図34に示すように、レジスタ23の出力側にマッチングカウンタ51が設けられている。このマッチングカウンタ51の作用は後述する。
【0238】
その他の構成は第2実施例と同じである(なお、第2実施例は検索単語ファイルの構成が第1実施例と異なるので、その他の構成は実質的には図2に示した構成と同じことになる)。
【0239】
検索単語の登録処理は、第2実施例及びその変形例と同じであるので説明は省略する。
【0240】
次に、検索単語による文書検索処理について説明する。たとえば、「ICHIROU」と言う正式な作者名で検索するとする。
【0241】
この場合、検索単語の時と同様に、「ICHIROU」の単語IDを、単語同様の処理で、単語辞書ファイルを検索して取得する。
【0242】
この時に、登録時の入力ミスを想定し、本実施例では曖昧検索を実施する。
【0243】
ここでは、前述の3つの入力ミスが登録時に生じていたとする。即ち、「ICHIROU」と入力すべきところを、1字誤り「ISHIROU」「ICCHIROU」「IYCHIROU」「IHIROU」として登録されていたとする。
【0244】
図38に示すように、文書検索処理では、ステップS121で検索項目の文字数Nをチェックし文字数カウンタ25をNにセットする(この場合は、「ICHIROU」なので、7)。そして、ステップS122〜S124で、後述する検索項目と同じ文字数の辞書との比較処理、検索項目より1文字多い文字数の辞書との比較処理、検索項目より1文字少ない文字数の辞書との比較処理を順次行うことで、候補項目を取得する。
【0245】
次に、上記のステップS122〜S124での処理を図38ないし図41を用いて説明する。
【0246】
(1)ステップS122:検索項目と同じ文字数の単語辞書とのマッチング
図39に示すように、この処理では、ステップ131で単語番号カウンタ26を0にセットし、ステップS132で文字数Nの単語辞書内の単語と、検索項目との相関を取る。このマッチングでは、辞書内の単語と検索項目とを、先頭から1字ずつ比較する。そして、合致する毎に、マッチングカウンタ51を1増加させる。
【0247】
そして、ステップS133でマッチングカウンタ51がNかどうか判断し、Nの時には、ステップS134で完全一致したとして検索項目として抽出する。
【0248】
また、Nでない場合は、ステップS135でマッチングカウンタ51がN−1かどうか判断し、N−1の時には、単語は1字違いで有り、1字の入力ミスで有る事が予想される。そこで、ステップS136で、例えば「ISHIROU」が候補項目として抽出される。
【0249】
そして、ステップS137で単語番号をインクリメントし、ステップS138で辞書内の最後の判定を繰り返すことで、項目及び候補項目を得る。
【0250】
(2)ステップS123:検索項目より1文字多い文字数の単語辞書とのマッチング
図40に示すように、この処理では、ステップ141で単語番号カウンタ26を0にセットし、ステップS142で文字数N+1の単語辞書内の単語と、検索項目との相関を取る。このマッチングでは、辞書内の単語と検索項目とを、先頭から1字ずつ比較する。そして、合致する毎に、マッチングカウンタ51を1増加させる。つまり、検索項目が「ICHIROU」で辞書内の単語が「ICCHIROU」である場合にはカウンタの値は2、辞書内の単語が「IYCHIROU」である場合にはカウンタの値は1となる。
【0251】
次に、ステップS143でレジスタ23内のデータ「ICHIROU」を1文字分右へシフトし、ステップS144で「_ICHIROU」とし、辞書内の単語と比較する。そして、合致する毎に、マッチングカウンタ51を1増加させる。その結果、辞書内の単語が「ICCHIROU」である場合にはカウンタの値は6、辞書内の単語が「IYCHIROU」である場合もカウンタの値は6となる。そして、マッチングカウンタ51において前の処理(ステップS142)でのカウンタの値と今回のカウンタの値を加算した値をカウント値とする。
【0252】
そして、ステップS145でマッチングカウンタ51の値がN以上かどうか判断し、N以上の時には、単語は1字違いで有り、1字の入力ミスで有る事が予想される。そこで、ステップS146で、例えば「ICCHIROU」や「IYCHIROU」が候補項目として抽出される。
【0253】
そして、ステップS147で単語番号をインクリメントし、ステップS148で辞書内の最後の判定を繰り返すことで、候補項目を得る。
【0254】
4.検索項目より1文字少ない文字数の単語辞書とのマッチング
(3)ステップS124:検索項目より1文字少ない文字数の単語辞書とのマッチング
図41に示すように、この処理では、ステップ151で単語番号カウンタ26を0にセットし、ステップS152で文字数N−1の単語辞書内の単語と、検索項目との相関を取る。このマッチングでは、辞書内の単語と検索項目とを、先頭から1字ずつ比較する。そして、合致する毎に、マッチングカウンタ51を1増加させる。つまり、検索項目が「ICHIROU」で辞書内の単語が「IHIROU」である場合にはカウンタの値は1となる。
【0255】
次に、ステップS153で辞書内の単語「IHIROU」を1文字分右へシフトし、ステップS154で「_IHIROU」とし、レジスタ23内のデータと比較する。そして、合致する毎に、マッチングカウンタ51を1増加させる。その結果、辞書内の単語が「IHIROU」である場合にはカウンタの値は5となる。そして、マッチングカウンタ51において前の処理(ステップS152)でのカウンタの値と今回のカウンタの値を加算した値をカウント値とする。
【0256】
そして、ステップS155でマッチングカウンタ51の値がN−1以上かどうか判断し、N−1以上の時には、単語は1字違いで有り、1字の入力ミスで有る事が予想される。そこで、ステップS156で、例えば「IHIROU」が候補項目として抽出される。
【0257】
そして、ステップS157で単語番号をインクリメントし、ステップS158で辞書内の最後の判定を繰り返すことで、候補項目を得る。
【0258】
そして、このようにして得られた、完全一致した特定項目及び検索候補項目に対して検索単語ファイルを検索し、存在する場合には、そのビットマップファイルを読みだす。完全一致した特定項目に加えて、一字違いの候補項目に関しても、その対応する文書の見出し情報を読み込み、一覧表表示する。
【0259】
なお、ここでは一字の入力ミスを候補として挙げたが、2字までの入力ミスも候補として挙げる場合も、前記同様の以下の処理を行う事により実現可能である。
【0260】
その場合には、
(1)検索項目と同じ文字数の単語辞書とのマッチング
文字数Nの単語辞書内の単語と、検索項目文字列との相関を取る。カウンタ値がN−1、N−2の単語を候補として抽出する。
【0261】
(2)検索項目より2文字多い文字数の単語辞書とのマッチング
文字数N+1、N+2の単語辞書内の単語と、検索項目との相関を取る。文字数がN+2の単語辞書内の単語との相関を取る時には、検索項目文字列を右へシフトする処理を2回行う(「_ICHIROU」「__ICHIROU」)。3回の処理のカウンタ値の合計が、N以上の単語を候補として抽出する。
【0262】
(3)検索項目より2文字少ない文字数の単語辞書とのマッチング
文字数N−1、N−2の単語辞書内の単語と、検索項目との相関を取る。文字数がN−2の単語辞書内の単語との相関を取る時には、単語辞書内の単語を右へシフトする処理を2回行う(「_IHIRO」「__IHIRO」)。カウンタ値がN−2以上の単語を候補として抽出する。
【0263】
このように本実施例によれば、入力ミスの有った単語に関しても、曖昧検索が可能となり、検索能力が向上する。
【0264】
なお、上記第5実施例では、登録時に、特定項目をキーボードから入力する際に生じる誤入力を救う検索方法(曖昧検索)に関して記述したが、これに限らず、例えば、特定項目の入力を自動化する事により、誤入力を未然に防止するようにしても良い。
【0265】
すなわち、例として、特許文書のように、特定項目に見出しが付いている文書を想定する。
【0266】
特許の場合には、出願人の前には「(71)出願人」、出願日の前には「(22)出願日」、発明の名称の前には「(54)〔発明の名称〕」等の見出しが付いている。
【0267】
したがって、この見出しを自動認識すれば、特定項目をキーボード等から手入力する必要が無くなり、誤入力が防げる。
【0268】
例えば、第3実施例と同様に、文書内の文字列を頭文字別辞書で展開していく。すなわち、あらかじめ、頭文字が「(」の単語辞書に、「(71)出願人」、「(22)出願日」、「(54)〔発明の名称〕」等の見出し文字列を登録しておく。
【0269】
順次展開していく中で、文書内の文字が「(」となったら、「(」の頭文字辞書内の単語とのマッチングを取る。その処理の中で、「(71)出願人」、「(22)出願日」、「(54)〔発明の名称〕」等の見出し文字列と合致した場合には、その後の文字列をその見出しに対応した特定項目とみなし、以前と同様の処理を行う。ここで、その特定項目の最後尾の確認は、次の見出しの始まりである「(」や「〔」を検知する事で可能である。
【0270】
このような変形例では、特定項目が、文書中の文字を用いて自動的に行われるので、作業効率が向上すると共に、誤入力を防止できる。
【0271】
[付記]
(付記項1) 文書中の単語をキーワードとして複数の文書を検索する文書検索方法において、
前記文書の先頭から1文字毎に順次移動し、移動した文字を先頭文字とする前記文書を構成する1つ以上の文字からなる文字列を順次切り出す文字切り出しステップと、
所定の規則に従った複数の単語からなる複数の単語グループのうち1つの前記単語グループを指定する単語グループ指定ステップと、
前記単語グループ指定ステップにより指定された前記単語グループの前記単語を指定する単語指定ステップと、
前記単語指定ステップにより指定された前記単語と、前記文字切り出しステップにより切り出された前記文字列とを比較する比較ステップと、
前記比較ステップの比較により前記単語と前記文字列とが一致した場合に、前記文書と対応づけて前記文字列を前記キーワードとして抽出するキーワード抽出ステップと
を備えて構成されることを特徴とする文書検索方法。
【0272】
(付記項2) 前記文字切り出しステップは、前記文字列を文字数単位毎に切り出し、
前記単語グループは、文字数等しい複数の単語からなり、
前記単語グループ指定ステップは、前記文字切り出しステップで切り出された文字列の文字数と等しい前記単語グループを指定する
ことを特徴とする付記項1に記載の文書検索方法。
【0273】
(付記項3) 前記単語グループは、少なくとも前記単語の前記先頭文字が等しい異なる文字数の複数の単語からなり、
前記単語グループ指定ステップは、前記文字切り出しステップで切り出された文字列の先頭文字と等しい前記単語グループを指定し、
前記文字切り出しステップは、前記単語指定ステップが指定した前記単語の文字数に等しく、前記文字列の前記先頭文字が同一の文字列を新たに切り出す
ことを特徴とする付記項1に記載の文書検索方法。
【0274】
(付記項4) 前記キーワード抽出ステップにより抽出されたキーワードを格納するキーワード格納ステップと、
検索キーワードを入力する検索キーワード入力ステップと、
前記キーワード格納ステップにて格納されたキーワードを所定の順序で読み出すキーワード読み出しステップと、
前記キーワード読み出しステップにて読み出されたキーワードを、前記検索キーワード入力ステップにて入力された検索キーワードと比較する検索キーワード比較ステップと、
前記検索キーワード比較ステップの比較結果に基づき、前記キーワード格納ステップにより格納された前記キーワードを読みだし、前記キーワードにより前記文書を指定する文書指定ステップと
を備えたことを特徴とする付記項1の文書検索方法。
【0275】
(付記項5) 前記キーワード抽出ステップは、前記比較ステップの比較による前記単語と前記文字列との一致回数を抽出する
ことを特徴とする付記項1に記載の文書検索方法。
【0276】
(付記項6) 文書中の単語をキーワードとして複数の文書を検索する文書検索装置において、
前記文書の先頭から1文字毎に順次移動し、移動した文字を先頭文字とする前記文書を構成する1つ以上の文字からなる文字列を順次切り出す文字切り出し手段と、
所定の規則に従った複数の単語からなる複数の単語グループを記録する単語グループ記録手段と、
前記単語グループ記録手段が記録している前記複数の単語グループのうち1つの前記単語グループを指定する単語グループ指定手段と、
前記単語グループ指定手段により指定された前記単語グループの前記単語を指定する単語指定手段と、
前記単語指定手段により指定された前記単語と、前記文字切り出し手段により切り出された前記文字列とを比較する比較手段と、
前記比較手段の比較により前記単語と前記文字列とが一致した場合に、前記文書と対応づけて前記文字列を前記キーワードとして抽出するキーワード抽出手段と
を備えて構成されることを特徴とする文書検索装置。
【0277】
(付記項7) 前記文字切り出し手段は、前記文字列を文字数単位毎に切り出し、
前記単語グループは、文字数等しい複数の単語からなり、
前記単語グループ指定手段は、前記文字切り出し手段で切り出された文字列の文字数と等しい前記単語グループを指定する
ことを特徴とする付記項6に記載の文書検索装置。
【0278】
(付記項8) 前記単語グループは、少なくとも前記単語の前記先頭文字が等しい異なる文字数の複数の単語からなり、
前記単語グループ指定手段は、前記文字切り出し手段で切り出された文字列の先頭文字と等しい前記単語グループを指定し、
前記文字切り出し手段は、前記単語指定手段が指定した前記単語の文字数に等しく、前記文字列の前記先頭文字が同一の文字列を新たに切り出す
ことを特徴とする付記項6に記載の文書検索装置。
【0279】
(付記項9) 前記キーワード抽出手段により抽出された前記キーワードを格納するキーワード格納手段と、
検索キーワードを入力する検索キーワード入力手段と
を備え、
前記比較手段は、前記単語指定手段により指定された前記単語と、前記検索キーワード入力手段により入力された前記検索キーワードを比較し、
前記キーワード抽出手段は、前記検索キーワード比較手段の比較結果に基づき、前記キーワード格納手段により格納された前記キーワードを読みだし、前記キーワードにより前記文書を指定する
を備えたことを特徴とする付記項6の文書検索装置。
【0280】
(付記項10) 前記キーワード抽出手段は、前記比較手段の比較による前記単語と前記文字列との一致回数を抽出すると共に、前記一致回数に基づき前記文書を指定する
ことを特徴とする付記項9に記載の文書検索装置。
【0281】
(付記項11) 前記キーワード格納手段は、前記一致回数に基づき前記キーワード抽出手段により抽出された前記キーワードを配列させ、格納する
ことを特徴とする付記項10に記載の文書検索装置。
【0282】
(付記項12) 前記比較手段で前記単語のすべてと一致しない前記文字列を前記単語グループ記録手段に追加記録する単語追加手段
を有することを特徴とする付記項6に記載の文書検索装置。
【0283】
(付記項13) 前記比較手段で前記単語のすべてと一致しない前記文字列を前記単語グループ記録手段に追加記録する単語追加手段
を有することを特徴とする付記項9に記載の文書検索装置。
【0284】
(付記項14) 前記キーワード抽出手段は、前記文書に関わる特定情報を検出し、
前記キーワード格納手段は、前記特定情報を前記単語情報として格納し、
前記単語追加手段は、前記単語グループ記録手段に前記特定情報を追加記録する
ことを特徴とする付記項13に記載の文書検索装置。
【0285】
(付記項15) 前記検索キーワード入力手段は、前記文書に関わる前記特定情報を入力する
ことを特徴とする付記項14に記載の文書検索装置。
【0286】
(付記項16) 前記キーワード抽出手段は、
前記検索キーワード入力手段から指定された前記検索キーワードが、前記キーワード格納手段に格納されている前記特定情報あるいは前記キーワードと、文字の配列および文字数において不完全な一致を許して、前記文書を前記キーワード格納手段から指定する
ことを特徴とする付記項15に記載の文書検索装置。
【0287】
(付記項17) 前記単語グループ記録手段は、
前記文書中の特定項目に付されている見出しを記録しており、
前記キーワード格納手段は、
前記見出しを検出して、前記見出しに続く文字列を特定情報として格納する
ことを特徴とする付記項9に記載の文書検索装置。
【0288】
(付記項18) 前記キーワード格納手段は、
前記キーワードをビットマップ形式で記録する
ことを特徴とする付記項9に記載の文書検索装置。
【0289】
(付記項19) 前記キーワード格納手段は、
前記キーワードを圧縮処理して記録する
ことを特徴とする付記項9に記載の文書検索装置。
【0290】
(付記項20) 前記単語グループは、2つ以上の共通な属性を有する複数の単語からなる
ことを特徴とする付記項6に記載の文書検索装置。
【0291】
(付記項21) 前記検索キーワード入力手段は、
入力する前記検索キーワードが複数の検索単語からなる検索合成語または検索文であるときに、前記検索キーワードを文字数順に切り出しながら、順次前記単語グループ記録手段の前記単語と対応付けるため前記検索単語を切り出す検索単語切り出し手段を有し、
前記キーワード抽出手段は、前記検索単語切り出し手段にて切り出された複数の検索単語を有する文書を指定する
ことを特徴とする付記項9に記載の文書検索装置。
【0292】
(付記項22) 前記検索キーワード入力手段は、
入力する前記検索キーワードが複数の検索単語からなる検索合成語または検索文であるときに、前記検索キーワードを文字数順に切り出しながら、順次前記単語グループ記録手段の前記単語と対応付けるため前記検索単語を切り出す検索単語切り出し手段を有し、
前記切り出された前記検索単語単語情報を表示する表示手段と、
前記表示手段にて表示された前記検索単語を複数選択する選択手段と
を備え、
前記キーワード抽出手段は、前記選択手段にて選択された複数の検索単語を有する文書を指定する
ことを特徴とする付記項9に記載の文書検索装置。
【0293】
(付記項23) 前記比較手段は、前記単語指定手段により指定された単語の前記文書中の位置をカウントする文字位置カウンタを有する
ことを特徴とする付記項9に記載の文書検索装置。
【0294】
(付記項24) 前記比較手段は、前記単語指定手段により指定された単語の前記文書中の位置をカウントする文字位置カウンタを有し、
前記キーワード抽出手段は、前記複数の検索単語の前記カウントされた位置よりキーワードの連結性を判断する連結性判断部を有する
ことを特徴とする付記項21または22に記載の文書検索装置。
【0295】
【発明の効果】
以上説明したように本発明によれば、比較ステップで単語指定ステップにより指定された単語と、文字切り出しステップにより切り出された文字列とを比較し、キーワード抽出ステップで比較ステップの比較により単語と文字列とが一致した場合に、文書と対応づけて文字列をキーワードとして抽出するという簡単なアルゴリズムで文書の登録及び検索処理をしているので、高速に文書を登録及び検索することができるという効果がある。
【図面の簡単な説明】
【図1】本発明の第1実施例に係る文書登録/検索システムの構成を示す構成図
【図2】図1の登録/検索制御部の構成を示す構成図
【図3】図1の文字数別単語辞書ファイル記録部に記録される文字数別単語辞書ファイルの構成を示す構成図
【図4】図1の文書登録/検索システムによる検索単語の登録処理の流れを示す第1のフローチャート
【図5】図1の文書登録/検索システムによる検索単語の登録処理の流れを示す第2のフローチャート
【図6】図4の第1のフローチャートで読み込まれる文書の一例を示す図
【図7】図6の文書をメモリ上に展開した文字列を示す図
【図8】図4及び図5に示したフローチャートで生成される検索単語ファイル記録部に記録される検索単語ファイルの構成を示す構成図
【図9】図8の検索単語ファイルによる文書の検索処理の流れを示すフローチャート
【図10】図9の検索処理の具体例を説明する説明図
【図11】図9の検索処理により得られた該当文書ファイルの構成を示す構成図
【図12】図11の該当文書ファイルに基づく検索結果表示部の表示例を示す図
【図13】本発明の第2実施例に係る検索単語ファイル記録部に記憶される検索単語ファイルとビットマップファイルの構成を示す構成図
【図14】図13の検索単語ファイルとビットマップファイルを生成し検索単語を登録する処理の流れを示すフローチャート
【図15】図13の検索単語ファイルとビットマップファイルを用いた文書の検索処理の流れを示すフローチャート
【図16】図13のビットマップファイルの第1の変形例を示す図
【図17】図13のビットマップファイルの第2の変形例を示す図
【図18】図14の登録処理に用いられる文字数別単語辞書ファイルの変形例の構成を示す構成図
【図19】図18の変形例の文字数別単語辞書ファイルにより生成される検索単語ファイルの構成を示す構成図
【図20】図18の変形例の文字数別単語辞書ファイルにより生成されるビットマップファイルの構成を示す構成図
【図21】図13の検索単語ファイルの変形例の構成を示す構成図
【図22】本発明の第3実施例に係る文書検索/登録システムの構成を示す構成図
【図23】図22の頭文字別辞書ファイル記録部に記録される頭文字別辞書ファイルの構成を示す構成図
【図24】図22の文書検索/登録システムによる検索単語の登録処理の流れを示す第1のフローチャート
【図25】図22の文書検索/登録システムによる検索単語の登録処理の流れを示す第2のフローチャート
【図26】図24及び図25による処理の具体例を説明する説明図
【図27】図26における処理により得られたビットマップファイルの構成を示す構成図
【図28】図22の文書検索/登録システムによる文書の検索処理の流れを示す第1のフローチャート
【図29】図22の文書検索/登録システムによる文書の検索処理の流れを示す第2のフローチャート
【図30】図28及び図29による処理の具体例を説明する説明図
【図31】図22の文書検索/登録システムによる検索自由文による検索が可能な検索処理の変形例を説明する図
【図32】本発明の第4実施例に係る頭1文字と最後尾1文字が同じ単語毎に細分化されたグループからなる頭文字別単語辞書の構成を示す構成図
【図33】図32の頭文字別単語辞書を用いた検索単語の登録処理の流れを示す第1のフローチャート
【図34】図33の第1のフローチャートに続く検索単語の登録処理の流れを示す第2のフローチャート
【図35】図33及び図34で登録された検索単語による文書の検索処理の流れを示す第1のフローチャート
【図36】図35の第1のフローチャートに続く文書の検索処理の流れを示す第2のフローチャート
【図37】本発明の第5実施例に係る文書登録/検索システムの構成を示す構成図
【図38】図37の文書登録/検索システムにおける入力検索単語による検索項目及び候補項目を取得する処理の流れを示すフローチャート
【図39】図38の検索項目と同じ文字数の辞書との比較処理の流れを示すフローチャート
【図40】図38の検索項目より1文字多い文字数の辞書との比較処理の流れを示すフローチャート
【図41】図38の検索項目より1文字少ない文字数の辞書との比較処理の流れを示すフローチャート
【符号の説明】
1…文書
2…フロッピディスク
3…文書読取部
4…文書ファイル記録部
5…文字数別単語辞書ファイル記録部
6…登録/検索制御部
7…検索単語ファイル記録部
8…検索単語入力部
9…検索結果記録部
10…検索結果表示部
21…メモリ
22…文字位置カウンタ
23…レジスタ
24…制御部
25…文字数カウンタ
26…単語カウンタ
27…比較部
28…残文字ファイル
29…辞書登録部
【産業上の利用分野】
本発明は、文書中の単語をキーワードとして検索する文書登録方法および文書検索方法に関する。
【0002】
【従来の技術】
従来、文書検索方式としては、文書をある約束毎に基づいて分類して登録し、その分類基準をコード化したもの(分類コード)等を検索条件として文書検索を行う方式や、検索時にキーワード等の文書の属性を検索条件として検索を行う方式や、あるいはこれらを組み合わせた方式が知れている。
【0003】
キーワードを用いた従来の文書検索方式では、探したい文書を特定するための検索用キーワードを、文章データの登録時にキーボード等を用いて入力する必要があるが、この入力作業はかなりの時間を要するばかりでなく、文書を的確に検索するためのキーワードを設定することが困難であるといった問題があった。
【0004】
そこで、上記問題を解決する方法として、例えば特開平4−135278号公報では、文書登録時にキーワードを入力せず、検索時に入力された検索語と検索時の文書の文章データとをすべて比較する「全文検索フリーキーワード方式」を提案している。
【0005】
また、文書登録時に文書の文章データを単語展開し、あらかじめ文書に使用されている単語を抽出し、文書と検索用語を対応づけて登録しておく「全文展開登録フリーキーワード方式」も上記問題を解決する方法として提案されている。
【0006】
ここで、上記の「全文展開登録フリーキーワード方式」における、文章データの単語展開の方法として、例えば特開平3−271992号公報に示されるような文法情報を基に文章を解析する手段があるが、この特開平3−271992号公報では、不用な接辞及び接辞相当語を除き、複合語を抽出するために文法情報または品詞情報を用いて解析している。
【0007】
【発明が解決しようとする課題】
しかしながら、上述した例えば特開平4−135278号公報の「全文検索フリーキーワード方式」においては、検索時にすべての文書の文章データと検索語とを比較する必要があるため、検索時間が長くなるといった問題がある。
【0008】
また、上記の例えば特開平3−271992号公報に示される「全文展開登録フリーキーワード方式」における文章データの単語展開の方法では、文法情報を用いて単語展開を行うために、複雑な処理を必要とし単語展開処理に時間がかかり、検索単語の登録処理時間が長くなるといった問題がある。
【0009】
本発明は、上記事情に鑑みてなされたものであり、簡単なアルゴリズムで文書の単語を展開することで、高速に文書を登録及び検索することのできる文書登録方法および文書検索方法を提供することを目的としている。
【0010】
【課題を解決するための手段】
本発明の文書登録方法は、所定の文書中の単語をキーワードとして登録する文書登録方法において、前記所定の文書を構成する複数種の文字列から1つ以上の文字からなる文字列を切り出す文字切り出しステップと、所定の規則に従った、いずれも文字数がN(N=1,2・・・N)である複数個の単語の集合体を一単語グループとし当該文字数毎にグループ分けされた複数の単語グループのうち、所定の文字数Nに対応する単語グループを指定する単語グループ指定ステップと、前記単語グループ指定ステップにより指定された所定の単語グループにおける複数個の単語を順次指定する単語指定ステップと、前記文字切り出しステップにより切り出された切出文字列を、前記単語指定ステップにより指定された指定単語と比較する比較ステップと、前記比較ステップの比較により、前記指定単語と前記切出文字列とが一致した場合に、当該文書と対応づけて前記文字列を前記キーワードとして抽出するキーワード抽出ステップと、を有し、前記比較ステップにおいては、当該切出文字列が前記指定単語と一致するまで、当該切出文字列と前記単語グループ指定ステップにより指定された所定の単語グループにおける複数個の単語とを順次比較し、当該所定の単語グループ内において当該一致が見られない際は、前記単語グループ指定ステップにおいて新たに指定された所定の単語グループにおける複数個の単語とを、当該一致が見られるまで順次比較を試行する、ことを特徴とする。
本発明の文書検索方法は、所定の文書中の単語をキーワードとして検索する文書検索方法において、前記所定の文書を構成する複数種の文字列から1つ以上の文字からなる文字列を切り出す文字切り出しステップと、所定の規則に従った、いずれも文字数がN(N=1,2・・・N)である複数個の単語の集合体を一単語グループとし当該文字数毎にグループ分けされた複数の単語グループのうち、所定の文字数Nに対応する単語グループを指定する単語グループ指定ステップと、前記単語グループ指定ステップにより指定された所定の単語グループにおける複数個の単語を順次指定する単語指定ステップと、前記文字切り出しステップにより切り出された切出文字列を、前記単語指定ステップにより指定された指定単語と比較する比較ステップと、前記比較ステップの比較により、前記指定単語と前記切出文字列とが一致した場合に、当該文書と対応づけて前記文字列を前記キーワードとして抽出するキーワード抽出ステップと、を有し、前記比較ステップにおいては、当該切出文字列が前記指定単語と一致するまで、当該切出文字列と前記単語グループ指定ステップにより指定された所定の単語グループにおける複数個の単語とを順次比較し、当該所定の単語グループ内において当該一致が見られない際は、前記単語グループ指定ステップにおいて新たに指定された所定の単語グループにおける複数個の単語とを、当該一致が見られるまで順次比較を試行することを特徴とし、さらに、前記キーワード抽出ステップにより抽出されたキーワードを格納するキーワード格納ステップと、検索キーワードを入力する検索キーワード入力ステップと、前記キーワード格納ステップにて格納されたキーワードを所定の順序で読み出すキーワード読み出しステップと、前記キーワード読み出しステップにて読み出されたキーワードを、前記検索キーワード入力ステップにて入力された検索キーワードと比較する検索キーワード比較ステップと、前記検索キーワード比較ステップの比較結果に基づき、前記キーワード格納ステップにより格納された前記キーワードを読みだし、前記キーワードにより前記所定の文書を指定する文書指定ステップと、を有することを特徴とする。
【0011】
【実施例】
以下、図面を参照しながら本発明の実施例について述べる。
【0012】
図1ないし図12は本発明の第1実施例に係わり、図1は文書登録/検索システムの構成を示す構成図、図2は図1の登録/検索制御部の構成を示す構成図、図3は図1の文字数別単語辞書ファイル記録部に記録される文字数別単語辞書ファイルの構成を示す構成図、図4は図1の文書登録/検索システムによる検索単語の登録処理の流れを示す第1のフローチャート、図5は図1の文書登録/検索システムによる検索単語の登録処理の流れを示す第2のフローチャート、図6は図4の第1のフローチャートで読み込まれる文書の一例を示す図、図7は図6の文書をメモリ上に展開した文字列を示す図、図8は図4及び図5に示したフローチャートで生成される検索単語ファイル記録部に記録される検索単語ファイルの構成を示す構成図、図9は図8の検索単語ファイルによる文書の検索処理の流れを示すフローチャート、図10は図9の検索処理の具体例を説明する説明図、図11は図9の検索処理により得られた該当文書ファイルの構成を示す構成図、図12は図11の該当文書ファイルに基づく検索結果表示部の表示例を示す図である。
【0013】
本実施例の文書登録/検索システムは、図1に示すように、文書(例えば特許出願文書)1を光学的に読みとるOCRやフロッピディスク2に記録された文書データを読み込むフロッピディスクドライブ等からなる文書読取部3と、読み取った文書データを文書毎に文書ファイルとして記録する文書ファイル記録部4と、検索のための単語を文字数別の辞書として記録している文字数別単語辞書ファイル記録部5と、文書ファイル記録部4に記録されている文書データと文字数別単語辞書ファイル記録部5に記録されている文字数別の単語を比較することで検索単語の登録/検索の処理を行う登録/検索制御部6と、登録/検索制御部6により登録された検索単語をコード化して文書毎に記録する検索単語ファイル記録部7と、検索時に検索すべき検索単語を入力する例えばキーボードからなる検索単語入力部8と、検索単語入力部8から入力された検索単語に基づいた検索結果を記録する検索結果記録部9と、検索結果を表示する検索結果表示部10とから構成される。
【0014】
なお、検索単語入力部8から入力された検索単語による検索は、登録/検索制御部6の制御により検索単語入力部8から入力された検索単語を文字数別単語辞書ファイル記録部5の文字数別の文字列と比較し、検索単語のコードを取得し、このコードに基づいて検索単語ファイル記録部7を検索することで行われる。
【0015】
前記登録/検索制御部6は、文書データを文字数別に文字列展開することで検索単語の登録/検索を行うものであり、図2に示すように、文書読取部3を介して文書ファイル記録部に記録された複数、例えば10万件の文書毎の文書ファイルのうち1文書ファイルの文書データを展開するメモリ21と、文書データの文字位置をカウントする文字位置カウンタ22と、文字位置カウンタ22が指す文字位置から後述する切り出し方法により所定の文字数の文字列をレジスタ23を介して切り出し登録あるいは検索処理を行う制御部24と、切り出した文字列の文字数に対応するカウント値を出力することで文字数別単語辞書ファイル記録部5に記録されている文字数別単語辞書ファイルを指定する文字数カウンタ25と、文字数別単語辞書ファイルを順次指定しスキャンする為のカウント値を出力する単語番号カウンタ26と、単語番号カウンタ26により指定された文字数別単語辞書ファイル内の単語とレジスタ23により切り出された文字列とを比較する比較部27とを備えて構成される。
【0016】
そして、比較部27により文字数別単語辞書ファイル内の単語とレジスタ23により切り出された文字列とが一致したと判断された場合に文字数別単語辞書ファイル内の単語に対応したコードを文書毎に検索単語ファイル記録部7に記録するようになっている。
【0017】
ここで、比較部27において、文書データの最後まで繰り返しても、切り出した文字列が文字数別単語辞書のいずれにも存在しない場合には、その文字列を残文字ファイル28に記録し、後述する残文字処理の中で辞書登録部29を用いて文字数別単語辞書へ追加登録するようになっている。
【0018】
つまり、残文字処理は、登録/検索制御部6の文字列展開処理において、作成された残文字ファイルに、検索単語への展開が出来なかった文字列を保存する。この中には、辞書に登録されていない為に展開できなった単語と、不要文字いわゆるゴミ文字(例えば、@ や * )が含まれている。従って、この残文字ファイルを検索結果表示部10の例えばモニタに表示し、操作者がそれを見て、文字数別単語辞書に登録しておいた方が良いと判断した文字列に関しては、辞書登録部29を用いてその文字数の文字数別単語辞書ファイルに登録する。
【0019】
なお、この残文字処理に関しては、上記の様に操作者が必要/不必要の判断をするのではなく、必要の無い、不要文字も含めて、自動的に文字数に合った文字数別単語辞書ファイルに登録するようにしても良い。
【0020】
文字数別単語辞書ファイル記録部5には、図3に示すように、文字数別単語辞書ファイルが記録されている。この文字数別単語辞書には、文字数に応じて例えば1文字から20文字までの20個の単語辞書がファイルの形式で記録されている。そして、文字数別単語辞書は、今後新たな単語登録の必要性が生じた場合には、辞書登録部29を用いて順次単語を追加登録していくようになっている。
【0021】
次に、このように構成された本実施例の文書登録/検索システムの作用について説明する。まず、文書の検索単語の登録処理について説明する。
【0022】
図4に示すように、文書検索システムでは、ステップS1で登録したい文書1を文書読取部3により、例えばOCRで光学的に読み込む、または、例えばフロッピーディスクに電子的に保存されていた文書であれば、その内容をテキストデータとして読み込む。そして、ステップS2で読み込んだ文書の文書データを文書ファイル記録部4に記録する。
【0023】
次にステップS3で、登録/検索制御部6の制御部24が展開処理を実行させたい文書データを文書ファイル記録部4から読み出しメモリ21に記憶する。なお、ここでは、読みだした文書番号を例えば”T00000”とし、文書を図6に示すような特許公開公報とすると、メモリ21には図7に示すように、文書データが展開される。
【0024】
そしてステップS4及びS5で、文字数カウンタ25を1、文字位置カウンタ22を0にセットし、ステップS6で文字位置カウンタ22が示す数に対応する文書データの位置(この時点は文書の最初から1文字目)から文字数カウンタ25の文字数分(この時点では1字)を切り出し、レジスタ23に記憶する。この場合、制御部24でレジスタ23に記憶された、例えば”〔書類名〕……”のうちの最初の「〔 」という文字のシフトJISコードが調べられる。
【0025】
そして、制御部24は、ステップS7で単語番号カウンタを1にセットし、ステップS8で文字数別単語辞書内のN文字単語辞書ファイル(この時点ではN=1であり、1文字単語辞書)の先頭から1単語を読みだし、読みだした1単語とレジスタ23に記憶されている文字列とを比較部27にて比較する。
【0026】
そして図5に示すステップS11に処理を移し、図4のステップS8での比較により、ステップS11では読みだした1単語とレジスタ23に記憶されている文字列とが一致したかどうか判断し、一致していない場合にはステップS12で単語番号カウンタ26を1増加し、ステップS13でN文字単語辞書ファイルの最後の単語かどうか判断し最後の単語でない場合は図4のステップS8に戻り、次の1単語を読みだし、同様な処理をN文字単語辞書の最後まで繰り返す。
【0027】
説明を簡単に行うために、図6に示した文書の「〔 」という文字が、比較の結果、1文字辞書に登録されていなかったとする。
【0028】
その結果、処理は図5のステップS15に移り、ステップS15では、文字位置カウンタ22を1増加し、ステップS16で文書の最後でないと判断され、図4のステップS6に戻り、図7に示す文書データの最初から2文字目の1字である「書」を切り出しレジスタ23に記憶し、上記「〔 」という文字と同様に1文字単語辞書ファイルを検索する。
【0029】
「書」において、ステップS11での1文字単語辞書の検索の判断結果、1文字辞書に存在している場合には、ステップS14でその文書に対応した検索単語ファイルにその文字の辞書番号と単語番号を書き込む。例えば、図7における「書」という単語は、図3に示した1文字辞書ファイルの8番目に存在しているので、図8に示すように、検索単語ファイルには辞書番号が1、単語番号が8と書き込む。ここで、辞書番号と単語番号を合わせて単語IDとする。
【0030】
なお、本実施例では、1文字辞書の辞書番号は1、2文字辞書の辞書番号は2、N文字辞書の辞書番号はNとしている。
【0031】
そして、図4のステップS6から図5のステップS16までの処理を文書の最後まで繰り返す。
【0032】
この中で、例えば「書」という1文字が複数回出現する場合も有り得る。その場合には、出現回数(例えば出現回数4回)を検索単語ファイル内に図8のごとく追記する。
【0033】
このようにして1文字展開が文書の最後になると、ステップS16で文書の最後が認識され、ステップS17で文字数カウンタを1増加し、2文字の展開に移るが、ステップS18では文字数カウンタ25のカウント値が20以内かどうか判断しているため、この時点では図4のステップS5に戻る。そして、図4のステップS5で文字位置カウンタを0にセットし、文書の最初から始まる2文字を切り出し、1文字の場合と同様に図4のステップS5から図5のステップS14を繰り返し、今度は2文字単語辞書ファイルにその切り出した2文字が存在するか検索する。
【0034】
検索の結果、2文字辞書に存在していた場合には、その文書に対応した検索単語ファイルに、その文字の単語IDすなわち辞書番号と単語番号を書き込む。
【0035】
例えば、図7の例では「〔書」という単語は、2文字辞書に存在しないので、結局、図5のステップS15で文字位置カウンタ22を1増加して、ステップS16を介して、図4のステップS6に戻り、図7に示すハッチングされた文書データの最初から2文字目の文字からの2文字である「書類」が展開処理される。その結果、「書類」という2文字の単語は、図3に示したように、2文字単語辞書に存在するので、図7に示すように、検索単語ファイルに辞書番号2、単語番号4と書き込む。
【0036】
その後、ステップS15で文字位置カウンタを1増加し、ステップS16を介して文書の最初の3文字目から始まる2文字「類の」を切り出し、上記と同様に2文字辞書を検索する
同様の処理を文書の最後まで繰り返し、すべての文書データに対して2文字展開処理を行う。そして2文字展開処理が終了すると、ステップS17で文字数カウンタ25を1増加させ、3文字の展開に移るが、ステップS18では文字数カウンタ25のカウント値が20以内かどうか判断しているため、この時点では図4のステップ5に戻る。
【0037】
そして、同様の処理を、3文字、4文字と続け、20文字まで実行する。20文字展開処理が終了すると、ステップS17で文字数カウンタ25を1増加させるので、ステップS18では文字数カウンタ25のカウント値が21となったと判断し処理を終了する。
【0038】
文書の最後まで繰り返しても、文字数別単語辞書のいずれにもその単語が存在しない場合には、その文字を残文字ファイルに記録し、残文字処理の中で辞書登録部29を用いて文字数別単語辞書ファイルへ追加登録する。
【0039】
以上の処理を、例えば10万件の文書(文書番号”T00000”から”T99999”)に対して実行し、図8に示すような検索単語ファイルを得る。
【0040】
次に、このように文書毎に得られた検索単語ファイルに基づく文書検索処理について説明する。
【0041】
文書検索処理では、図9に示すように、制御部24は、ステップS21で検索単語入力部8から検索単語が入力されると、ステップS22で入力された検索単語の文字数Mを算出する。そして、ステップS23で文字数カウンタ25を制御しM文字単語辞書と検索単語とを比較し検索単語IDを得る。次にステップS24で検索単語ファイル記録部7にアクセスして検索単語ファイルを検索する。そして、ステップS25で検索結果を当該文書ファイルとして検索結果記録部に記録し、ステップS26で検索結果として文書見出し情報を検索結果表示部10に表示して処理を終了する。
【0042】
次に、上記の処理を図10ないし図12を用いて具体的に説明する。
【0043】
図10に示すように、例えば「内視鏡」という単語で文書を探し出したいとすれば、操作者が検索単語「内視鏡」を、検索単語入力部3の例えばキーボード等を用いてレジスタ23に入力する(図9のステップS21)。
【0044】
そして、検索単語の文字数Mを計算する(図9のステップS22)。次に、計算した文字数を文字数カウンタ25にセットし、文字数別単語辞書ファイル記憶部5より同じ文字数の単語辞書ファイルを読み込む。この場合は、3文字単語辞書ファイルの内容を読み込み、読み込んだ辞書の中の単語と検索単語「内視鏡」を比較部27で順次比較する(図9のステップS23)。
【0045】
M文字単語辞書から順次読みだす方法としては、単語番号カウンタ26を1ずつ増加し、その単語番号カウンタ26の示す順番の単語を辞書から読みだす事で実現する。つまり、検索単語と一致した時の文字数カウンタ25の値(この例では3)が辞書番号、単語番号カウンタ26の値が単語番号(この例では11)となる(図3参照)。この操作により検索単語の辞書番号と単語番号すなわち検索単語IDを知る事が出来る(この場合では、辞書番号=3、単語番号=11、従って検索単語ID=00030011)。
【0046】
次に、検索単語ファイル記憶部7より文書毎にファイル形式で記録されている検索単語ファイルの中で、検索単語「内視鏡」に対応した単語IDを有する文書を検索する(図9のステップS24)。
【0047】
この検索は、最初に、文書番号”T00000”の検索単語ファイルを読み込む。読み込んだ検索単語ファイル内に、検索単語ID(辞書番号、単語番号)が存在するか検索する。
【0048】
もし存在すれば、その文書番号”T00000”を該当文書ファイルに記録する。もし、存在しなければ、次の文書番号”T00001”の検索単語ファイルを読み込む。そして、上記文書番号”T00000”の時と同様に、文書番号”T00001”の検索単語ファイル中に検索単語IDが存在するか検索する。
【0049】
以上の処理を文書番号”T00000”から”T99999”まで繰り返し、該当する文書に関しては、その文書番号を該当文書ファイルとして検索結果記録部9に記録する(図9のステップS25)。例えば、今回は、図11に示すように、”T00000”、”T00001”、”T00002”、”T00003”、”T00010”、…、”T99999”が該当したとする該当文書ファイルが記録される。
【0050】
次に、該当文書ファイルに記録された文書番号に対応する文書ファイルから、題名、作者、作成日等その文書の見出し情報を読み込み、検索結果表示部10に図12に示すような一覧表を表示する(図9のステップS26)。
【0051】
操作者は、その一覧表を見て探したい文書が存在した場合には、その文書を図示しないマウス等で指定する。指定された文書の全文書を文書ファイルから読み込み、検索結果表示部10のモニタ上に表示するか、または図示しないプリンタに印刷出力する。
【0052】
ここで、検索単語が実際の文書中のどの位置に存在するか表示したい事がある。この場合は、登録時の単語展開同様に、文字数カウンタ25を検索単語と同じ文字数(この場合は3)にセットし、文字位置カウンタ22を0から順次増加する事で該当文書の最初から最後まで切り出し、検索単語(この場合は「内視鏡」)との比較を比較部27で行う。そして、一致した時の文字位置カウンタ22の示す文字位置から文字数カウンタ25の文字数分を、他の単語の表示と異なって表示すればよい。
【0053】
ここで更に、操作者が別な検索単語(例えば「光源」)を指定し、該当文書を絞り込みたい場合は、前記該当文書に対応する検索単語ファイルのみ(今回は”T00000”、”T00001”、”T00002”、”T00003”、”T00010”、…、”T99999”)を、前記と同様にして検索する。
【0054】
この絞り込みの場合、該当文書の検索単語ファイルのみを検索するので、全文書の検索単語ファイルを検索するのに比べて、絞り込み後の検索は高速である。
【0055】
今回は、”T00010”のみが該当したとすれば、”T00010”の文書の見出し情報を表示する。操作者は、それが探したい文書であった場合には、その文書をマウス等で指定する。指定された文書の全文書を文書ファイルから読み込み、モニタ上に表示するか、またはプリンタに印刷出力する。
【0056】
また、操作者が出現回数で文書を絞り込みたい場合、例えば、「内視鏡」という検索単語で検索し、上述したように、”T00000”、”T00001”、”T00002”、”T00003”、”T00010”、…、”T99999”が該当したとする。
【0057】
その後、「内視鏡」の出現回数が5回以上の文書を探したい場合は、操作者は絞り込み条件として出現回数5回を入力する。
【0058】
文書”T00000”、”T00001”、”T00002”、”T00003”、”T00010”、…、”T99999”の検索単語ファイルから、「内視鏡」(単語ID=00030011)という単語の出現回数を読みだす。
【0059】
そして、出現回数が5回以上の文書を探し、該当するファイルが有れば、対応する文書の見出し情報のみを表示する。後の処理は、前記と同じである。つまり、文書に含まれる単語の出現回数を検索条件にして、文書の検索が可能となる。
【0060】
以上説明したように、本実施例の文書検索装置によれば、検索対象となる文書の検索単語の登録は、文書を構成する文字列を所定の方法の1つである文字数に応じて切り出し、切り出した文字列をあらかじめ記録されている文字数別単語辞書と単に比較することで、検索単語を登録するといった簡単なアルゴリズム処理によって文書を展開しているので、高速に文書内から検索単語を抽出し登録することができる。
【0061】
また、抽出された検索単語は、文書毎の検索単語ファイルにコードとして記録されており、検索時は、文書を検索するためのキーワードとしての検索単語を検索単語入力部より入力することで、上記と同様に文字数別単語辞書から入力した検索単語のコードを得、得られたコードと文書毎の検索単語ファイル内のコードとを単に比較するだけなので、検索対象の文書の検索を高速に行うことができる。
【0062】
次に、第2実施例について説明する。図13ないし図21は本発明の第2実施例に係わり、図13は検索単語ファイル記録部に記憶される検索単語ファイルとビットマップファイルの構成を示す構成図、図14は図13の検索単語ファイルとビットマップファイルを生成し検索単語を登録する処理の流れを示すフローチャート、図15は図13の検索単語ファイルとビットマップファイルを用いた文書の検索処理の流れを示すフローチャート、図16は図13のビットマップファイルの第1の変形例を示す図、図17は図13のビットマップファイルの第2の変形例を示す図、図18は図14の登録処理に用いられる文字数別単語辞書ファイルの変形例の構成を示す構成図、図19は図18の変形例の文字数別単語辞書ファイルにより生成される検索単語ファイルの構成を示す構成図、図20は図18の変形例の文字数別単語辞書ファイルにより生成されるビットマップファイルの構成を示す構成図、図21は図13の検索単語ファイルの変形例の構成を示す構成図である。第2実施例は第1実施例とほとんど同じであるので、異なる点のみ説明する。
【0063】
第2実施例の制御部24では、検索単語ファイル記録部7に第1実施例とは異なるフォーマットで検索単語情報を記録するようになっており、図13に示すように、検索単語ファイル記録部7の検索単語情報は、全文書に対して1つの検索単語ファイル31と、”T00000”から”T99999”の全文書の中に有った単語の数だけ存在するビットマップファイル32とから構成される。検索単語ファイル31とビットマップファイル32の詳細な構成は後述する。その他の構成は第1実施例と同じである。
【0064】
次に、本実施例の登録処理について説明する。第2実施例の登録処理は第1実施例とほとんど同じであり、異なる点は、図5におけるステップS11での一致後の検索単語ファイル記録部7への検索情報の処理である。すなわち、図14に示すように、ステップS11で図4のステップS8での比較により、ステップS11では読みだした1単語とレジスタ23に記憶されている文字列とが一致したと判断されると、ステップS30で検索単語ファイルに既に同じ単語IDが記録されているかどうか判断し、記録されていない場合はステップS31に、記録されている場合にはステップS33に進む。ステップS31では、図13に示した検索単語ファイル31に単語IDが記録され、次にステップS32で図13に示したビットマップファイル32が作成される。そして、ステップS33で作成したビットマップファイル32の文書番号に対応するビットに”1”がセットされて、第1実施例と同様に、ステップS15に処理を移行する。その他の処理の流れは第1実施例と同じである。
【0065】
ここで、上記の処理を具体的な例を用いて説明するとともに、検索単語ファイル31とビットマップファイル32の詳細な構成を説明する。
【0066】
すなわち、文献検索システムに登録したい文書を、文書読取部3でOCRで読み込み、または、電子的に保存されていた文書であれば、その内容をテキストデータとしてリードし、文書ファイル記録部4に記録する。
【0067】
第1実施例と同様に、文書の最初から1文字目の1字を切り出し、1文字単語辞書ファイルにその文字が登録されているか検索する。
【0068】
検索の結果、1文字辞書に存在していた場合には、検索単語ファイル31にその文字の辞書番号と単語番号を書き込む。なお、本実施例では、上述したように、検索単語ファイルは全文書に対して、1個しか存在しない。
【0069】
例えば、第1実施例で示した図7の文書例では、「書」という文字は1文字辞書ファイルの8番目に存在していた(図3参照)ので、検索単語ファイルには辞書番号が0001、単語番号が0008と書き込むことになる。
【0070】
次に、この単語IDをファイル名とするビットマップファイルを作成し(ビットマップファイルの各ビットの初期値は0にセット)、例えば文書番号”T00000”には「書」という文字がない場合は、そのビットマップファイル中の文書番号”T00000”に対応した位置(ここではビット番号=0)のビットは0のままであり、例えば文書番号”T00001”に「書」という文字がある場合は、そのビットマップファイル中の文書番号”T00001”に対応した位置(ここではビット番号=1)のビットを、1にセットする。従って、ビットマップファイルは、”T00000”から”T99999”の全文書の中に有った単語の数だけ存在する事のなる。
【0071】
これで単語IDが00010008の単語「書」は、文書番号”T00001”内に存在する事が識別できる。なお、ビットマップファイルのファイル名を単語IDの00010008としておく事で、単語IDから、それに対応したビットマップファイルが読み出せる。
【0072】
検索の結果、1文字辞書に登録されていなかった場合には、第1実施例と同様に、文書の最初から2文字目の1文字を切り出し、上記と同様に1文字辞書を検索する。
【0073】
同様の処理を文書の最後まで繰り返す。この中で、例えば「書」という1文字が複数回出現した場合でも、既にビットマップ上のビットはセットして有るので、ビットセット処理は行わない。
【0074】
文書の最後まで繰り返しても、1文字辞書ファイルにその単語が存在しない場合には、その文字を残文字ファイルに記録し、第1実施例に示した残文字処理を実行する。
【0075】
次に、文書の最初から始まる2文字を切り出し、1文字の場合と同様に今度は2文字単語辞書ファイルにその切り出した2文字が存在するか検索する。
【0076】
検索の結果、2文字辞書内の単語が存在していた場合には、その単語IDすなわち辞書番号と単語番号を前記検索単語ファイルに書き込む。例えば、文書番号”T00001”に図7の例では「書類」という文字が存在する場合には、図3に示したように該当する単語が2文字辞書に存在するので、検索単語ファイルに辞書番号0002、単語番号0004と書き込む。また、ビットマップファイル名が00020004のビットマップファイルを作成し、文書番号が”T00001”に対応するビット(ビット番号=1)を1にセットする。
【0077】
検索の結果が、2文字辞書に登録されていなかった場合には、文書の最初の2文字目から始まる2文字を切り出し、上記と同様に2文字辞書を検索する。同様の処理を文書の最後まで繰り返す。
【0078】
この様な処理を、3文字、4文字〜20文字まで実行する。
【0079】
次に、文書番号”T00002”の文書を同様に読み込む。
【0080】
この文書に対して、同様に先頭から1文字を切り出し、1文字辞書の中に存在するか検索する。その結果「書」と言う単語が存在した場合には、ビットマップファイル名が00010008の文書番号”T00002”に対応した位置のビット(ビット番号=2)を1にセットする。
【0081】
その後は、上述した文書番号”T00001”と同様の処理を切り出し、単語が20文字になるまで繰り返す。
【0082】
以上の処理を、10万件の文書に対して実行することで、図13に示した検索単語ファイル31およびそれに対応したビットマップファイル32が作成される。
【0083】
なお、検索単語ファイルはRAM上に、ビットマップファイルはハードディスク上に置く事により、以後の検索が高速に実行できる。
【0084】
次に、このようにして得られた検索単語ファイル31及びビットマップファイル32に基づく文書検索処理について説明する。
【0085】
文書検索処理は、第1実施例とほとんど同じであり、図15に示すように、制御部24は、ステップS21で検索単語入力部8から検索単語が入力されると、ステップS22で入力された検索単語の文字数Mを算出する。そして、ステップS23で文字数カウンタ25を制御しM文字単語辞書と検索単語とを比較し検索単語IDを得る。次にステップS24で検索単語ファイル記録部7にアクセスして検索単語ファイル31を検索する。次に、ステップS35で単語IDと同じ名前のビットマップファイルを、ハードディスク上からロードし、ステップS36で読み込んだビットマップ内のどの位置に1ビットがセットして有るか検索して”1”にセットしてあるビット番号を取得する。そして、第1実施例と同様に、ステップS25で検索結果を当該文書ファイルとして検索結果記録部に記録し、ステップS26で検索結果として文書見出し情報を検索結果表示部10に表示して処理を終了する。
【0086】
次に、上記の処理を具体的に説明する。
【0087】
例えば「内視鏡」という単語で文書を探し出したいとすれば、操作者が検索単語「内視鏡」を、検索単語入力部8のキーボード等を用いて入力する。
【0088】
検索単語の文字数Mを計算する。計算した文字数Mを文字数カウンタ25にセットし、対応した文字数の単語辞書ファイルを読み込む。この場合は、M=3の文字単語辞書ファイルを読み込む。
【0089】
単語番号カウンタ26を1から順にインクリメントし、辞書内の単語と検索単語「内視鏡」を比較検索する。
【0090】
比較の結果一致した時の単語番号カウンタ26から、単語番号(この例では0011:図3参照)を認識する。この操作により「内視鏡」という検索単語の辞書番号と単語番号すなわち単語ID=00030011を知る事が出来る。
【0091】
次に、検索単語ファイル31を読み込む。検索単語ファイル31の中から、検索単語「内視鏡」に対応した単語IDが存在するか検索する。検索単語ファイルはRAM上に設けられているので、この検索は瞬時に終了する。
【0092】
もし存在すれば、その単語IDと同じ名前のビットマップファイル32を、ハードディスク上から読み込む。読み込んだビットマップ32内のどの位置に1ビットがセットして有るか検索する。
【0093】
ここでは、文書番号”T00020”と”T00185”に対応した位置のビットが1にセットされていたとする。この処理で、文書番号”T00020”と文書番号”T00185”には、「内視鏡」という単語が存在している事が判明した。
【0094】
そして、第1実施例と同様に、”T00020”と”T00185”を該当文書ファイルに記録する。
【0095】
次に本実施例での絞り込み検索を説明する。
【0096】
例えば、前記までの処理で「内視鏡」という単語が存在する”T00020”と”T00185”が検索されていたとする。さらに、「光源」という検索単語で検索する場合は、最初に前記の「内視鏡」での検索同様に、「光源」という検索単語の単語IDを単語辞書ファイルから検索する。
【0097】
次に、「光源」の単語IDが検索単語ファイル31に存在するか調べ、存在すればその単語IDに対応したビットマップ32を読み込む。読み込んだ後はそのビットを全て検索するのではなく、”T00020”と”T00185”に対応するビットが1か否かのみを調べる。
【0098】
その結果、”T00020”に対応するビットのみが1で、”T00185”に対応するビットが0であったとすれば、”T00020”のみを該当文書ファイルに記録する。
【0099】
そして、第1実施例と同様に、上記検索で検索した文書番号に対応する文書ファイルから題名、作者、作成日等その文書の見出し情報を読み込み、一覧表表示する。
【0100】
以上説明したように、本実施例によれば、第1実施例の場合には、文書毎に存在する検索単語ファイルを全て検索する必要が有ったが、本実施例では、検索単語に対応した1つのビットマップファイルのみを検索すれば良い為、さらに高速に検索する事が可能となる。
【0101】
なお、第2実施例で作成したビットマップファイルを圧縮して記録するようにしてもよい。
【0102】
すなわち、ビットマップファイルの中身は、その単語が存在する文書を識別する為のビットが書かれている。従って、多くの文書に存在する単語に関しては、そのビットマップは殆ど1である。また、逆に1つの文書にのみ存在する単語に関しては、1にセットしてあるビットが1つのみでその他はすべて0である。
【0103】
従って、例えば、0または1が連続して並んでいる時には、図16に示すように、高い圧縮率を実現できるランレングス法を用いてビットマップファイルサイズを圧縮する事が可能である。
【0104】
このランレングス法に関しては、例えば[コンピュータ画像処理のP.128〜P.132]に記載されているので、その詳細は省略する。
【0105】
また、存在する文書が少ない単語に関しては、そのビットマップファイルはビットマップ形式では無く、文書番号そのもので記録しておく方法もある。
【0106】
この場合、例えば10万件の文書をビットマップ形式で記録した場合には10万ビットが必要であるのに対して、図17に示すように、文書番号で記録した場合には1文書につき17ビットで可能になる。
【0107】
ここで、ビットマップファイルの内容がビットマップファイル形式なのか文書番号形式なのかは、ビットマップファイルのファイル名に識別情報を入れておく事で識別可能とする。例えば、ファイルの内容がビットマップ形式の場合はファイル名の拡張子をBITとし、ファイルの内容が文書番号の場合は、拡張子をBUNとする。なお、ビットマップファイルを読み出すときは、拡張子がどちらか不明なので、まず、拡張子無しのファイル名で読み出してみて、その読み出したファイルの拡張子を調べることで、ファイル形式を判別する。
【0108】
また、上記第2実施例では文書中に出現する単語による検索単語の登録及びその検索単語による文書検索について説明したが、文書中に出現する単語以外に、文書中には表れないがその文書を特定する情報、例えば作者名、文献発行日、雑誌名等の特定項目を用いて検索するようにしてもよい。
【0109】
この場合、検索単語と同様に作者、発行日、雑誌名等を、辞書登録部29により、その文字数の単語辞書ファイルに、新たに発生させた単語番号と共に登録する。図18に特定項目として作者名を登録した単語辞書ファイルの一例を示す。
【0110】
そして、上記第2実施例で作成した検索単語ファイルに特定項目の単語IDを追加すると共に、特定項目毎のビットマップファイルを作成する。
【0111】
この様に検索単語ファイルおよびビットマップファイルを構成する事により、文書中に出現する検索単語と同様のアルゴリズム処理で、特定項目での検索が可能となる。
【0112】
なお、例えば、文書番号”T00005”の文書の作者名が「山田 一」であった時の、検索単語ファイル、ビットマップファイルを、図19及び図20に示す。
【0113】
また、たとえば、文書中の単語では無く、発行日と言う特定項目で検索するとする(例えば、文献発行日「1994年06月10日」で検索する)。
【0114】
この場合、検索単語の時と同様に、文字列「1994年06月10日」の単語IDを、単語同様の処理で、1文字単語辞書ファイルから20文字単語辞書ファイルを検索して取得する。
【0115】
上記単語IDが検索単語ファイルに存在するか検索する。存在した場合には、その単語IDに対応するビットマップファイルを読みだし、文書番号を取得する。その後の処理は同じ。
【0116】
ただし、特定項目の場合、それに該当する文書数が少ないと考えられるので(例えば、「1994年06月10日」に発行された雑誌は多くても数冊であると予想される為)、ビットマップファイルは、図17に示したように文書番号形式で記録した方が良い。
【0117】
このように特定項目を用いることで、文書中に出現する単語検索と同じアルゴリズムで、単語以外の特定項目での検索が可能となり、検索能力を向上させることができる。
【0118】
さらに、上記第2実施例において、出現回数が多い順に、検索単語ファイルを並び変えておいてもよく、または、良く検索される検索単語の順に、検索単語を並び変えて置いてもよい。
【0119】
すなわち、検索頻度に応じて検索単語ファイルを並び変えて置く。図21に出現回数の多い順に並び変えた時の検索単語ファイルの一例を示す。
【0120】
このように検索単語ファイルの並び変えを行うことで、出現回数が多い単語、または検索頻度が多い単語に関しては、検索する順番が早いので、その分だけ高速に検索できる。
【0121】
特に、検索頻度が多い順に並び変えておく方法は、使用分野が特定している場合(例えば特許分野、医療分野、工業分野、薬品分野等)に大変有効である。
【0122】
次に、第3実施例について説明する。図22ないし図31は本発明の第3実施例に係わり、図22は文書検索/登録システムの構成を示す構成図、図23は図22の頭文字別辞書ファイル記録部に記録される頭文字別辞書ファイルの構成を示す構成図、図24は図22の文書検索/登録システムによる検索単語の登録処理の流れを示す第1のフローチャート、図25は図22の文書検索/登録システムによる検索単語の登録処理の流れを示す第2のフローチャート、図26は図24及び図25による処理の具体例を説明する説明図、図27は図26における処理により得られたビットマップファイルの構成を示す構成図、図28は図22の文書検索/登録システムによる文書の検索処理の流れを示す第1のフローチャート、図29は図22の文書検索/登録システムによる文書の検索処理の流れを示す第2のフローチャート、図30は図28及び図29による処理の具体例を説明する説明図、図31は図22の文書検索/登録システムによる検索自由文による検索が可能な検索処理の変形例を説明する図である。第3実施例は第2実施例とほとんど同じであるので、異なる点のみ説明する。
【0123】
前記第1及び第2実施例では、単語辞書をその単語の文字数で分類していた。即ち、1文字で構成される単語のみが集まった1文字単語辞書から、20文字で構成される単語が集まった20文字単語辞書までの20個の辞書で構成されていた。
【0124】
この場合、例えば3文字単語辞書内の単語数は約2万個近くあり、その中から例えば「内視鏡」を検索して捜し出すのには、かなりの時間が必要であり、文書の展開及び検索時間を高速にする事には限界がある。
【0125】
そこで、本実施例では、単語を頭文字毎に分類する事によって、1単語辞書内の単語数を少なくする事ができ、より高速な登録と検索を実現する。
【0126】
本実施例では、文字数別単語辞書の代わりに、図22に示すように、頭文字毎に単語を分類した頭文字別辞書ファイル40を記録している頭文字別辞書ファイル記録部41を用いる。すなわち、図23に示すように、頭文字別辞書ファイル40では、例えば「内」が先頭文字の単語として、「内」「内科」「内容」「内視鏡」「内政干渉」等を1つのグループとし、「書」であれば、「書」「書類」「書物」「書棚」等を1つのグループとしている。また、頭文字別辞書ファイル記録部41には、後述する頭文字別先頭アドレスを格納している頭文字別先頭アドレス格納部42が設けられている。
【0127】
なお、文字数別単語辞書の場合は1つ1つの単語辞書をファイル形式としたが、頭文字別単語辞書では頭文字単語辞書毎にグループとし、グループをメモリ等へ順次並べて格納して有る。ちなみに、1つの頭文字別辞書の中に含まれる単語数は、1番多いもので約400個程度である。また、本実施例では、検索単語ファイルは使用しないが、代わりにビットマップファイルは全ての単語に対してあらかじめ作成しておく(ただし、ビットは全て0に初期セット)。
【0128】
また、本実施例では、図22に示すように、文字数カウンタの代わりに頭文字先頭アドレスカウンタ44が設けられている。この頭文字先頭アドレスカウンタ44の作用については後述する。その他の構成は第2実施例と同じである。
【0129】
次に、本実施例の検索単語登録処理を図24ないし図27を用いて説明する。
【0130】
図24に示すように、文書検索システムでは、ステップS41で登録したい文書1を文書読取部3により、例えばOCRで光学的に読み込む、または、例えばフロッピーディスクに電子的に保存されていた文書であれば、その内容をテキストデータとして読み込む。そして、ステップS42で読み込んだ文書の文書データを文書ファイル記録部4に記録する。
【0131】
次にステップS43で、登録/検索制御部6の制御部24が展開処理を実行させたい文書データを文書ファイル記録部4から読み出しメモリ21に記憶する。なお、ここでは、読みだした文書番号を例えば”T00000”とし、文書を図26(a)に示すような特許公開公報とする。
【0132】
そしてステップS44で、文字位置カウンタ22を0にセットし、ステップS45で文字位置カウンタ22が示す数に対応する文書データの位置(この時点は文書の最初から1文字目)から1文字数分を切り出しレジスタ23に記憶する。そして、ステップS46で切り出した1文字のシフトJISコードを調べる。例えば、この場合の「内」のシフトJISコードは、93E0である。
【0133】
次に、ステップS47で、頭文字先頭アドレスカウンタ44がシフトJISコードを出力することで、図26(b)に示すように、頭文字別先頭アドレス格納部42内の、93E0番目に格納された「頭文字別先頭アドレス」を読み取る。この場合は、10001000である。
【0134】
これで、「内」の頭文字辞書が格納されているグループの先頭アドレスが取得できた事になる。
【0135】
次に、図26(c)に示す頭文字単語辞書グループ内の単語と、文書との逐次マッチングを取る。なお、図26(d)に頭文字単語辞書の詳細なデータ構成を示す。
【0136】
具体的には、文字位置カウンタ22が示す所から、単語辞書内の単語と同じ文字数の文字列を切り出し、レジスタ23へとセットする。そして、比較部27でレジスタ23の内容と単語辞書の単語のマッチングをとる。
【0137】
つまり、ステップS48で単語番号カウンタ26の値を1にセットする。そして、ステップS49ないしS51で辞書内の「内」と、文書の「内」のマッチングを取る。そして、図25に移り、ステップS52でマッチング結果を判定する。この場合、辞書内の「内」と文書の「内」が一致するので、この文書には「内」が存在する事が判明した。
【0138】
そこで、第2実施例同様に、ステップS53及びS54で「内」に対応するビットマップファイル中の、この文書に対応するビットを1にセットする。
【0139】
ただし、このビットマップのファイル名は、「内」のシフトJISコードと、単語辞書中にある順番(単語番号カウンタ26の値)を合わせたものとする。従って、この場合は、シフトJISが93E0で、順番が0001であるから、そのファイル名は、93E00001となる。
【0140】
そして、ステップS55で単語番号カウンタ26を1進め、ステップS56単語グループの最後かどうか判断するが、この場合は最後ではないので、図24のステップS49にもどる。
【0141】
同様にして、辞書内の次の単語である「内科」と、この「内科」と同じ文字数の文書の「内視」を切り出しマッチングを取るが、一致しないのでビットマップファイルへの書き込みは行われない。そして、ステップS55で単語番号カウンタ26を1進め、ステップS56単語辞書の最後かどうか判断するが、この場合は最後ではないので、図24のステップS49にもどる。
【0142】
再び同様にして、辞書内の次の単語である「内容」と、この「内容」と同じ文字数の文書の「内視」を切り出しマッチングを取るが、一致しないのでビットマップファイルへの書き込みは行われない。そして、ステップS55で単語番号カウンタ26を1進め、ステップS56単語辞書の最後かどうか判断するが、この場合は最後ではないので、図24のステップS49にもどる。
【0143】
再び同様にして、辞書内の次の単語である辞書内の「内視鏡」と、この「内視鏡」と同じ文字数の文書の「内視鏡」を切り出してマッチングを取る。ここで、辞書内の「内視鏡」と文書の「内視鏡」が一致したので、この文書には「内視鏡」が存在する事が判明した。
【0144】
そこで、第2実施例同様に、ステップS53及びS54で「内視鏡」に対応するビットマップファイル中の、この文書に対応するビットを1にセットする。
【0145】
ただし、上述したようにこのビットマップのファイル名は、「内」のシフトJISコードと、単語辞書中にある順番(単語番号カウンタ26の値)を合わせたものとする。従ってこの場合は、シフトJISが93E0で、順番が0004であるから、そのファイル名は、93E00004となる。
【0146】
全く同様にして、辞書内の「内政干渉」と文書の「内視鏡画」のマッチングを取り、単語番号カウンタ26を1進める。
【0147】
このようにして、上記の処理を、頭文字が「内」で始まる単語辞書内の単語が無くなるまで行う。
【0148】
そして、ステップS56で単語が無くなったと判断したら、ステップS57で文字位置カウンタを1増加し、図26(e)に示すように、文書の切り出し位置を1つ右へとずらす。上記の処理を、ステップS58で文書の終わりと判断するまで、繰り返すことで、図27に示すようなビットマップファイルを得る。
【0149】
次に、このようにして得られたビットマップファイルに基づく文書検索処理について、図28ないし図30を用いて具体的に説明する。
【0150】
図30(a)に示すように、「内視鏡」が検索単語として、キーボードから入力されたとする。
【0151】
そこで、図28に示すように、ステップS61で検索単語の1文字数分を切り出し、レジスタ23に記憶する。そして、ステップS62で切り出した1文字のシフトJISコードを調べる。例えば、この場合の「内」のシフトJISコードは、93E0である。
【0152】
次に、ステップS63で、図30(b)に示すように、頭文字別先頭アドレス格納部42内の、93E0番目に格納された「頭文字別先頭アドレス」を読み取る。この場合は、10001000である。
【0153】
これで、「内」の頭文字辞書が格納されているグループの先頭アドレスが取得できた事になる。
【0154】
次に、図30(c)に示す頭文字単語辞書内の単語と、検索単語「内視鏡」との逐次マッチングを取る。なお、図30(d)に頭文字単語辞書の詳細なデータ構成を示す。
【0155】
具体的には、検索単語「内視鏡」をレジスタにセットし、単語辞書内の単語と比較部27を用いて逐次比較していく。
【0156】
つまり、ステップS64で単語番号カウンタ26の値を1にセットする。そして、ステップS65及びS66で検索単語の「内視鏡」と、単語辞書内の「内」のマッチングを取る。そして、図29に移り、ステップS67でマッチング結果を判定する。この場合、辞書内の「内」と検索単語の「内視鏡」が一致しない事が判明した。そして、ステップS71で単語番号カウンタ26を1増加させる。次に、ステップS72で単語辞書の最後かどうか判断するが、この場合は最後ではないので、図28のステップS65に戻り、辞書内の次の単語、この場合は「内科」という単語と、レジスタ内の検索単語「内視鏡」とのマッチングを、上記の処理と同様に行う。以下、同様にして単語番号カウンタ26を1進め、検索単語「内視鏡」と、辞書内の「内容」とのマッチングを取り、再び単語番号カウンタ26を1進め、検索単語「内視鏡」と、辞書内の「内視鏡」とのマッチングを取る。
【0157】
ここで、検索単語の「内視鏡」と辞書内の「内視鏡」が一致した。
【0158】
従って、この場合は、シフトJISが93E0で、単語番号カウンタが0004であるから、そのファイル名は、93E00004である事が判明した。
【0159】
そこで、図29のステップS68ないしS70で、図30(e)に示すようなビットマップファイル名が93E00004のファイルを読み込み、その中で、1にセットしてあるビットを探し出す。次に、そのビットに対応する文書を該当文書ファイルに記録する。
【0160】
上記の処理を単語辞書の最後の単語まで繰り返し、ステップS72で最後と判断されると、ステップS73で該当文書ファイルに記録されている文書の見出し情報を検索結果表示部10に表示する。
【0161】
このように、本実施例では、単語を頭文字毎に分類する事によって1単語辞書内の単語数を少なくする事によって、より高速な登録と検索を実現する。
【0162】
なお、検索時に、合成語(2つの単語を合わせた語)で検索したい場合が有る。例えば、「半導体操作」と言う単語を検索単語として検索する場合を考えると、「半導体操作」と言う語は、「半導体」と言う単語と「操作」と言う単語を合成したものである。
【0163】
そこで、この様な処理を可能とする本実施例の変形例について説明する。ここで、検索単語の登録に関しては、本実施例と同じであるので説明は省略する。
【0164】
この変形例では、最初に、検索単語に対して、本実施例の展開と同様の展開処理を施し、合成語がどのような単語で合成されているのかを調べる。
【0165】
(1)頭文字辞書の先頭アドレスの取得
検索単語の最初から1文字目を切り出し、その文字のシフトJISコードを調べる。例えば、この場合の「半」のシフトJISコードは、94BCである。
【0166】
次に、単語頭文字別先頭アドレス格納部内の、94BC番目に格納された「頭文字別先頭アドレス」を読み取る。
【0167】
これで、「半」の頭文字辞書が格納されているエリアの先頭アドレスが判別できた事になる。
【0168】
(2)頭文字単語辞書と検索単語との逐次マッチング
頭文字単語辞書内の単語と、検索単語との逐次マッチングを取る。具体的には、先頭アドレスから始まる単語辞書内の単語の文字数と同じ文字数の文字列を検索単語から切り出し、逐次マッチングさせる。
【0169】
この場合では、辞書内の「半分」と、検索単語の「半導」のマッチングを取る。そして、単語番号カウンタ26の値を1にセットする。次に辞書内の「半々」と、検索単語の「半導」のマッチングを取る。そして、単語番号カウンタ26を1進める。さらに、辞書内の「半透明」と、検索単語の「半導体」のマッチングを取る。
【0170】
そして、単語番号カウンタ26を1進める。続いて、辞書内の「半導体」と、検索単語の「半導体」のマッチングを取る。そして、単語番号カウンタ26を1進める。
【0171】
ここで、辞書内の「半導体」と検索単語の「半導体」が一致したので、この検索単語には「半導体」が存在する事が判明した。
【0172】
また、「半導体」に対応するビットマップのファイル名は、94BC0004で有る事が求められた。
【0173】
上記の処理を、頭文字が「半」で始まる単語グループ内の単語が無くなるまで行う。単語が無くなったら、検索単語の切り出し位置を1つ右へとずらす。
【0174】
上記の処理を、検索単語の終わりまで、繰り返す。
【0175】
上記処理を行った結果、「半導体操作」と言う合成語を構成している単語としては、「半導体」「導体」「体操」「操作」がその候補として挙げられたとする。
【0176】
(3)検索単語の選択
上記処理で求められた候補単語を検索結果表示部10のモニタ等に表示し、操作者に検索に使用したい単語を選択される。
【0177】
この場合は、「半導体」と「操作」を選択したとする。
【0178】
(4)ビットマップファイル内のビットの検索
第2実施例での「内視鏡」と「光源」の両方の単語を有する文書の絞り込み処理と同様に、「半導体」と「操作」の両方を有する文書を探し出す。すなわち、「半導体」に対応するビットファイルファイルを読み込み、その中で、1にセットしてあるビットを探し出す。また、「操作」に対応するビットマップファイルを読み込み、その中で、1にセットしてあるビットを抽出する。
【0179】
その中で、「半導体」と「操作」の両方のビットマップファイルに1がセットして有る文書を抽出する。
【0180】
(5)文書中における検索単語の連結性調査
「半導体」と「操作」の両方が存在する複数の文書に対して、最初に「半導体」と言う単語と文書の文字列とのマッチングを取り、「半導体」が存在する位置を調査する。
【0181】
同様に、「操作」と言う単語と文書の文字列とのマッチングを取り、「操作」が存在する位置を調査する。処理としては、第1実施例の表示処理での単語位置探索と同様である。そして、調査した中で、「半導体」と言う単語が存在し、その直後に「操作」と言う単語が存在する様な位置関係にあるものを抽出する。
【0182】
これで、「半導体」と「操作」の両方が存在し、しかも両方が続けて記述された「半導体操作」である合成語のある文書が抽出できたことになる。そして、抽出した文書の見出し情報を検索結果表示部に表示する。また、合成語からなる検索単語が、例えば「文書検索」(=文書+検索)の場合のように、文字の重複なしに一意的に展開できた場合は、合成語を構成する単語について選択の自由度がなくなるので、上記「(3)検索単語の選択」のステップをスキップすることができる。
【0183】
上記変形例での処理は、検索単語として合成語の場合を想定したが、検索単語として、自由文を使用する事も考えられる。
【0184】
その場合もこの変形例と同様に、図31(a)に示すような入力された検索自由文を、図31(b)に示すように単語展開し、図31(c)に示すように検索に使用する検索単語の候補を選択し、その候補単語が全て存在する文書を探し出せば良い事になる。図31の場合「CCD」と、「面順次発光光源」と、「ビデオ内視鏡システムが候補単語となっている。
【0185】
この変形例では、合成語等での検索が可能となるので、検索入力時の自由度が増す。
【0186】
次に、第4実施例について説明する。図32ないし図36は本発明の第4実施例に係わり、図32は頭1文字と最後尾1文字が同じ単語毎に細分化されたグループからなる頭文字別単語辞書の構成を示す構成図、図33は図32の頭文字別単語辞書を用いた検索単語の登録処理の流れを示す第1のフローチャート、図34は図33の第1のフローチャートに続く検索単語の登録処理の流れを示す第2のフローチャート、図35は図32及び図33で登録された検索単語による文書の検索処理の流れを示す第1のフローチャート、図36は図35の第1のフローチャートに続く文書の検索処理の流れを示す第2のフローチャートである。第4実施例は第3実施例とほとんど同じであり、システム構成は同じで処理のみが異なるので、異なる点のみ説明する。
【0187】
第3実施例では、頭文字別単語辞書を用いたが、日本語の場合はこの方法で単語が細かく分類でき高速化が図られるが、英語の場合には、同じ頭文字で始まる単語の数が多く存在する為に、単語が細分化されず、この方法はさほど効果を持たない。
【0188】
そこで、本実施例では、英語の様に頭文字が同じ単語が多数存在する場合でも、辞書内の単語の細分化が実現でき、登録/検索の高速化を可能とする。
【0189】
辞書内の単語を、以下のいずれかの方法で細分化しておく。
【0190】
(1)頭1文字と最後尾1文字が同じ単語毎に細分化する。
【0191】
例えば、図32に示すように、頭1文字が「a」で始り最後が「r」で終わる単語、「answer」「ancestor」「appear」等を1つのグループとし、「a」で始り最後が「y」で終わる単語「angry」「apply」「army」等を1つのグループとする。
【0192】
(2)頭2文字毎に、細分化する
例えば、頭2文字が「ab」で始まる単語、「able」「above」「abroad」等を1つのグループとし、「ac」で始まる単語「accent」「accompany」「account」等を1つのグループとする。
【0193】
(3)頭1文字と文字数が同じ単語毎に細分化する。
【0194】
例えば、頭1文字が「a」で始り文字数が3文字の単語、「art」「air」「arm」等を1つのグループとし、「a」で始り文字数が5文字の単語「apart」「atlas」「aside」等を1つのグループとする。
【0195】
(4)上記(1)〜(3)を掛け合わせた条件で、細分化する。
【0196】
そして、上記のようにして、細分化したグループには、シフトJISの未使用コードを割り振る。つまり、例えば、シフトJISコードでは7100から71FFまでは未使用エリアとなっているので、上記(1)の頭1文字が「a」で始り最後が「r」で終わる単語群には、シフトJISコードの71F0を割り振る。
【0197】
次に本実施例の検索単語の登録処理について説明する。
【0198】
英語の場合は個々の単語がスペースで区切られている為、単語の区切りが明確でない日本語の場合とは、展開が異なる。
【0199】
例えば、上記の細分化グループとして(1)におけるグループである頭1文字と最後尾1文字が同じ単語毎に細分化してある場合を考える。
【0200】
図33に示すように、本実施例の文書検索システムでは、ステップS81で登録したい文書1を文書読取部3により、例えばOCRで光学的に読み込む、または、例えばフロッピーディスクに電子的に保存されていた文書であれば、その内容をテキストデータとして読み込む。そして、ステップS82で読み込んだ文書の文書データを文書ファイル記録部4に記録する。
【0201】
次にステップS83で、登録/検索制御部6の制御部24が展開処理を実行させたい文書データを文書ファイル記録部4から読み出しメモリ21に記憶する。
【0202】
そしてステップS84で、文字位置カウンタ22を0にセットし、ステップS85で文字位置カウンタ22が示す数に対応する文書データの位置(この時点は文書の最初から1文字目)から次のスペースまでの1単語を切り出し(この場合は例えばanswer)、そして、ステップS86で切り出した1単語をレジスタ23に格納すると共に、ステップS87で先頭1文字と最後尾1文字(この場合は、aとr)を調べ、その結果からステップS88で先頭1文字と最後尾1文字に対応する単語辞書のシフトJISコードを調べる。なお、例えば、この場合の「answer」が属ずるグループのシフトJISコードは、71F0である。
【0203】
次に、ステップS89で、頭文字先頭アドレスカウンタ44がシフトJISコードを出力することで、71F0番目に格納された「頭文字別先頭アドレス」を読み取る。この場合は、15704300であったとする。これで、「answer」の属する頭文字辞書が格納されているエリアの先頭アドレスが判別できた事になる。
【0204】
次に、頭文字単語辞書内の単語と、文書との逐次マッチングを取る。具体的には、比較部27で、レジスタ23に格納されている文字位置カウンタ22が示す所からスペースまでの切りだした単語と単語辞書の単語とのマッチングをとる。
【0205】
つまり、ステップS90で単語番号カウンタ26の値を1にセットする。そして、ステップS91及びS92で、例えば辞書内の「ancestor」と、文書の「answer」のマッチングを取る(図32参照)。そして、図34に移り、ステップS93でマッチング結果を判定する。この場合、辞書内の「ancestor」と文書の「answer」とが一致しないので、ステップS96で単語番号カウンタ26を1進め、ステップS97で単語グループの最後かどうか判断するが、この場合は最後ではないので、図33のステップS91にもどる。
【0206】
同様にして、ステップ91及びS92で、辞書内の次の単語である「appear」と、文書の「answer」のマッチングを取る。そして、図34に移り、ステップS93でマッチング結果を判定する。この場合、辞書内の「ancestor」と文書の「answer」とが一致しないので、ステップS96で単語番号カウンタ26を1進め、ステップS97で単語グループの最後かどうか判断するが、この場合は最後ではないので、図33のステップS91にもどる。
【0207】
同様にして、ステップ91及びS92で、辞書内の次の単語である「answer」と、文書の「answer」のマッチングを取る。
【0208】
ここで、辞書内の「answer」と文書の「answer」が一致したので、この文書には「answer」が存在する事が判明した。
【0209】
ステップS93よりステップS94に処理が移行し、第3実施例同様に、「answer」に対応するビットマップ中の、この文書に対応するビットを1にセットする。
【0210】
ただし、このビットマップのファイル名は、「answer」が属するグループのシフトJISコードと、単語辞書中にある順番(単語番号カウンタ26の値)を合わせたものとする。従って、この場合は、シフトJISが71F0で、順番が0003であるから、そのファイル名は、71F00003となる。
【0211】
上記マッチングは、同じ単語が見つかるか、又は辞書内の単語グループの最後まで繰り返す。
【0212】
同じ単語が見つかるか、辞書内の単語グループの最後まで繰り返したら、ステップS99で文書内の単語切り出し開始位置を、次のスペースへと右へずらす。また、その時に切り出す文字列の最後は、2番目のスペースまでとする。
【0213】
そして、ステップS100で文書の最後かどうか判定することで、上記の処理を、文書の終わりまで、繰り返す。
【0214】
ここで、英語の場合、文書中の単語が名詞であれば複数形の時に最後尾に「s,es」を付け、動詞であれば過去形の時に最後尾に「ed」を付け、形容詞であれば比較級の時に「er,est」を付ける等の語尾変化を伴う事が多い。
【0215】
従って、この「頭文字辞書の先頭アドレスの取得」処理(図33のステップS85〜S89)において、切り出した単語が語尾変化をしている事も考えられるので、もし文書中の単語の語尾が 「s,es,ed、er,est」であった場合には、その語尾を取り除いた文字列に対しても、語尾を取り除かない文字列に対する処理に合わせて、同様の処理を行っておく。
【0216】
なお、単語が複数形、過去形、比較形時に規則変化する場合にはこの処理で対応でき、不規則変化する場合にはその不規則変化した形での単語をあらかじめ辞書に登録しておく事で対応できる。
【0217】
次に、このようにして得られたビットマップファイルに基づく文書検索処理について、図35及び図36を用いて説明する。
【0218】
まず、「answer」が検索単語として、キーボードから入力されたとする。
【0219】
そこで、図35に示すように、ステップS101で検索単語の先頭1文字と最後尾1文字(この場合は、aとr)を調べ、その結果からステップS102で先頭1文字と最後尾1文字に対応する単語辞書のシフトJISコードを調べる。なお、例えば、この場合の「answer」が属ずるグループのシフトJISコードは、71F0である。
【0220】
次に、ステップS103で、頭文字先頭アドレスカウンタ44がシフトJISコードを出力することで、71F0番目に格納された「頭文字別先頭アドレス」を読み取る。この場合は、15704300であったとする。これで、「answer」の属する頭文字辞書が格納されている先頭アドレスが判別できた事になる。
【0221】
次に、頭文字単語辞書内の単語と、文書との逐次マッチングを取る。具体的には、比較部27で、レジスタ23に格納されている検索単語と単語辞書の単語とのマッチングをとる。
【0222】
つまり、ステップS104で単語番号カウンタ26の値を1にセットする。そして、ステップS105及びS106で、例えば辞書内の「ancestor」と、文書の「answer」のマッチングを取る(図32参照)。そして、図36に移り、ステップS107でマッチング結果を判定する。この場合、辞書内の「ancestor」と文書の「answer」とが一致しないので、ステップS111で単語番号カウンタ26を1進め、ステップS112で単語グループの最後かどうか判断するが、この場合は最後ではないので、図35のステップS105にもどる。
【0223】
同様にして、ステップS105及びS106で、辞書内の次の単語である「appear」と、文書の「answer」のマッチングを取る。そして、図36に移り、ステップS107でマッチング結果を判定する。この場合、辞書内の「ancestor」と文書の「answer」とが一致しないので、ステップS111で単語番号カウンタ26を1進め、ステップS112で単語グループの最後かどうか判断するが、この場合は最後ではないので、図35のステップS105にもどる。
【0224】
同様にして、ステップS105及びS106で、辞書内の次の単語である「answer」と、文書の「answer」のマッチングを取る。
【0225】
ここで、辞書内の「answer」と文書の「answer」が一致したので、この文書には「answer」が存在する事が判明した。
【0226】
従って、この場合は、シフトJISが71F0で、順番が0003であるから、そのファイル名は、71F00003である事が判明した。
【0227】
そこで、図29のステップS108ないしS110で、ビットマップファイル名が93E00004のファイルを読み込み、その中で、1にセットしてあるビットを探し出す。次に、そのビットに対応する文書を該当文書ファイルに記録する。
【0228】
上記の処理を単語グループの最後の単語まで繰り返し、ステップS112で最後と判断されると、ステップS113で該当文書ファイルに記録されている文書の見出し情報を検索結果表示部10に表示する。
【0229】
このように、本実施例によれば、英語の様に、同じ頭文字を有する単語が多く存在する場合でも、単語辞書を更に細分化する事で、登録/検索処理の高速化が維持できる。
【0230】
次に、第5実施例について説明する。図37ないし図41は本発明の第5実施例に係わり、図37は文書登録/検索システムの構成を示す構成図、図38は図37の文書登録/検索システムにおける入力検索単語による検索項目及び候補項目を取得する処理の流れを示すフローチャート、図39は図38の検索項目と同じ文字数の辞書との比較処理の流れを示すフローチャート、図40は図38の検索項目より1文字多い文字数の辞書との比較処理の流れを示すフローチャート、図41は図38の検索項目より1文字少ない文字数の辞書との比較処理の流れを示すフローチャートである。第5実施例は第2実施例とほとんど同じであるので、異なる点のみ説明する。
【0231】
第2実施例の変形例(図18参照)でも述べたように、文書を検索する場合には、文書に含まれる単語以外に、作者名、発行日、雑誌名等での検索する事も頻繁におきる。
【0232】
ここで、登録時にこれら特定項目を検索語としてキーボードから入力する時には、タイプミスによる誤入力をともなう事がある。特に、作者名をローマ字入力する場合には、以下の三種類のミスを犯しやすい。
【0233】
(1)スペル入力ミス
例えば、「ICHIROU」と入力すべきところを、「ISHIROU」と入力してしまう。
【0234】
(2)重複入力ミス
例えば、「ICHIROU」と入力すべきところを、「ICCHIROU」と入力してしまう。
【0235】
(3)スペル抜けミス
例えば、「ICHIROU」と入力すべきところを、「IHIROU」と入力してしまう。
【0236】
そこで、本実施例では、この様な登録時の入力ミスが有った場合でも、検索を可能とするいわゆる曖昧検索を実現する。
【0237】
本実施例の文書登録/検索システムでは、図34に示すように、レジスタ23の出力側にマッチングカウンタ51が設けられている。このマッチングカウンタ51の作用は後述する。
【0238】
その他の構成は第2実施例と同じである(なお、第2実施例は検索単語ファイルの構成が第1実施例と異なるので、その他の構成は実質的には図2に示した構成と同じことになる)。
【0239】
検索単語の登録処理は、第2実施例及びその変形例と同じであるので説明は省略する。
【0240】
次に、検索単語による文書検索処理について説明する。たとえば、「ICHIROU」と言う正式な作者名で検索するとする。
【0241】
この場合、検索単語の時と同様に、「ICHIROU」の単語IDを、単語同様の処理で、単語辞書ファイルを検索して取得する。
【0242】
この時に、登録時の入力ミスを想定し、本実施例では曖昧検索を実施する。
【0243】
ここでは、前述の3つの入力ミスが登録時に生じていたとする。即ち、「ICHIROU」と入力すべきところを、1字誤り「ISHIROU」「ICCHIROU」「IYCHIROU」「IHIROU」として登録されていたとする。
【0244】
図38に示すように、文書検索処理では、ステップS121で検索項目の文字数Nをチェックし文字数カウンタ25をNにセットする(この場合は、「ICHIROU」なので、7)。そして、ステップS122〜S124で、後述する検索項目と同じ文字数の辞書との比較処理、検索項目より1文字多い文字数の辞書との比較処理、検索項目より1文字少ない文字数の辞書との比較処理を順次行うことで、候補項目を取得する。
【0245】
次に、上記のステップS122〜S124での処理を図38ないし図41を用いて説明する。
【0246】
(1)ステップS122:検索項目と同じ文字数の単語辞書とのマッチング
図39に示すように、この処理では、ステップ131で単語番号カウンタ26を0にセットし、ステップS132で文字数Nの単語辞書内の単語と、検索項目との相関を取る。このマッチングでは、辞書内の単語と検索項目とを、先頭から1字ずつ比較する。そして、合致する毎に、マッチングカウンタ51を1増加させる。
【0247】
そして、ステップS133でマッチングカウンタ51がNかどうか判断し、Nの時には、ステップS134で完全一致したとして検索項目として抽出する。
【0248】
また、Nでない場合は、ステップS135でマッチングカウンタ51がN−1かどうか判断し、N−1の時には、単語は1字違いで有り、1字の入力ミスで有る事が予想される。そこで、ステップS136で、例えば「ISHIROU」が候補項目として抽出される。
【0249】
そして、ステップS137で単語番号をインクリメントし、ステップS138で辞書内の最後の判定を繰り返すことで、項目及び候補項目を得る。
【0250】
(2)ステップS123:検索項目より1文字多い文字数の単語辞書とのマッチング
図40に示すように、この処理では、ステップ141で単語番号カウンタ26を0にセットし、ステップS142で文字数N+1の単語辞書内の単語と、検索項目との相関を取る。このマッチングでは、辞書内の単語と検索項目とを、先頭から1字ずつ比較する。そして、合致する毎に、マッチングカウンタ51を1増加させる。つまり、検索項目が「ICHIROU」で辞書内の単語が「ICCHIROU」である場合にはカウンタの値は2、辞書内の単語が「IYCHIROU」である場合にはカウンタの値は1となる。
【0251】
次に、ステップS143でレジスタ23内のデータ「ICHIROU」を1文字分右へシフトし、ステップS144で「_ICHIROU」とし、辞書内の単語と比較する。そして、合致する毎に、マッチングカウンタ51を1増加させる。その結果、辞書内の単語が「ICCHIROU」である場合にはカウンタの値は6、辞書内の単語が「IYCHIROU」である場合もカウンタの値は6となる。そして、マッチングカウンタ51において前の処理(ステップS142)でのカウンタの値と今回のカウンタの値を加算した値をカウント値とする。
【0252】
そして、ステップS145でマッチングカウンタ51の値がN以上かどうか判断し、N以上の時には、単語は1字違いで有り、1字の入力ミスで有る事が予想される。そこで、ステップS146で、例えば「ICCHIROU」や「IYCHIROU」が候補項目として抽出される。
【0253】
そして、ステップS147で単語番号をインクリメントし、ステップS148で辞書内の最後の判定を繰り返すことで、候補項目を得る。
【0254】
4.検索項目より1文字少ない文字数の単語辞書とのマッチング
(3)ステップS124:検索項目より1文字少ない文字数の単語辞書とのマッチング
図41に示すように、この処理では、ステップ151で単語番号カウンタ26を0にセットし、ステップS152で文字数N−1の単語辞書内の単語と、検索項目との相関を取る。このマッチングでは、辞書内の単語と検索項目とを、先頭から1字ずつ比較する。そして、合致する毎に、マッチングカウンタ51を1増加させる。つまり、検索項目が「ICHIROU」で辞書内の単語が「IHIROU」である場合にはカウンタの値は1となる。
【0255】
次に、ステップS153で辞書内の単語「IHIROU」を1文字分右へシフトし、ステップS154で「_IHIROU」とし、レジスタ23内のデータと比較する。そして、合致する毎に、マッチングカウンタ51を1増加させる。その結果、辞書内の単語が「IHIROU」である場合にはカウンタの値は5となる。そして、マッチングカウンタ51において前の処理(ステップS152)でのカウンタの値と今回のカウンタの値を加算した値をカウント値とする。
【0256】
そして、ステップS155でマッチングカウンタ51の値がN−1以上かどうか判断し、N−1以上の時には、単語は1字違いで有り、1字の入力ミスで有る事が予想される。そこで、ステップS156で、例えば「IHIROU」が候補項目として抽出される。
【0257】
そして、ステップS157で単語番号をインクリメントし、ステップS158で辞書内の最後の判定を繰り返すことで、候補項目を得る。
【0258】
そして、このようにして得られた、完全一致した特定項目及び検索候補項目に対して検索単語ファイルを検索し、存在する場合には、そのビットマップファイルを読みだす。完全一致した特定項目に加えて、一字違いの候補項目に関しても、その対応する文書の見出し情報を読み込み、一覧表表示する。
【0259】
なお、ここでは一字の入力ミスを候補として挙げたが、2字までの入力ミスも候補として挙げる場合も、前記同様の以下の処理を行う事により実現可能である。
【0260】
その場合には、
(1)検索項目と同じ文字数の単語辞書とのマッチング
文字数Nの単語辞書内の単語と、検索項目文字列との相関を取る。カウンタ値がN−1、N−2の単語を候補として抽出する。
【0261】
(2)検索項目より2文字多い文字数の単語辞書とのマッチング
文字数N+1、N+2の単語辞書内の単語と、検索項目との相関を取る。文字数がN+2の単語辞書内の単語との相関を取る時には、検索項目文字列を右へシフトする処理を2回行う(「_ICHIROU」「__ICHIROU」)。3回の処理のカウンタ値の合計が、N以上の単語を候補として抽出する。
【0262】
(3)検索項目より2文字少ない文字数の単語辞書とのマッチング
文字数N−1、N−2の単語辞書内の単語と、検索項目との相関を取る。文字数がN−2の単語辞書内の単語との相関を取る時には、単語辞書内の単語を右へシフトする処理を2回行う(「_IHIRO」「__IHIRO」)。カウンタ値がN−2以上の単語を候補として抽出する。
【0263】
このように本実施例によれば、入力ミスの有った単語に関しても、曖昧検索が可能となり、検索能力が向上する。
【0264】
なお、上記第5実施例では、登録時に、特定項目をキーボードから入力する際に生じる誤入力を救う検索方法(曖昧検索)に関して記述したが、これに限らず、例えば、特定項目の入力を自動化する事により、誤入力を未然に防止するようにしても良い。
【0265】
すなわち、例として、特許文書のように、特定項目に見出しが付いている文書を想定する。
【0266】
特許の場合には、出願人の前には「(71)出願人」、出願日の前には「(22)出願日」、発明の名称の前には「(54)〔発明の名称〕」等の見出しが付いている。
【0267】
したがって、この見出しを自動認識すれば、特定項目をキーボード等から手入力する必要が無くなり、誤入力が防げる。
【0268】
例えば、第3実施例と同様に、文書内の文字列を頭文字別辞書で展開していく。すなわち、あらかじめ、頭文字が「(」の単語辞書に、「(71)出願人」、「(22)出願日」、「(54)〔発明の名称〕」等の見出し文字列を登録しておく。
【0269】
順次展開していく中で、文書内の文字が「(」となったら、「(」の頭文字辞書内の単語とのマッチングを取る。その処理の中で、「(71)出願人」、「(22)出願日」、「(54)〔発明の名称〕」等の見出し文字列と合致した場合には、その後の文字列をその見出しに対応した特定項目とみなし、以前と同様の処理を行う。ここで、その特定項目の最後尾の確認は、次の見出しの始まりである「(」や「〔」を検知する事で可能である。
【0270】
このような変形例では、特定項目が、文書中の文字を用いて自動的に行われるので、作業効率が向上すると共に、誤入力を防止できる。
【0271】
[付記]
(付記項1) 文書中の単語をキーワードとして複数の文書を検索する文書検索方法において、
前記文書の先頭から1文字毎に順次移動し、移動した文字を先頭文字とする前記文書を構成する1つ以上の文字からなる文字列を順次切り出す文字切り出しステップと、
所定の規則に従った複数の単語からなる複数の単語グループのうち1つの前記単語グループを指定する単語グループ指定ステップと、
前記単語グループ指定ステップにより指定された前記単語グループの前記単語を指定する単語指定ステップと、
前記単語指定ステップにより指定された前記単語と、前記文字切り出しステップにより切り出された前記文字列とを比較する比較ステップと、
前記比較ステップの比較により前記単語と前記文字列とが一致した場合に、前記文書と対応づけて前記文字列を前記キーワードとして抽出するキーワード抽出ステップと
を備えて構成されることを特徴とする文書検索方法。
【0272】
(付記項2) 前記文字切り出しステップは、前記文字列を文字数単位毎に切り出し、
前記単語グループは、文字数等しい複数の単語からなり、
前記単語グループ指定ステップは、前記文字切り出しステップで切り出された文字列の文字数と等しい前記単語グループを指定する
ことを特徴とする付記項1に記載の文書検索方法。
【0273】
(付記項3) 前記単語グループは、少なくとも前記単語の前記先頭文字が等しい異なる文字数の複数の単語からなり、
前記単語グループ指定ステップは、前記文字切り出しステップで切り出された文字列の先頭文字と等しい前記単語グループを指定し、
前記文字切り出しステップは、前記単語指定ステップが指定した前記単語の文字数に等しく、前記文字列の前記先頭文字が同一の文字列を新たに切り出す
ことを特徴とする付記項1に記載の文書検索方法。
【0274】
(付記項4) 前記キーワード抽出ステップにより抽出されたキーワードを格納するキーワード格納ステップと、
検索キーワードを入力する検索キーワード入力ステップと、
前記キーワード格納ステップにて格納されたキーワードを所定の順序で読み出すキーワード読み出しステップと、
前記キーワード読み出しステップにて読み出されたキーワードを、前記検索キーワード入力ステップにて入力された検索キーワードと比較する検索キーワード比較ステップと、
前記検索キーワード比較ステップの比較結果に基づき、前記キーワード格納ステップにより格納された前記キーワードを読みだし、前記キーワードにより前記文書を指定する文書指定ステップと
を備えたことを特徴とする付記項1の文書検索方法。
【0275】
(付記項5) 前記キーワード抽出ステップは、前記比較ステップの比較による前記単語と前記文字列との一致回数を抽出する
ことを特徴とする付記項1に記載の文書検索方法。
【0276】
(付記項6) 文書中の単語をキーワードとして複数の文書を検索する文書検索装置において、
前記文書の先頭から1文字毎に順次移動し、移動した文字を先頭文字とする前記文書を構成する1つ以上の文字からなる文字列を順次切り出す文字切り出し手段と、
所定の規則に従った複数の単語からなる複数の単語グループを記録する単語グループ記録手段と、
前記単語グループ記録手段が記録している前記複数の単語グループのうち1つの前記単語グループを指定する単語グループ指定手段と、
前記単語グループ指定手段により指定された前記単語グループの前記単語を指定する単語指定手段と、
前記単語指定手段により指定された前記単語と、前記文字切り出し手段により切り出された前記文字列とを比較する比較手段と、
前記比較手段の比較により前記単語と前記文字列とが一致した場合に、前記文書と対応づけて前記文字列を前記キーワードとして抽出するキーワード抽出手段と
を備えて構成されることを特徴とする文書検索装置。
【0277】
(付記項7) 前記文字切り出し手段は、前記文字列を文字数単位毎に切り出し、
前記単語グループは、文字数等しい複数の単語からなり、
前記単語グループ指定手段は、前記文字切り出し手段で切り出された文字列の文字数と等しい前記単語グループを指定する
ことを特徴とする付記項6に記載の文書検索装置。
【0278】
(付記項8) 前記単語グループは、少なくとも前記単語の前記先頭文字が等しい異なる文字数の複数の単語からなり、
前記単語グループ指定手段は、前記文字切り出し手段で切り出された文字列の先頭文字と等しい前記単語グループを指定し、
前記文字切り出し手段は、前記単語指定手段が指定した前記単語の文字数に等しく、前記文字列の前記先頭文字が同一の文字列を新たに切り出す
ことを特徴とする付記項6に記載の文書検索装置。
【0279】
(付記項9) 前記キーワード抽出手段により抽出された前記キーワードを格納するキーワード格納手段と、
検索キーワードを入力する検索キーワード入力手段と
を備え、
前記比較手段は、前記単語指定手段により指定された前記単語と、前記検索キーワード入力手段により入力された前記検索キーワードを比較し、
前記キーワード抽出手段は、前記検索キーワード比較手段の比較結果に基づき、前記キーワード格納手段により格納された前記キーワードを読みだし、前記キーワードにより前記文書を指定する
を備えたことを特徴とする付記項6の文書検索装置。
【0280】
(付記項10) 前記キーワード抽出手段は、前記比較手段の比較による前記単語と前記文字列との一致回数を抽出すると共に、前記一致回数に基づき前記文書を指定する
ことを特徴とする付記項9に記載の文書検索装置。
【0281】
(付記項11) 前記キーワード格納手段は、前記一致回数に基づき前記キーワード抽出手段により抽出された前記キーワードを配列させ、格納する
ことを特徴とする付記項10に記載の文書検索装置。
【0282】
(付記項12) 前記比較手段で前記単語のすべてと一致しない前記文字列を前記単語グループ記録手段に追加記録する単語追加手段
を有することを特徴とする付記項6に記載の文書検索装置。
【0283】
(付記項13) 前記比較手段で前記単語のすべてと一致しない前記文字列を前記単語グループ記録手段に追加記録する単語追加手段
を有することを特徴とする付記項9に記載の文書検索装置。
【0284】
(付記項14) 前記キーワード抽出手段は、前記文書に関わる特定情報を検出し、
前記キーワード格納手段は、前記特定情報を前記単語情報として格納し、
前記単語追加手段は、前記単語グループ記録手段に前記特定情報を追加記録する
ことを特徴とする付記項13に記載の文書検索装置。
【0285】
(付記項15) 前記検索キーワード入力手段は、前記文書に関わる前記特定情報を入力する
ことを特徴とする付記項14に記載の文書検索装置。
【0286】
(付記項16) 前記キーワード抽出手段は、
前記検索キーワード入力手段から指定された前記検索キーワードが、前記キーワード格納手段に格納されている前記特定情報あるいは前記キーワードと、文字の配列および文字数において不完全な一致を許して、前記文書を前記キーワード格納手段から指定する
ことを特徴とする付記項15に記載の文書検索装置。
【0287】
(付記項17) 前記単語グループ記録手段は、
前記文書中の特定項目に付されている見出しを記録しており、
前記キーワード格納手段は、
前記見出しを検出して、前記見出しに続く文字列を特定情報として格納する
ことを特徴とする付記項9に記載の文書検索装置。
【0288】
(付記項18) 前記キーワード格納手段は、
前記キーワードをビットマップ形式で記録する
ことを特徴とする付記項9に記載の文書検索装置。
【0289】
(付記項19) 前記キーワード格納手段は、
前記キーワードを圧縮処理して記録する
ことを特徴とする付記項9に記載の文書検索装置。
【0290】
(付記項20) 前記単語グループは、2つ以上の共通な属性を有する複数の単語からなる
ことを特徴とする付記項6に記載の文書検索装置。
【0291】
(付記項21) 前記検索キーワード入力手段は、
入力する前記検索キーワードが複数の検索単語からなる検索合成語または検索文であるときに、前記検索キーワードを文字数順に切り出しながら、順次前記単語グループ記録手段の前記単語と対応付けるため前記検索単語を切り出す検索単語切り出し手段を有し、
前記キーワード抽出手段は、前記検索単語切り出し手段にて切り出された複数の検索単語を有する文書を指定する
ことを特徴とする付記項9に記載の文書検索装置。
【0292】
(付記項22) 前記検索キーワード入力手段は、
入力する前記検索キーワードが複数の検索単語からなる検索合成語または検索文であるときに、前記検索キーワードを文字数順に切り出しながら、順次前記単語グループ記録手段の前記単語と対応付けるため前記検索単語を切り出す検索単語切り出し手段を有し、
前記切り出された前記検索単語単語情報を表示する表示手段と、
前記表示手段にて表示された前記検索単語を複数選択する選択手段と
を備え、
前記キーワード抽出手段は、前記選択手段にて選択された複数の検索単語を有する文書を指定する
ことを特徴とする付記項9に記載の文書検索装置。
【0293】
(付記項23) 前記比較手段は、前記単語指定手段により指定された単語の前記文書中の位置をカウントする文字位置カウンタを有する
ことを特徴とする付記項9に記載の文書検索装置。
【0294】
(付記項24) 前記比較手段は、前記単語指定手段により指定された単語の前記文書中の位置をカウントする文字位置カウンタを有し、
前記キーワード抽出手段は、前記複数の検索単語の前記カウントされた位置よりキーワードの連結性を判断する連結性判断部を有する
ことを特徴とする付記項21または22に記載の文書検索装置。
【0295】
【発明の効果】
以上説明したように本発明によれば、比較ステップで単語指定ステップにより指定された単語と、文字切り出しステップにより切り出された文字列とを比較し、キーワード抽出ステップで比較ステップの比較により単語と文字列とが一致した場合に、文書と対応づけて文字列をキーワードとして抽出するという簡単なアルゴリズムで文書の登録及び検索処理をしているので、高速に文書を登録及び検索することができるという効果がある。
【図面の簡単な説明】
【図1】本発明の第1実施例に係る文書登録/検索システムの構成を示す構成図
【図2】図1の登録/検索制御部の構成を示す構成図
【図3】図1の文字数別単語辞書ファイル記録部に記録される文字数別単語辞書ファイルの構成を示す構成図
【図4】図1の文書登録/検索システムによる検索単語の登録処理の流れを示す第1のフローチャート
【図5】図1の文書登録/検索システムによる検索単語の登録処理の流れを示す第2のフローチャート
【図6】図4の第1のフローチャートで読み込まれる文書の一例を示す図
【図7】図6の文書をメモリ上に展開した文字列を示す図
【図8】図4及び図5に示したフローチャートで生成される検索単語ファイル記録部に記録される検索単語ファイルの構成を示す構成図
【図9】図8の検索単語ファイルによる文書の検索処理の流れを示すフローチャート
【図10】図9の検索処理の具体例を説明する説明図
【図11】図9の検索処理により得られた該当文書ファイルの構成を示す構成図
【図12】図11の該当文書ファイルに基づく検索結果表示部の表示例を示す図
【図13】本発明の第2実施例に係る検索単語ファイル記録部に記憶される検索単語ファイルとビットマップファイルの構成を示す構成図
【図14】図13の検索単語ファイルとビットマップファイルを生成し検索単語を登録する処理の流れを示すフローチャート
【図15】図13の検索単語ファイルとビットマップファイルを用いた文書の検索処理の流れを示すフローチャート
【図16】図13のビットマップファイルの第1の変形例を示す図
【図17】図13のビットマップファイルの第2の変形例を示す図
【図18】図14の登録処理に用いられる文字数別単語辞書ファイルの変形例の構成を示す構成図
【図19】図18の変形例の文字数別単語辞書ファイルにより生成される検索単語ファイルの構成を示す構成図
【図20】図18の変形例の文字数別単語辞書ファイルにより生成されるビットマップファイルの構成を示す構成図
【図21】図13の検索単語ファイルの変形例の構成を示す構成図
【図22】本発明の第3実施例に係る文書検索/登録システムの構成を示す構成図
【図23】図22の頭文字別辞書ファイル記録部に記録される頭文字別辞書ファイルの構成を示す構成図
【図24】図22の文書検索/登録システムによる検索単語の登録処理の流れを示す第1のフローチャート
【図25】図22の文書検索/登録システムによる検索単語の登録処理の流れを示す第2のフローチャート
【図26】図24及び図25による処理の具体例を説明する説明図
【図27】図26における処理により得られたビットマップファイルの構成を示す構成図
【図28】図22の文書検索/登録システムによる文書の検索処理の流れを示す第1のフローチャート
【図29】図22の文書検索/登録システムによる文書の検索処理の流れを示す第2のフローチャート
【図30】図28及び図29による処理の具体例を説明する説明図
【図31】図22の文書検索/登録システムによる検索自由文による検索が可能な検索処理の変形例を説明する図
【図32】本発明の第4実施例に係る頭1文字と最後尾1文字が同じ単語毎に細分化されたグループからなる頭文字別単語辞書の構成を示す構成図
【図33】図32の頭文字別単語辞書を用いた検索単語の登録処理の流れを示す第1のフローチャート
【図34】図33の第1のフローチャートに続く検索単語の登録処理の流れを示す第2のフローチャート
【図35】図33及び図34で登録された検索単語による文書の検索処理の流れを示す第1のフローチャート
【図36】図35の第1のフローチャートに続く文書の検索処理の流れを示す第2のフローチャート
【図37】本発明の第5実施例に係る文書登録/検索システムの構成を示す構成図
【図38】図37の文書登録/検索システムにおける入力検索単語による検索項目及び候補項目を取得する処理の流れを示すフローチャート
【図39】図38の検索項目と同じ文字数の辞書との比較処理の流れを示すフローチャート
【図40】図38の検索項目より1文字多い文字数の辞書との比較処理の流れを示すフローチャート
【図41】図38の検索項目より1文字少ない文字数の辞書との比較処理の流れを示すフローチャート
【符号の説明】
1…文書
2…フロッピディスク
3…文書読取部
4…文書ファイル記録部
5…文字数別単語辞書ファイル記録部
6…登録/検索制御部
7…検索単語ファイル記録部
8…検索単語入力部
9…検索結果記録部
10…検索結果表示部
21…メモリ
22…文字位置カウンタ
23…レジスタ
24…制御部
25…文字数カウンタ
26…単語カウンタ
27…比較部
28…残文字ファイル
29…辞書登録部
Claims (2)
- 所定の文書中の単語をキーワードとして登録する文書登録方法において、
前記所定の文書を構成する複数種の文字列から1つ以上の文字からなる文字列を切り出す文字切り出しステップと、
所定の規則に従った、いずれも文字数がN(N=1,2・・・N)である複数個の単語の集合体を一単語グループとし当該文字数毎にグループ分けされた複数の単語グループのうち、所定の文字数Nに対応する単語グループを指定する単語グループ指定ステップと、
前記単語グループ指定ステップにより指定された所定の単語グループにおける複数個の単語を順次指定する単語指定ステップと、
前記文字切り出しステップにより切り出された切出文字列を、前記単語指定ステップにより指定された指定単語と比較する比較ステップと、
前記比較ステップの比較により、前記指定単語と前記切出文字列とが一致した場合に、当該文書と対応づけて前記文字列を前記キーワードとして抽出するキーワード抽出ステップと、
を有し、
前記比較ステップにおいては、当該切出文字列が前記指定単語と一致するまで、当該切出文字列と前記単語グループ指定ステップにより指定された所定の単語グループにおける複数個の単語とを順次比較し、当該所定の単語グループ内において当該一致が見られない際は、前記単語グループ指定ステップにおいて新たに指定された所定の単語グループにおける複数個の単語とを、当該一致が見られるまで順次比較を試行する、
ことを特徴とする文書登録方法。 - 所定の文書中の単語をキーワードとして検索する文書検索方法において、
前記所定の文書を構成する複数種の文字列から1つ以上の文字からなる文字列を切り出す文字切り出しステップと、
所定の規則に従った、いずれも文字数がN(N=1,2・・・N)である複数個の単語の集合体を一単語グループとし当該文字数毎にグループ分けされた複数の単語グループのうち、所定の文字数Nに対応する単語グループを指定する単語グループ指定ステップと、
前記単語グループ指定ステップにより指定された所定の単語グループにおける複数個の単語を順次指定する単語指定ステップと、
前記文字切り出しステップにより切り出された切出文字列を、前記単語指定ステップにより指定された指定単語と比較する比較ステップと、
前記比較ステップの比較により、前記指定単語と前記切出文字列とが一致した場合に、当該文書と対応づけて前記文字列を前記キーワードとして抽出するキーワード抽出ステップと、
を有し、
前記比較ステップにおいては、当該切出文字列が前記指定単語と一致するまで、当該切出文字列と前記単語グループ指定ステップにより指定された所定の単語グループにおける複数個の単語とを順次比較し、当該所定の単語グループ内において当該一致が見られない際は、前記単語グループ指定ステップにおいて新たに指定された所定の単語グループにおける複数個の単語とを、当該一致が見られるまで順次比較を試行することを特徴とし、
さらに、
前記キーワード抽出ステップにより抽出されたキーワードを格納するキーワード格納ステップと、
検索キーワードを入力する検索キーワード入力ステップと、
前記キーワード格納ステップにて格納されたキーワードを所定の順序で読み出すキーワード読み出しステップと、
前記キーワード読み出しステップにて読み出されたキーワードを、前記検索キーワード入力ステップにて入力された検索キーワードと比較する検索キーワード比較ステップと、
前記検索キーワード比較ステップの比較結果に基づき、前記キーワード格納ステップにより格納された前記キーワードを読みだし、前記キーワードにより前記所定の文書を指定する文書指定ステップと、
を有することを特徴とする文書検索方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP04446995A JP3548263B2 (ja) | 1995-03-03 | 1995-03-03 | 文書登録方法および文書検索方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP04446995A JP3548263B2 (ja) | 1995-03-03 | 1995-03-03 | 文書登録方法および文書検索方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH08241324A JPH08241324A (ja) | 1996-09-17 |
JP3548263B2 true JP3548263B2 (ja) | 2004-07-28 |
Family
ID=12692375
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP04446995A Expired - Fee Related JP3548263B2 (ja) | 1995-03-03 | 1995-03-03 | 文書登録方法および文書検索方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3548263B2 (ja) |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0827804B2 (ja) * | 1989-10-20 | 1996-03-21 | 日本電信電話株式会社 | 日本語辞書データ管理方式 |
-
1995
- 1995-03-03 JP JP04446995A patent/JP3548263B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH08241324A (ja) | 1996-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2726568B2 (ja) | 文字認識方法及び装置 | |
US5745745A (en) | Text search method and apparatus for structured documents | |
JP3160201B2 (ja) | 情報検索方法、情報検索装置 | |
US20040024778A1 (en) | System for indexing textual and non-textual files | |
US20010022792A1 (en) | Data compression method, data retrieval method, data retrieval apparatus, recording medium, and data packet signal | |
US20060045340A1 (en) | Character recognition apparatus and character recognition method | |
US5845305A (en) | Index creating apparatus | |
JP2008077454A (ja) | タイトル抽出装置、画像読取装置、タイトル抽出方法、及びタイトル抽出プログラム | |
US8996571B2 (en) | Text search apparatus and text search method | |
JP2693914B2 (ja) | 検索システム | |
CN114297143A (zh) | 一种搜索文件的方法、显示文件的方法、装置及移动终端 | |
JP3548263B2 (ja) | 文書登録方法および文書検索方法 | |
KR20080082985A (ko) | 데이터 파일 조작 방법 및 장치 | |
JP3253657B2 (ja) | 文書検索方法 | |
JP2005115457A (ja) | 文書ファイル検索方法 | |
JP5971069B2 (ja) | 情報処理装置、タイトル抽出方法及びプログラム | |
JP4549839B2 (ja) | 検索装置および方法 | |
JP2005044103A (ja) | 文書作成装置、文書作成方法およびプログラム | |
WO2023286340A1 (ja) | 情報処理装置および情報処理方法 | |
JPH1115826A (ja) | 文書解析装置及び方法 | |
JPH05158984A (ja) | 文字列抽出装置 | |
JP3241854B2 (ja) | 単語スペル自動補正装置 | |
JP5083612B2 (ja) | 検索装置 | |
JP5370079B2 (ja) | 文字列検索装置、プログラム、及び文字列検索方法 | |
JPH06215038A (ja) | データベース検索装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040106 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040308 |
|
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: 20040406 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040416 |
|
LAPS | Cancellation because of no payment of annual fees |