JP5376163B2 - 文書管理・検索システムおよび文書の管理・検索方法 - Google Patents
文書管理・検索システムおよび文書の管理・検索方法 Download PDFInfo
- Publication number
- JP5376163B2 JP5376163B2 JP2009541163A JP2009541163A JP5376163B2 JP 5376163 B2 JP5376163 B2 JP 5376163B2 JP 2009541163 A JP2009541163 A JP 2009541163A JP 2009541163 A JP2009541163 A JP 2009541163A JP 5376163 B2 JP5376163 B2 JP 5376163B2
- Authority
- JP
- Japan
- Prior art keywords
- tag
- document
- word
- index
- key
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
- G06F16/313—Selection or weighting of terms for indexing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
- G06F16/334—Query execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/80—Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
- G06F16/81—Indexing, e.g. XML tags; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/80—Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
- G06F16/83—Querying
- G06F16/835—Query processing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
このようなタグを付加した文章に対して文書管理および検索を行う文書管理・検索システムには、文書中の部分文字列に対してタグを付加あるいは削除する機能と、タグを用いたフレーズによる文書の検索する機能とが備えられる。タグを用いたフレーズによる文書の検索とは、タグ名や文字列を含む連続した文字列を入力とし、そのフレーズを含む文書集合を出力する機能を意味する。例えば、タグを用いたフレーズとして「[企業名]の[人名]」が挙げられる。なお、この構文では「[」と「]」で囲まれた文字列をタグ名として捉える。このとき、このフレーズを検索クエリとして捉えると、「企業名」というタグが付加された任意の語、「の」という語、「人名」というタグが付加された任意の語が連続して登場する文書を返却せよ、という意味になる。
このようなタグを用いた文書の管理・検索を実現する方法として、タグ付きの文書をXML(ExtensibleMarkup Language)などの階層的な構造の記述形式で表現した上で、階層的な構造文書の検索装置XMLDB(XMLData Base)を利用する方法が知られている(例えば特開2005−18811号公報参照、以下特許文献1と記す)。
XMLの一例を図3ないし図5を参照して説明する。図3はタグを付加された文書をXMLにより表現した例を示し、図4は同文書の一部をタグの包含関係を元に木構造として表現したもの、図5は階層的な情報を管理するための表を示す。
図4において、楕円のノードはタグを、長方形の葉ノードはテキストを意味し、それらの間のエッジは、それらのタグもしくはテキストの間に包含関係が存在することを意味している。さらに、図4では、各ノードの下にパス階層と呼ばれる情報を記述している。パス階層とは、各ノードの文書中での位置を表す情報である。パス階層はノードの位置を示す数字を区切り記号(「.」)と共に記述したものである。例えば、図4の「人名」ノードには「1.1.3」というパス階層が付加されているが、これはルートから見て「1番目のノード(「文書」ノード)の下の1番目のノード(「本文」ノード)の下の3番目のノード」という意味を持つ。
これらの階層的な情報は、図5に示したような表で管理される。ただし、この表は論理的な関係を示すものであり、実際には複数の表で表現されることが多い。図5に示した表では、文書集合内のノードに対して、ノードID、文書番号、テキスト、タグ名、パス階層の情報を管理している。ノードIDは、文書集合内の全ノードに対してユニークな識別子である。文書番号とは、そのノードが含まれる文書を示すIDである。テキストとは、葉ノードに含まれる文字列である。ただし、葉ノードでないノードに対しては、「NULL」が入力されるものとする。タグ名とは、各ノードのタグ名である。ただし、葉ノードに対しては「#text」が入力されるものとする。パス階層とは各ノードのパス階層を意味する。
このような情報を検索する方法について、特許文献1に開示された検索装置の動作を例に説明する。
例えばクエリとして「[企業名]の[人名]」というフレーズが与えられた場合、この検索装置はまず、クエリを複数の検索条件に分解する。このクエリの場合には、A:企業名というタグがあること、B:「の」という語が含まれること、C:人名というタグがあること、の3つに分解される。次にこの検索装置は、各条件を元にそれぞれ図5に示した表を参照し、タグ名が「企業名」であるノードのリスト(Aリストとする)と、テキストが「の」であるノードのリスト(Bリストとする)、タグ名が「人名」であるノードのリスト(Cリストとする)を得る。次にこの検索装置は、Aリスト、Bリスト、Cリスト内のノードを比較し、文書番号が等しいノードの組み合わせを取り出し、Aリスト内の「企業名」ノード、Bリスト内の「の」ノード、Cリスト内の「人名」ノードの位置関係がクエリと同じ順序で連続しているものを取り出す。この位置関係の判定はパス階層を比較することで行われる。このクエリの場合、「企業名」ノードと「の」ノードと「人名」ノードは兄弟ノードであり、この検索装置は、次の三つの条件を満たすノードから、検索結果を作成する。
条件1:「企業名」ノードのパス階層と、「の」ノードのパス階層と「人名」ノードのパス階層が、末尾の数以外の部分で一致し;
条件2:「の」ノードのパス階層の末尾の数=「企業名」ノードのパス階層の末尾の数+1であり;
条件3:「人名」ノードのパス階層の末尾の数=「の」ノードのパス階層の末尾の数+1である。
しかし、この方法には二つの問題がある。まず、第一の問題は、タグを追加した場合にパス階層の更新が必要であり、処理に時間がかかるということである。図6に、タグの追加によるパス階層の変更の例を示す。図6では、文書に人名というタグを追加する例について、追加前の文書構造を左側に、追加後の文書構造とそのパス階層の更新範囲を右側に示す。右側の更新範囲では、点線で示される範囲のノードのパス階層を更新する必要があることを示している。このように、パス階層はノードの位置を文書全体の階層構造を用いて表現しているため、文書中の一部が変更になった場合でも大幅に変更が必要となる。
第二の問題は、一般的な語句や頻度の高いタグ名のみから成るフレーズを検索クエリとした場合に、検索に時間がかかるということである。これは、一般的な語句や頻度の高いタグ名で検索した場合、個々の条件でノードを検索する際に大量のノードが発見されるため、大量のノードに対して文書番号と位置関係を調べる必要があり、検索速度が低下するという問題である。例えば、「[企業名]の[人名]」というクエリの場合、クエリは、企業名というタグがあること、「の」という語が含まれること、人名というタグがあること、に分解され、それぞれの条件に合うノードのリストが取り出される。しかし、それぞれの条件は一般的過ぎるため大量のノードが発見され、位置関係を調べるために大きな時間が必要になる。
このように、XMLDBを用いた文書管理・検索システムは文書の階層構造までをインデックス化するために、タグの更新(追加や削除)や、検索に時間がかかってしまう。そこで、タグを用いたフレーズ検索を実現する別の方法として、階層構造をインデックス化せず、全文検索インデックスで利用される転置インデックスを用いることが考えられる。
図7は転置インデックスの例を示す。図7において(a)に示されるデータ構造では、ある単語をキーとして入力することで、その単語を含む文書の数(頻度)と、その単語を含む文書の文書番号と、その文書内でのその単語の登場位置(登場位置、文書前方からの文字数で表現される)のリスト(以下、文書リストと呼ぶ)を得ることができる。転置インデックスを用いてタグによるフレーズ検索を実現するには、(a)で示した通常の転置インデックスの他に、(b)に示すタグの転置インデックスを用いる。(b)は、単語の場合と同様、あるタグ名のタグに関して、そのタグを含む文書の数(頻度)と、そのタグを含む文書番号と、その文書内でのタグの登場位置を示す情報(開始位置と終了位置、文書前方からの文字数で表現される)のリスト(以下、タグ文書リストと呼ぶ)を得ることができる。
このようなインデックスを用いることにより、タグを付加・削除する際は、タグの転置インデックスの該当部分のみを追加・削除することで、タグの更新を行うことができる。
しかし、この方法を用いた場合でも、一般的な語句や頻度の高いタグ名のみから成るフレーズを検索クエリとした検索時には、その処理時間が問題となる。例えば、クエリとして「[企業名]の[人名]」というフレーズが与えられた場合、このインデックスを持つ検索システムは、特許文献1で示される装置と同様に、A:企業名というタグがあること、B:「の」という語が含まれること、C:人名というタグがあること、に分解し、各転置インデックスを参照する。しかし、XMLDBの場合と同様、それぞれの条件は一般的過ぎるため、個々の条件で非常に長い文書リストが発見され、位置関係を調べるのに時間がかかる。
また、一般的な語句から成る検索クエリに対し、文書リストの長さを削減しフレーズ検索を高速化する手法として、Nextwordインデックスと呼ばれる手法がある(H.E.Williams,J.Zobel and D.Bahle,″Fast Phrase Querying with Combined Indexes″,ACM Transactions on Information Systems,22(4),pp.573−594,2004を参照、以下非特許文献1と記す)。Nextwordインデックスは、高い頻度を持つ一般的な語の文書リストを、その次(横書きを前提とし、これを「右」という)に登場する単語を元に分割したデータ構造を持つ。
図8はNextwordインデックスのデータ構造例を示す。Nextwordインデックスでは、ある単語をキーとし、その単語の右に登場した単語(Nextword)の集合を記憶し、さらに、キーとなった単語と一つのNextwordとの組から、その2つの語が隣接して登場した文書集合に対する文書リストを参照することができる。
図9はインデックスの一例を示す。この例では、「の」という単語のNextwordとして「山田」と「会社」が登録されており、さらにそれぞれに対して「の山田」を含む文書の文書リストと、「の会社」含む文書の文書リストが登録されていることを意味する。以下の説明では、このように2つの単語(あるいは条件)からなるキーを「A→B」(例えば「の→山田」など)と表現し、Aを1次キー、Bを2次キーと呼ぶこととする。
非特許文献1に開示された検索システムは、高い頻度の単語に対してこのNextwordインデックスを利用することで、検索速度を向上させている。例えば、検索時にクエリとして「abc産業の山田」というフレーズが入力され、「abc産業」が低い頻度の語、「の」が高い頻度の語であると仮定すると、この検索システムは次のように検索を行う。まず、低い頻度の語に対して通常の転置インデックスを参照し、「abc産業」に対応する文書リストを得る。次に、高い頻度の語に対しては、Nextwordインデックスを参照し、「の→山田」という参照から文書リストを得る。さらに、これらの二つの文書リストを比較し、同じ文書で、かつ、登場位置がクエリと同じである文書の集合を出力する。このように、Nextwordインデックスによると、2つの語の隣接関係をキーとして文書リストを読み込むことができるため、検索速度を向上させることができる。
しかし、この手法はあくまで単純なフレーズ検索のために用いられるものであり、タグを付加された文書を対象とした場合、タグの更新処理に時間がかかるという問題がある。
図10はNextwordインデックスを用いた検索システムにおいてタグの更新処理に時間がかかることを説明する図である。ここでは、「abc産業の山田」というフレーズについて、タグを追加・削除する際に更新が必要な範囲を示す。
図10において(a)に示すように、「abc産業の山田」という文字列に対して、abc産業に[名詞]、[企業名]というタグが、「の」に対して[助詞]というタグが、山田に対して[人名]というタグが付加されている。(a)内の8本の点線の矢印は、それぞれNextwordインデックス内に作成される隣接関係のキーを意味する。なお、図10内の「abc産業」は低頻度とし、通常の転置インデックスに格納されるものとしている。
このとき、このうち「の」という語に[所属]というタグを追加することを考える。この場合、新たに(b)内の実線の矢印の関係が発生するため、「[名詞]→[所属]」というキー、「[企業名]→[所属]」というキー、「[所属]→山田」というキー、「[所属]→[名詞]」というキーに対応する部分を更新せねばならない。
また、「の」に付加された[助詞]というタグを削除することを考える。この場合、同様に(c)内の実線の矢印の関係を削除しなければならない。つまり「[名詞]→[助詞]」というキー、「[企業名]→[助詞]」というキー、「[助詞]→山田」というキー、「[助詞]→[固有名詞]」というキーに対応するについて文書リストを参照し、該当部分を修正する必要がある。
このように、Nextwordインデックスはタグを付加することを想定しておらず、単純にタグ付き文書に適用すると、更新する箇所が多く、タグの更新に時間がかかるという問題がある。なお、これは2次キーにタグを用いると、あるタグに関する参照が分散することが原因となっている。
非特許文献1に記載の検索システムでは、二つの語の隣接関係を元に読み込む文書リストの量を削減することができるが、タグの付加された文書を考慮しておらず、タグの付加された文書では単語やタグ間の隣接関係が複雑するため、タグの更新に時間がかかっていた。
本発明は、このような課題を解決し、タグを含むフレーズの検索において、一般的な語句と頻度の高いタグとからなるクエリに対する効率の良い検索と、タグの効率良い更新と、を両立した文書管理・検索システムおよび文書の管理・検索方法を提供することを目的とする。
この構成において、任意の文字列をキーとし、その文字列に付加されている可能性のあるタグ名の集合を高速に参照可能とする高速タグ値判定部を備え、タグ更新部は、タグを付加する際に高速タグ値判定部内のデータを更新する手段を含み、文書検索部は、タグが連続するフレーズが検索クエリとして入力された場合に、高速タグ値判定部とタグLRインデックス記憶部とを参照して、特定のタグ名を含む可能性のある単語に絞って問い合わせを実行する手段を含むことが望ましい。
高頻度語とタグ名とをキーとし、その単語およびタグをそれぞれ含む文書の集合を表すビット列を記憶するビット列記憶部を備え、文書インデックス作成部は、文書からインデックスを作成する際にビット列記憶部内のビット列を更新する手段を含み、タグ更新部は、タグを更新する際に追加・削除されたタグを元にビット列記憶部内のビット列を更新する手段を含み、文書検索部は、検索時に予めクエリに含まれる高頻度語およびタグ名を元にビット列記憶部を参照し、クエリ内の高頻度語およびタグ名がすべて含まれる文書番号の集合を得て、その文書番号を元に文書集合を絞り込んだ上で文書集合内にフレーズの登場位置を読み込む手段を含むこともできる。
タグの集合に対して、各タグ名をキーとし、文書集合内のタグの登場位置と左右の単語を記憶するタグNLRインデックス記憶部と、このタグNLRインデックス記憶部内のインデックスをタグLRインデックス記憶部内のインデックスに変換する変換手段と、タグの登場頻度に基づきインデックスの記憶方法を変更する管理手段とを備えることもできる。
本発明の文書の管理・検索方法は、一つ以上の文書が与えられた場合に、その文書に含まれる単語の集合に対し、各単語をキーとして、その登場位置を記憶する文書インデックス作成ステップと、特定の文書中の部分文字列に対しタグを追加・削除するクエリが与えられた場合に、そのタグ名をキーとしタグの登場位置を記憶するタグ更新ステップと、このタグ更新ステップ内において、入力されたタグに対し、タグの右と左に登場した単語を記憶し、さらに各タグとその右に登場する語の組み合わせ、あるいは、各タグとその左に登場する語の組み合わせをキーとして文書集合内の各タグの登場位置を記憶するタグLR記憶ステップと、タグと単語から成るフレーズが検索クエリとして与えられた場合に、その検索クエリを解釈した上でフレーズ内の隣接する単語とタグの左右の関係を利用して複数のキーを作成し、これらのキーを元に文書インデックス作成ステップにおいて記憶されたキーを元に単語の登場位置、タグ更新ステップにおいて記憶されたキーを元に各タグの登場位置をそれぞれ参照し、その上でそれらを統合することでそのフレーズを含む文書の識別子の一覧を返却する文書検索ステップとを含むことを特徴とする。
任意の文字列をキーとし、その文字列に付加されている可能性のあるタグ名の集合を高速に参照可能とする高速タグ値判定ステップを含み、タグ更新ステップは、タグを付加する際にタグ名と文字列の関係を表すデータを更新するステップを含み、文書検索ステップは、タグ名が連続するフレーズを検索クエリが入力された場合に、高速タグ値判定ステップを利用し、特定のタグ名を含む可能性のある単語のみに絞ってタグの登場位置を読み込むステップを含むことが望ましい。
文書インデックスステップにおいて高頻度語とタグ名とをキーとし、その単語およびタグをそれぞれ含む文書の集合を表すビット列を記憶するビット列記憶ステップを含み、タグ更新ステップは、タグを更新する際に追加・削除されたタグを元にビット列記憶部内のビット列を更新するステップを含み、文書検索ステップは、検索クエリに含まれる高頻度語とタグ名とをキーとしてビット列記憶ステップで記憶されたビット列を参照し、クエリ内の高頻度語およびタグ名がすべて含まれる文書の集合を表すデータを得、そのデータを元に文書集合を絞り込んだ上で単語とタグの登場位置を読み込むステップを含むことができる。
タグ更新ステップは、タグの集合に対して、各タグ名をキーとし、文書集合内のタグの登場位置と左右の単語を記憶するタグNLRインデックスステップを含み、タグ更新ステップおよび文書検索ステップは、タグをキーとしその登場位置を更新あるいは検索する際に、そのタグがタグNLRインデックスステップで記憶されているかタグLR更新ステップで記憶されているかによって、参照先を選択するステップと、タグに関する頻度を元に、タグNLRインデックスステップで作成されたデータを削除し、タグLRインデックスステップで作成するインデックス変換ステップとを含むこともできる。
本発明はコンピュータ・プログラムとして実施することもできる。すなわち、一つ以上の文書が与えられた場合に、その文書に含まれる単語の集合に対し、各単語をキーとして、その登場位置を記憶する文書インデックス作成処理と、特定の文書中の部分文字列に対しタグを追加・削除するクエリが与えられた場合に、そのタグ名をキーとしタグの登場位置を記憶するタグ更新処理と、このタグ更新処理内において、入力されたタグに対し、タグの右と左に登場した単語を記憶し、さらに各タグとその右に登場する語の組み合わせ、あるいは、各タグとその左に登場する語の組み合わせをキーとして文書集合内の各タグの登場位置を記憶するタグLR記憶処理と、タグと単語から成るフレーズが検索クエリとして与えられた場合に、その検索クエリを解釈した上でフレーズ内の隣接する単語とタグの左右の関係を利用して複数のキーを作成し、これらのキーを元に文書インデックス作成処理において記憶されたキーを元に単語の登場位置、タグ更新処理において記憶されたキーを元に各タグの登場位置をそれぞれ参照し、その上でそれらを統合することでそのフレーズを含む文書の識別子の一覧を返却する文書検索処理とをコンピュータに実行させることを特徴とする。
任意の文字列をキーとし、その文字列に付加されている可能性のあるタグ名の集合を高速に参照可能とする高速タグ値判定処理と、タグ更新処理においてタグを付加する際にタグ名と文字列の関係を表すデータを更新する処理と、文書検索処理においてタグ名が連続するフレーズを検索クエリが入力された場合に、高速タグ値判定処理を利用し、特定のタグ名を含む可能性のある単語のみに絞ってタグの登場位置を読み込む処理とをさらにコンピュータに実行させることが望ましい。
文書インデックス処理において高頻度語およびタグ名をキーとし、その単語およびタグを含む文書の集合を表すビット列を記憶するビット列記憶処理と、タグ更新処理において、タグを更新する際に追加・削除されたタグを元にビット列記憶処理で記憶されたビット列を更新する処理と、文書検索処理において、検索クエリに含まれる高頻度語およびタグ名をキーとしてビット列記憶処理で記憶されたビット列を参照し、クエリ内の高頻度語およびタグ名がすべて含まれる文書の集合を表すデータを得、そのデータを元に文書集合を絞り込んだ上で単語とタグの登場位置を読み込む処理とをさらにコンピュータに実行させることもできる。
タグ更新処理内において、タグの集合に対して、各タグ名をキーとし、文書集合内のタグの登場位置と左右の単語を記憶するタグNLRインデックス処理をコンピュータに実行させ、タグ更新ステップ内および文書検索ステップ内において、タグをキーとしその登場位置を更新あるいは検索する際に、そのタグがタグNLRインデックス処理で記憶されているか、タグLR更新処理で記憶されているかによって、参照先を選択する処理と、タグに関する頻度を元に、タグNLRインデックス処理で作成されたデータを削除し、タグLRインデックス処理で作成するインデックス変換処理とをコンピュータに実行させることもできる。
図2はタグ付けされた文書の一例を示す図である。
図3はタグが付加された文書をXMLで表現した例を示す図である。
図4はXMLDBで用いられるパス階層を示す図である。
図5はXMLDBで用いられるインデックスの論理的構造を示す図である。
図6はXMLDBにおいてタグを追加する際に更新が必要な範囲を示す図である。
図7は転置インデックスの一例を示す図である。
図8はNextwordインデックスのデータ構造例を示す図である。
図9はNextwordインデックスの一例を示す図である。
図10はNextwordインデックスを用いた検索システムにおいてタグを追加・削除する際に更新が必要な範囲を示す図である。
図11は本発明の第一の実施形態で想定する転置インデックスの例を示す図である。
図12はタグLRインデックス記憶部内のデータの一例を示す図である。
図13は本発明の望ましい第二の実施形態を示すブロック構成図である。
図14は高速タグ値判定部の構成例を示すブロック図である。
図15はタグ値テーブルの一例を示す図である。
図16は問い合わせタスクのリストの一例を示す図である。
図17は文書リスト列の一例を示す図である。
図18は検索プロセスの処理のフローチャートである。
図19はキー列の一例を示す図である。
図20は問い合わせタスクのリストを作成する処理のフローチャートである。
図21は問い合わせタスクの実行処理のフローチャートである。
図22は文書リストの統合処理のフローチャートである。
図23は位置関係のチェック処理を説明する図であり、キーごとの問い合わせにおける4つのケースを示す図である。
図24は位置関係のチェック処理のフローチャートである。
図25はタグの更新プロセスを説明する図である。
図26は単語と文書番号と登場位置のリストの一例を示す図である。
図27はキー列の一例を示す図である。
図28は本発明の本発明の望ましい第三の実施形態を示すブロック構成図である。
図29はビット列記憶部に記憶されるデータの一例を示す図である。
図30は本発明の望ましい第四の実施形態を示すブロック構成図である。
図31はタグLR文書リストの一例を示す図である。
図32は管理テーブルの一例を示す図である。
図33はインデックス種がNLRである場合の処理のフローチャートである。
図34はインデックスの最適化プロセスのフローチャートである。
(第一の実施形態)
図1は本発明の第一の望ましい実施形態を示すブロック構成図であり、文書管理・検索システムの構成例を示す。この文書管理・検索システムは、単語の集合に対して、文書集合内での各単語の出現位置を記憶する単語インデックス記憶部13と、単語に付加されてその単語の属性を表すタグの集合に対して、各タグの右と左に登場した単語の集合を記憶し、さらに各タグとその右に登場する語の組み合わせ、あるいは、各タグとその左に登場する語の組み合わせをキーとして文書集合内の各タグの登場位置を記憶するタグLRインデックス記憶部14と、検索クエリとしてタグと単語から成るフレーズを入力とし、その検索クエリを解釈した上でフレーズ内の隣接する単語とタグの左右の関係を利用してタグLRインデックス記憶部14を参照し、そのフレーズを含む文書の識別子の一覧を返却する文書検索部15と、特定の文書中の部分文字列に対してタグを追加・削除するクエリを解釈し、タグLRインデックス記憶部14の記憶内容を更新するタグ更新部12と、一つ以上の文書が与えられた場合に、単語インデックス記憶部13内のインデックスを更新する文書インデックス作成部11とを備える。
単語インデックス記憶部13は、単語に対する転置インデックス(Nとする)を記憶する。転置インデックスとは、単語をキーとし、文書集合内でその単語が登場する文書の文書番号とその文書内での登場位置の集合を参照できるデータを意味する。
図11は本実施形例で想定する転置インデックスの例を示す。この例では、「山田」という単語をキーとし、「山田」という単語が文書集合において2回登場し、文書番号が333の文書において1回登場し、その登場位置は前方から7文字目であること、また、文書番号が346の文書において2回登場し、その登場位置は前方から4文字目と20文字目であること、を示している。
単語インデックス記憶部13は、文書インデックス作成部11から、単語と、その単語を含む文書の文書番号と、その文書中での登場位置と、から成るデータの集合を受け取る。単語インデックス記憶部13は、このデータを各単語をキーとした文書リストとして記憶する。さらに単語インデックス記憶部13は、問い合わせ実行手段152から、少なくとも一つの単語から成るクエリを受け取ると、その単語の文書リストを返却する。
タグLRインデックス記憶部14は、タグとその左右の語に対する転置インデックスとして、タグLインデックス(TLとする)とタグRインデックス(TRとする)から成るタグLRインデックスを記憶する。タグLインデックスはあるタグに対して、そのタグが登場した際にその左に登場した単語の集合と、そのタグとその左に登場した単語をキーとするタグ文書リストを記憶する。同様に、タグRインデックスはあるタグに対して、そのタグが登場した際に右側に存在した単語の集合と、そのタグとその右に登場した単語をキーとするタグ文書リストを記憶する。これにより、あるタグとその右/左に単語が存在するという条件でタグ文書リストを取り出すことができる。
図12はタグLRインデックスの例を示す。この例では、[人名]というタグのタグLインデックス内に「の」と「最近」という左の語のリストを、タグRインデックス内に「社長」と「氏」という右の語のリスト持つ。タグLインデックス・タグRインデックス内の各データはタグ文書リストへの参照(ポインタ)として表現されており、例えば「[人名]→の」に対応するタグ文書リストはポインタ「#I256」の位置にあり、このパターンは全文書中19859回発生しており、文書番号が333の文書において[人名]タグが前方から7文字目から10文字目に付加されていることを示している。
タグLRインデックス記憶部14は、タグ更新部12から命令種、タグ名、文書番号、開始位置、終了位置、左の単語、右の単語を含むデータを受け取り、内部のタグLRインデックスを更新する。命令種とは、少なくとも追加/削除の2種類のどちらかを識別する情報である。タグ名とは、追加/削除されるタグの名前を示す。文書番号とは、タグを追加/削除する対象の文書の文書番号である。開始位置と終了位置は、タグを追加/削除する文書内での位置である。左の単語は、開始位置の左に登場する単語である。右の単語は、開始位置の右に登場する単語である。
また、タグLRインデックス記憶部14は、文書検索部15から、参照先と参照キーとからなる問い合わせを受ける。なお、このうち参照先とはタグLインデックスかタグRインデックスかのどちらかを示すデータである。参照キーは「タグ名」か「タグ名→単語」で指定される。タグLRインデックス記憶部14は、参照先と参照キーを入力として問い合わせを受け、参照キーが「タグ名」である場合、タグ名を元に参照先のタグLインデックス/タグRインデックス内を参照し、該当する左の語のリスト/右の語のリストを返却する。また、参照キーが「タグ名→単語」である場合、「タグ名→単語」というキーを元に参照先のタグLインデックス/タグRインデックス内を参照し、該当するタグ文書リストを返却する。
文書インデックス作成部11は外部のプログラムあるいはユーザによって実行され、一つ以上の文書の集合が与えられた場合に、文書内に含まれる全単語を取り出し各単語に対し、少なくともその単語と、その文書の文書番号と、単語がその文書の本文内先頭から何文字目に登場するかを表す登場位置と、を単語インデックス記憶部13に入力する。
タグ更新部12は外部のプログラムあるいはユーザによって実行され、タグの追加・削除に関する命令文を入力とし、その命令文に従って、タグLRインデックス記憶部14内のインデックスを更新する。タグの追加・削除に関する命令文とは、命令種、タグ名、文書番号、開始位置、終了位置、対象単語列、左の単語、右の単語、から成る情報である。
文書検索部15は外部のプログラムあるいはユーザによって実行され、一つ以上のタグあるいは単語からなるフレーズ(検索クエリ)を入力とする。文書検索部15はこの入力を元に、単語インデックス記憶部13と、タグLRインデックス記憶部14と、高速タグ値判定部16とに問い合わせを行い、少なくとも文書番号のリストを検索結果として出力する。
この実施形態では、文書の検索時に、検索クエリに含まれる隣接した単語とタグに対し、タグLRインデックス記憶部14内に記憶されたインデックスの双方向性を利用することでインデックスを参照でき、タグ名を2次キーに持たなくとも読み込む文書リストの量を削減できるため、高速に検索処理を行うことができる。また、タグの更新時に、タグLRインデックス記憶部14内の2箇所に更新を加えるのみであり、少量の更新でタグの追加・削除を高速に行うことができる。
(第二の実施形態)
図13は本発明の第二の望ましい実施形態を示すブロック構成図であり、文書管理・検索システムの構成例を示す。この文書管理・検索システムは、任意の文字列に付加されている可能性のあるタグ名のリストを持ち、文字列に付加される可能性のあるタグ名のリストを高速に参照可能とする高速タグ値判定部16を備えたことが第一の実施形態と異なる。また、図13には文書検索部15の詳細を示す。すなわち文書検索部15は、検索クエリを解釈し複数の条件に分解するクエリ解釈手段151と、クエリ解釈手段151によって解釈された複数の条件を元に単語インデックス記憶部13とタグLRインデックス記憶部14と高速タグ値判定部16に対して問い合わせを行う問い合わせ実行手段152と、問い合わせ実行手段152において得られた一つ以上の文書リスト/タグ文書リストをお互いに比較し、同じ文書番号を持ちかつ検索クエリと同じフレーズを持つ文書だけの文書リストに統合する文書リスト統合手段153と、を有する。
図14は高速タグ値判定部16の構成例を示すブロック図である。高速タグ値判定部16は、内部に、タグ値テーブル161と、更新手段162と、判定手段163とを備える。タグ値テーブル161は、タグとタグが付加される単語列との関係を記憶したテーブルである。更新手段162は、タグの更新部12によって呼び出され、タグ名と、対象単語列(タグ付けの対象となる一つ以上の単語)と、命令種(追加/削除のどちらか)を入力とし、タグ値テーブル161内の関係情報を更新する。判定手段163は、問い合わせ実行手段152によって呼び出され、ある単語列を入力とし、タグ値テーブル161を参照した上で、その単語列に付加されている可能性のあるタグ名のリストを高速に返す。
図15はタグ値テーブル161の一例を示す。タグ値テーブル161として、単語を2文字ごとに区切った文字列(2グラム)と、その2グラムに付加される可能性のあるタグ名のリスト(タグ名列)との間の関係を記憶したものを用いることができる。このタグ値テーブル161は、メモリ上のプログラムとして実装することができる。図15に示した例では、例えば「山田」が含まれる文字列には、[人名]タグか[地名]タグが付加される可能性があることを示している。なお、この例では、元々1文字の単語(「の」など)に関しては、1文字のままタグ値テーブル内に記憶するものとしている。
このようなタグ値テーブル161に対して更新手段162は、タグ更新部12によって入力された対象単語列を2グラムごとに区切り、各2グラムでタグ値テーブル161を参照し、対応するタグ名列を更新する。また、判定手段163は、問い合わせ実行手段152によって入力された文字列を2グラムごとに区切り、タグ値テーブル161を参照した上で、その文字列に付加されている可能性のあるタグ名のリストを返す。
文書検索部15内のクエリ解釈手段151、問い合わせ実行手段152および文書リスト統合手段153について説明する。
クエリ解釈手段151は、外部のプログラムあるいはユーザによって実行され、検索クエリを入力とし、問い合わせ実行手段152に問い合わせタスクのリストを出力する。問い合わせタスクとは、参照先と参照キー、位置番号から成るデータである。参照先とは、問い合わせ時に参照するインデックスを意味しており、単語インデックス記憶部13内の転置インデックス(N)か、タグLRインデックス記憶部14内のタグLインデックス(TL)か、タグRインデックス(TR)か、のどれかである。参照キーは、インデックス内から文書リストを取り出すためのキーであり、参照先がNである場合は一つの単語、参照先がTLかTRである場合は「[タグ名]→単語」あるいは「[タグ名]→[タグ名]」のような文字列で表現される1次キーと2次キーのセットである。なお、本発明では2次キーがタグ名となるインデックスを持たないため、単純に「[タグ名]→[タグ名]」をキーとしたタグ文書リストを取得することはできないが、この点はこの時点では考慮しない。また、位置番号とは、参照キーのクエリ中での位置を示しており、キー列内の位置番号から作成される。
図16は、問い合わせタスクのリストの一例として、「[企業名]の[人名]」というクエリを元に作成されたものを示す。この例では、位置番号が1であり参照先がTRすなわちタグRインデックスであり参照先が「[企業名]→の」である問い合わせタスクと、位置番号が3であり参照先がTLすなわちタグLインデックスであり参照先が「[人名]→の」である問い合わせタスクとの二つの問い合わせタスクが作成されている。
問い合わせ実行手段152は文書検索部15によって呼び出され、問い合わせタスクのリストを入力とする。問い合わせ実行手段152は、この問い合わせタスクのリストを元に、単語インデックス記憶部13と、高速タグ値判定部16と、タグLRインデックス記憶部14と、を参照し、文書リスト列を文書リスト統合手段153に出力する。
図17は文書リスト列の一例を示す。文書リスト列とは、単語インデックス記憶部13とタグLRインデックス記憶部14から得られた文書リスト・タグ文書リストの集合について、それぞれの文書リストと問い合わせタスクとを関連付ける情報である。図17に示した例では、各問い合わせタスクの位置番号と、参照キーと、問い合わせによって得られた文書リストとを関係づけている。
文書リスト統合手段153は文書検索部15によって呼び出され、文書リスト列を入力とし、それらを一つにまとめた文書リストを結果リストとして出力する。
次に、この実施形態における処理の流れを説明する。この実施形態おける処理は主に、検索プロセスと、タグの更新プロセスと、文書のインデックスプロセスの3つのプロセスを持つ。以下ではこれらを順に説明する。
図18は検索プロセスの処理の流れを示す。検索プロセスは、ユーザもしくは外部のプログラムが検索クエリを文書検索部15に入力することで開始する。
文書検索部15はまず、クエリ解釈手段151を利用し、入力された検索クエリからキー列を作成する(S11)。この処理は形態素解析やNグラムなど、何らかの辞書やルールを用いて行われる。例えば、検索クエリの構文として、タグは「[」と「]」で囲まれ、その内部にタグ名あるいは、「タグ名:タグが付加される文字列」が記述されるもの、タグ以外の部分は自然言語で記述されるもの、として定義すると、この処理は、次のように行われる。クエリ解釈手段151はまず、検索クエリに対して「[」と「]」で囲まれる部分を取り出し、タグ名、あるいはタグ名とタグが付加される文字列を取り出す。次に、クエリ解釈手段151は形態素解析を行い、入力されたフレーズを単語ごとに区切った上でキー列を作成する。キー列は単語キーの列とタグキーの列であり、単語キーとはフレーズ内の一つの単語を表す。タグキーはフレーズ内の一つのタグ名を表す。単語キーとタグキーはフレーズを単語・タグごとに区切った場合に各単語/タグが先頭から何番目に登場するかを表す位置番号と共に記憶される。
図19はキー列の一例を示す。ここでは、「[企業名:abc産業]の[人名]社長]」というフレーズを元に作成したキー列を示す。このクエリは、[企業名]タグが付加された「abc産業」という文字列、「の」という文字列、[人名]タグが付加された任意の文字列、「社長」という文字列、が連続して登場する文書を返せ、というクエリを意味し、図19では、位置1に「abc産業」という単語と[企業名]というタグが、位置2に「の」という単語が、位置3に[人名]というタグが、位置4に「社長」という単語が示される。またそれ以外の位置に記述されている「−」は、その位置に条件が無いことを意味している。
次にクエリ解釈手段151は、キー列を元に、問い合わせタスクのリスト(タスクリスト)を作成する(S12)。このステップS12について、本発明では、次の条件に基づいて問い合わせタスクを作成する任意の処理として定義する。
・[条件1]キー列内の各タグキーに対して、そのタグを1次キーとする問い合わせタスクを一つ以上作成すること。
・[条件2]キー列内の各単語キーに対して、その単語がキーに含まれる問い合わせタスクを一つ以上作成すること。
・[条件3]単語とタグが並んでいる場合は、タグLRインデックス記憶部14への問い合わせを優先的に選択して問い合わせタスクを作成すること。
図20は問い合わせタスクのリストを作成する処理(図18のステップS12)を実現するアルゴリズムの一例のフローチャートを示す。
クエリ解釈手段151はまず、キー列内の各タグキーの左右に単語がある場合に、タグLRインデックス記憶部14への問い合わせタスクを作成する(S121)。クエリ解釈手段151は、キー列を左から(位置1から)順番に調べ、タグキーの右に単語キーが存在しないか調べる。存在する場合には、参照先を「TR」とし、参照キーを「そのタグキーのタグ名→その右の単語」、位置を「そのタグキーの位置番号」をとして問い合わせタスクを作成し、タスクリストに追加する。タグキーの右に単語キーが存在しない場合には、タグキーの左に単語キーが存在しないか調べる。存在する場合には、参照先を「TL」とし、参照キーを「そのタグキーのタグ名→その左の単語」、位置を「そのタグキーの位置番号」をとして問い合わせタスクを作成し、タスクリストに追加する。
次にクエリ解釈手段151は、まだ問い合わせタスクが作成されていないタグキーに対して、タグを連結した問い合わせタスクを作成する(S122)。クエリ解釈手段151はキー列を左から(位置1から)順番に調べ、タグキーを1次キーとする問い合わせタスクがまだ作成されていない場合、そのタグキーの右にタグキーが存在しないか調べる。存在する場合には、参照先を「TR」とし、参照キーを「そのタグキーのタグ名→右のタグキーのタグ名」、位置を「そのタグキーの位置番号」をとして問い合わせタスクを作成し、タスクリストに追加する。タグキーの右に単語キーが存在しない場合には、タグキーの左に単語キーが存在しないか調べる。存在する場合は、参照先を「TL」とし、参照キーを「そのタグキーのタグ名→左のタグキーのタグ名」、位置を「そのタグキーの位置番号」をとして問い合わせタスクを作成し、タスクリストに追加する。
最後に、クエリ解釈手段151は、まだ問い合わせタスクが作成されていない単語キーに対して、問い合わせタスクを作成する(S123)。クエリ解釈手段151はキー列を左から(位置1から)順番に調べ、単語キーを1次キーあるいは2次キーとする問い合わせタスクがまだ作成されていない場合、参照先を「N」、参照キーを「その単語」、位置を「その単語の位置」をとして問い合わせタスクを作成し、タスクリストに追加する。
なお、図20のフローチャートで示されるアルゴリズムは右方向(Rインデックス)への参照を優先するアルゴリズムになっているが、左方向を優先したアルゴリズムも考えられる。また、上記の3つの条件を満たす上で左右どちらの参照でも良い場合に、両方の参照を元に文書リストの先頭の頻度を読み込み、少ない方を選択する、というアルゴリズムも考えられる。
次に、クエリ解釈手段151が作成した問い合わせタスクの集合を元に、問い合わせ実行手段152で各インデックスに問い合わせを行う(S13)。図21にこの処理を実現するアルゴリズムの一例のフローチャートを示す。この処理はステップS12で作成された問い合わせタスクそれぞれに対して行われる。
問い合わせタスクの参照先が「N」である場合、問い合わせ実行手段152はその問い合わせタスクの参照キーで単語インデックス記憶部13を調べ、該当する文書リストを読み込み、問い合わせタスクの参照キー、位置情報と共に保持する(S131)。
また、問い合わせタスクの参照先が「TL」もしくは「TR」である場合、問い合わせ実行手段152はその問い合わせタスクの参照キー内の2次キーが単語であるかタグであるかを調べる。単語である場合、参照先と参照キー「タグ名→単語」とをタグLRインデックス記憶部14に問い合わせ、該当するタグ文書リストを読み込む(S132)。問い合わせタスクの参照キー内の2次キーがタグである場合、問い合わせ実行手段152はタグLRインデックス記憶部14と高速タグ値判定部16を利用してタグ文書リストを読み込む(S133)。
ステップS133の処理をさらに詳細に説明する。問い合わせ実行手段152はまず、参照先と「1次キーのタグ名」とをタグLRインデックス記憶部14に問い合わせ、Lインデックス/Rインデックス内の左の語のリスト/右の語のリストを得る(S1331)。次に問い合わせ実行手段152は、右の語のリスト/左の語リスト内の各単語を高速タグ値判定部16に入力し、タグ名列を取得する。そしてタグ名列に2次キーのタグ名が含まれるかどうかを調べ、含まれない場合、その単語は読み込んだ右の語のリスト/左の語リストから削除する(S1332)。
次に問い合わせ実行手段152は、1次キーのタグ名と、右の語のリスト/左の語リスト内の各語を2次キーとしたものを参照キーとして利用してタグLRインデックス記憶部14に問い合わせを行い、得られたタグ文書リストの集合を足し合わせたものを一つのタグ文書リストとする。
ステップS13の処理においては、複数の問い合わせタスクを実行するが、その順番は任意で良い。さらに、ある問い合わせタスクの結果から文書番号のリストDLを保持しておき、それ以降の問い合わせタスクにおいて文書リスト/タグ文書リストを読み込む際に、DL内に文書番号が含まれない登場位置/開始位置と終了位置を読み込まないことで処理の高速化を計ることもできる。
ここでは高速タグ値判定部16を利用したアルゴリズムについて説明したが、このアルゴリズムを少し修正することで、第一の実施形態のように高速タグ値判定部16を設けない場合にも利用することができる。例えば、図21のフローによって示されるアルゴリズムにおいて、ステップS1332を行わず、ステップS1333において、1次キーのタグ名だけを条件としすべての右の語のリスト/左の語リストに対してタグ文書リストを読み込む、などが考えられる。また、予め一つのタグ名だけをキーとしたタグ文書リストを記憶する転置インデックスを作成しておき、ステップS133を、1次キーだけを用いてその転置インデックスを参照し、タグ文書リストを読み込む処理、に置き換えても良い。
次に、問い合わせ実行手段152によって得られたM本の文書リスト/タグ文書リストから成る文書リスト列を元に、文書リスト統合手段153で、文書番号がすべて等しくかつ単語・タグの登場位置がキー列と等しい文書の文書番号を取り出す(S14)。図22にこの処理を実現するアルゴリズムの一例のフローチャートを示す。なお、このアルゴリズムは、単語インデックス記憶部13内に記憶される文書リストと、タグLRインデックス記憶部14内に記憶されるタグ文書リストと、がそれぞれ文書番号と登場位置/開始位置を元にソートされていることを前提とする。
文書リスト統合手段153はまず、各文書リストに対応するM個の整数値のポインタを用意し、初期値をすべて1として作成する(S141)。次に文書リスト統合手段153は、各文書リスト/タグ文書リストからポインタ番目にある登場位置とその文書番号のセット/開始位置と終了位置と文書番号のセットを取り出す(S142)。次に文書リスト統合手段153は、ステップS142で得られたM個の文書番号がすべて等しいかどうか(S143)、また、それぞれの登場位置が、キー列の位置番号の隣接関係と正しいかどうか(S144)を調べ、それらの条件を満たす場合、その文書がヒットしたと判定し、文書番号を出力結果リストに追加する(S145)。そうでない場合、M個のポインタのうち、最小のものに1を足し(S146)、そのポインタが文書リストの末尾に達したかどうかを調べる(S147)。もし末尾に達している場合、処理を終了する(S148)。そうでない場合、ステップS142に戻る。
図23はステップS144のアルゴリズムを説明する図である。このアルゴリズムでは、キー列を左から順番に調べていき、各キーを1次キーとして得た文書中の登場位置/開始位置と、一つ左のキーから得た終了位置と比較し、隣接しているかどうかを調べていく。ただし、この評価の方法はi番目のキーに対してどのように問い合わせが行われたかに依存する。そこでまず、位置iのキーに対してその問い合わせ方を4つのケースに分類する。図23はこの4つのケースを示し、各ケースを表現するために、それぞれキー列の例とそのキー列において問い合わせに使用した1次キーを点線の楕円で、1次キーから2次キーへの参照を点線の矢印で表現している。
まず、ケースAはi番目のキーを1次キーとして使用した問い合わせが存在しないケースである。このケースは図で示すように単語キーが2次キーとして使用されたケースである。ケースBはi番目にタグキーのみが存在し、1次キーがタグである問い合わせが行われたケースである。よって、1次キーがタグである問い合わせ(この例では「B→A」)に対して位置のチェックを行う必要がある。ケースCはi番目に単語キーのみが存在し、単語キーを1次キーとして問い合わせが行われたケースである。よって、この単語キーのみを利用した問い合わせに対して位置のチェックを行う必要がある。ケースDはi番目に単語キーとタグキーの両方があり、それぞれを1次キーとした問い合わせが行われたケースである。よって、これらの問い合わせに対してそれぞれ位置関係をチェックする必要がある。そこで本アルゴリズムでは、これらのケースごとに位置のチェックを行っていくこととする。
図24はステップS144のアルゴリズムを説明するフローチャートである。
ステップS144において文書リスト統合手段153は、まず、二つの変数iを1にPを−1に初期化する(S14401)。なお、本アルゴリズムはキー列を左から順番に調べていく処理になっており、変数iは現在調べているキーのキー列内での位置を表す。また、変数Pは一つ左のキーから予測される位置i番目のキーの文書内での登場位置/開始位置を表す。
次に文書リスト統合手段153は、キー列i番目のキーに対してどのような問い合わせが行われたかを判定する(S14402)。この判定処理は、位置番号がiとなっている問い合わせタスクの参照キーにおいて1次キーを調べ、それがタグキーであるか単語キーであるかを調べることで行われる。ケースAの場合、位置チェックは行われず、Pが初期値(−1)で無ければ次の(i+1番目の)キーの位置チェックに備え、Pに単語キーの文字長を足す(S14403)。
ケースBの場合、i番目のタグキーに対する位置チェックが行われる(S14404)。タグキーに対する位置チェックとは、次の条件T1とT2が満たされるかどうかを判定する処理を指す。
条件T1:タグキーを1次キーとした問い合わせが複数ある場合に、それぞれの問い合わせで得られた開始位置同士と終了位置同士が一致していること。
条件T2:Pが−1である(タグキーが先頭である)、もしくは、Pがタグキーを1次キーとして得られた開始位置と等しい(左のキーで得られた登場位置と隣接している)こと。
これらが満たされる場合、一致しているとみなし、Pにタグキーを元に得られた終了位置+1を代入する(S14405)。そうでない場合、一致しないと判定し、S144の処理を終える。
ケースCの場合、i番目の単語キーに対する位置チェックが行われる(S14406)。単語キーに対する位置チェックとは、次の条件Wが満たされるかどうかを判定する処理を指す。
条件W:Pが−1である(単語キーが先頭である)、もしくは、Pが単語キーを1次キーとして得られた登場位置と等しい(左のキーで得られた登場位置と隣接している)こと。これが満たされる場合、一致しているとみなし、Pに単語キーを元に得られた登場位置+単語キーの文字長を代入する(S14407)。そうでない場合、一致しないと判定し、S144の処理を終える。
ケースDの場合、i番目の単語キーとタグキーに対する位置チェックが行われる(S14408)。単語キーとタグキーに対する位置チェックとは、条件T1、条件T2、条件Wの条件に加え、次の条件TWがすべて満たされるかどうかを判定する処理を指す。
条件TW:タグキーを1次キーとした問い合わせから得た終了位置と、単語キーをキーとした問い合わせから得た登場位置+単語キーの文字長と、が一致すること。
これが満たされている場合、一致しているとみなし、Pにタグキーを元に得られた終了位置+1を代入する(S14409)。そうでない場合、一致しないと判定し、S144の処理を終える。
さらに、ステップS14411において文書リスト統合手段153はiに1を足し、iがキー列の長さを超えないかを調べ(S14412)、もし超える場合、すべての位置関係が正しいと判断し、S144の処理を終える。そうでない場合、ステップS14402に戻る。
最後に、文書検索部15は文書リスト統合手段153によって得られた結果リストを出力する(S15)。
次に、文書インデックスの作成プロセスについて説明する。文書インデックスの作成プロセスは、外部のプログラムあるいはユーザによって一つ以上の文書が入力されることによって、動作を開始する。
一つ以上の文書が入力されると、文書インデックス作成部11は、入力されたそれぞれの文書に対して、文書の本文を読み込み、形態素解析プログラムやNグラム作成プログラムを用いて本文を単語ごとに区切り、単語列を作成する。次に、文書インデックス作成部11は単語列を前方から順に調べ、各単語に対して文書先頭前方からの文字数を登場位置として数える。さらに文書インデックス作成部11は、単語インデックス記憶部13に対して各単語、文書番号、登場位置を与える。
図25はタグの更新プロセスを説明する図である。タグの更新プロセスは、外部のプログラムあるいはユーザによってタグの追加・削除に関する命令文が入力され、タグ更新部12が呼び出されることによって開始される。タグの追加・削除に関する命令文とは、命令種(追加/削除)、タグ名、文書番号、開始位置、終了位置、タグ付けされる(されている)対象文字列、タグの左の単語、タグの右の単語、から成る情報である。
命令文が入力されると、タグ更新部12は、タグ名とタグ付けされる左の語を元にタグLRインデックス記憶部14内のLインデックスを参照し、該当のタグ文書リストを命令種に応じてタグ文書リストの更新を行う(S21)。命令種が追加である場合、該当のタグ文書リストに、文書番号とタグの開始位置とタグの終了位置とを追加する。命令種が削除である場合、該当するタグ文書リストを読み込み、文書番号、開始位置、終了位置が一致する部分を探し、その部分を削除する。同様に、タグ名とタグ付けされる右の語を元にタグLRインデックス記憶部14内のRインデックスを参照し、文書番号とタグの開始位置とタグの終了位置の追加・削除を行う(S22)。
次にタグ更新部12は、高速タグ値判定部16内の更新手段162を呼び出し、命令種、タグ名、タグ付けされる対象文字列を入力する(S23)。例えば、タグ値テーブル161が図15に示すテーブルをメモリ上のプログラムとして実装したものであるとする。この場合、更新手段162は、命令種が追加である場合、タグの付加された文字列を2グラムに区切り、各2グラムに対してタグ値テーブル161を参照し、入力されたタグ名がタグ名列に含まれるか否かを調べる。もしタグ名がタグ名列に含まれない場合、そのタグ名をタグ名列に追加する。命令種を調べ削除である場合、何もしない。なお、第一の実施形態のように高速タグ値判定部16を用いない場合には、S23の処理を行わないものとする。
以上説明した実施形態の動作について、具体的な例を用いてさらに詳しく説明する。
ここではまず、文書インデックスの作成プロセスについて説明する。例えば、図2に示した文書333が文書インデックス作成部11に入力されると、文書インデックス作成部11は本文内の単語を区切り、単語と文書番号と登場位置のリストを作成する。このリストの一部を図26に示す。次に文書インデックス作成部11は、このリストを単語インデックス記憶部13に入力する。単語インデックス記憶部13は図26のリストを元に、転置インデックスを作成する。この転置インデックスの一部の例が図11に示したものである。
次に、タグの更新プロセスについて説明する。例えば、図2に示した文書333の7文字目から10文字目の「山田太郎」という2単語に、「人名」というタグを付加することを考える。このとき、命令文として「命令種(タグ名、文書番号、開始位置、終了位置、対象語、左の語、右の語)」という構文を想定すると、「ADD(”人名”、333、7、10、”山田太郎”、”の”、”社長”)」という命令文が入力される。なお、「ADD」は追加を意味する。
このとき、タグ更新部12は、タグLRインデックス記憶部14内のLインデックスに「[人名]→の」というキーで問い合わせを行い、該当するタグ文書リストに、文書番号333、開始位置7、終了位置10を追記する。さらに、タグLRインデックス記憶部14内のRインデックスに「[人名]→社長」というキーで問い合わせを行い該当するタグ文書リストに、文書番号333、開始位置7、終了位置10を追記する。この結果作成されたタグLRインデックス記憶部14内のデータが図12に示したものである。
また、タグ更新部12は、命令文内の[人名]というタグ名と、「山田太郎」という文字列と、命令種「ADD」とを、高速タグ値判定部16内の更新手段162に入力する。更新手段162は「山田太郎」という文字列を2文字ごとに区切り、「山田」、「田太」および「太郎」という文字列を作成する。次に更新手段162は、タグ値テーブル161を参照し、「山田」、「田太」および「太郎」をキーとするタグ名列を参照し、「人名」が含まれていない場合、「人名」を追加する。この結果作成されたタグ値テーブル161の例が図15に示したものである。
次に、削除の例を挙げる。ここでは同様に、図2に示した文書333の7文字目から10文字目の「山田太郎」という2単語に付加された「人名」というタグを付加することを考える。このとき、命令文として「RM(”人名”、333、7、10、”山田太郎”、”の”、”社長”)」という命令文が入力される。なお、「RM」は削除を意味する。
このとき、タグ更新部12は、タグLRインデックス記憶部14内のLインデックスに「[人名]→の」というキーで問い合わせを行い、該当するタグ文書リストを読み込み、文書番号333、開始位置7、終了位置10となっている部分を削除する。
さらに、タグLRインデックス記憶部14内のRインデックスに「[人名]→社長」というキーで問い合わせを行い該当するタグ文書リストに、文書番号333、開始位置7、終了位置10となっている部分を削除する。
また、タグ更新部12は、命令文内の[人名]というタグ名と「山田太郎」という文字列と命令種「RM」を高速タグ値判定部16内の更新手段162に入力する。この場合、命令種が「RM」(削除)であるため、更新手段162は何もしない。
次に、検索プロセスの具体的な例を示す。例えば、検索クエリの構文として、タグは「[」と「]」で囲まれ、その内部にタグ名あるいは、「タグ名:タグが付加される文字列」が記述されるもの、タグ以外の部分は自然言語で記述されるもの、として定義したときに、「[企業名]の[人名]」というクエリが投げられた場合、文書検索部15は次のように動作する。
クエリ解釈手段151はまず、このクエリを解釈し、図27に示したキー列に変換する(S11)。次にクエリ解釈手段151は、このキー列を元にステップS121の処理を行い、図16に示した問い合わせタスクを作成する(S12)。
問い合わせ実行手段152は、これら二つのタスクをそれぞれタグLRインデックス記憶部14に問い合わせ、図17に示したような文書リスト列を作成する。
文書リスト統合手段153は、この文書リスト列を元に、文書番号が一致し、各単語/タグがフレーズ通りになっている文書集合を表す結果リストを作成する。この処理は次のように行われる。
文書リスト統合手段153はまず、図17に示したタグ文書リストを先頭から順に読み込み、「[企業名]→の」という問い合わせから文書番号333、開始位置1、終了位置5、「[人名]→の」という問い合わせから文書番号333、開始位置7、終了位置10、というデータを読み出す(S142)。
文書リスト統合手段153は、これらのデータの間で文書番号が一致していることを確かめ(S143)、ステップS144の処理に進む。ステップS144で文書リスト統合手段153は、キー列を前方から順に調べる。キー列の1番目はタグキー[企業名]であり、[企業名]を1次キーとする問い合わせタスクが存在するため、ステップS14402ではケースBとして判定し、S14404の処理を行う。ここではタグキーが単一でPが初期値の−1であるため、ステップS14405の処理を行い、P=6(「[企業名]→の」という問い合わせから得た終了位置5+1)とされる。
次に文書リスト統合手段153は、キー列2番を読み込む。キー列の2番目は「の」であるが、「の」を1次キーとする問い合わせタスクが存在しないため、ステップS14402ではケースAとして判定し、Pに「の」の長さ1を加え、P=7とする(S14403)。
次に文書リスト統合手段153は、キー列の3番目を読み込む。キー列の3番目は[人名]であり、該当する問い合わせタスクが存在するため、さらに、キー列3番のタグキー[人名]に対しては、ステップS14402でケースBとして判定し、「[人名]→の」という問い合わせから得られた開始位置7とPの比較を行う(S14404)。現在P=7であるため、[企業名]タグと「の」と[人名]タグが隣接しており、文書リスト統合手段153はステップS14405、S14410、S14411の処理を経て、正しいと判定され、S145の処理を行う。S145では、文書番号333を結果リストに加える。
文書リスト統合手段153は、S147の条件を満たすまでこの処理を行い、最終的に得られた結果リストを出力する(S15)。
また、別の検索クエリの例として「[企業名][助詞][人名]」というフレーズを考える。この例の場合、クエリ解釈手段151はクエリを解釈し(S11)、キー列に変換した上で下記の問い合わせタスクを作成する(S12)。
・参照先「TR」、参照キー「[企業名]→[助詞]」、位置「1」
・参照先「TR」、参照キー「[助詞]→[人名]」、位置「2」
・参照先「TL」、参照キー「[人名]→[助詞]」、位置「3」
問い合わせ実行手段152は、ステップS13の処理において、各問い合わせタスクをタグLRインデックス記憶部14に問い合わせる。なお、ここではこのうち、参照先「TL」、参照キー「[人名]→[助詞]」、位置「3」の問い合わせタスクについて説明する。
システムはまず、[人名]を1次キーとして、図13に示した左の語リストとして、「の」と「最近」を読み込む(S1331)。次に問い合わせ実行手段152は、高速タグ値判定部16にそれぞれの語を問い合わせ、助詞が含まれる可能性が無い語を削除する。例えば、高速タグ値判定部16内のタグ値テーブルが図15の通りであるとすると、「最近」という語に助詞は含まれないので削除する(S1332)。次に問い合わせ実行手段152は、残った語「の」を利用して「[人名]→「の」」という参照を元にタグLインデックス内からタグ文書リストを読み出す(S1333)。以降のステップS14、S15は前述の例と同様であるため説明を省略する。
この実施形態では、第一の実施形態と同様に、高速に検索処理を行うことができるとともに、少量の更新でタグの追加・削除を高速に行うことができる。さらに、任意の文字列をキーとし、その文字列に付加されている可能性のあるタグ名の集合を高速に参照可能とする高速タグ値判定部16を備えたことにより、検索時に隣接したタグABに対し、Aの右に登場する単語の集合に対してBのタグが付加されている可能性のある単語に絞ってタグ文書リストを読み出すことができるため、タグが隣接するクエリに対しても高速にフレーズを高速に参照できる。
(第三の実施形態)
図28は本発明の第三の望ましい実施形態を示すブロック構成図であり、文書管理・検索システムの構成例を示す。この文書管理・検索システムは、本発明の第二の実施形態の構成に、ビット列記憶部17をさらに備える。
ビット列記憶部17は、単語あるいはタグ名と、各単語あるいはタグ名に対して、そのタグ名がどの文書に含まれるかを表すビット列との関係を記憶する。このビット列は文書集合と同じ長さを持ち、各ビットが各文書に対応し、キーが各文書に含まれている(1)かそうでない(0)かを表す。
図29はビット列記憶部17内に記憶されるデータの一例を示す。このデータはN番目のビットが文書番号N番に対応しており、例えば、「は」という単語は文書番号1番、2番、3番、4番、6番・・・の文書に含まれ、また、[人名]というタグは文書番号1番、2番、4番、5番・・・の文書に含まれることを意味している。なお、図29はビット列記憶部17で管理されるデータの論理的な関係を表したものであり、実際のデータの記憶形式はどのようなものでも良いものとする。
ビット列記憶部17は、文書インデックス作成部11から単語と文書番号を受け取り、入力された単語をキーとするビット列の更新を行う。また、ビット列記憶部17は、タグ更新部12からタグ名と文書番号と命令種とを受け取り、このタグ名に対応するビット列を更新する。また、ビット列記憶部17は、問い合わせ実行手段により呼び出され、単語またはタグ名を入力とし、内部に対応するキーが存在する場合、対応するビット列を返却する。
このとき、検索プロセスは次のように行われる。文書検索部15に検索クエリが入力されると、文書検索部15は検索プロセスP10のステップS11によりクエリを解釈した後、キー列に含まれる単語・タグ名をそれぞれビット列記憶部17に問い合わせ、それぞれのビット列を取り出す。そして文書検索部15は、得られた複数のビット列に対しAND演算を行うことで、キー列内のすべてのキーが含まれる集合を表現したビット列BLを作成する。次に文書検索部15は、S12の処理を行い問い合わせタスクの集合を作成した後、S13において各問い合わせタスクの文書リスト・タグ文書リストに対する問い合わせを行い、文書リスト/タグ文書リストを読み込む際(S131、S132、S1333)に、ビット列BLを参照し、文書リスト/タグ文書リスト内の個々の文書番号番目のビットが1である場合(対応する文書にキーがすべて含まれている場合)のみに登場位置/開始位置と終了位置を読み込む。さらに、S14においては、S143の処理を行わず、S143の条件分岐では必ずS144へ進むものとする。以降の処理は第一および第二の実施形態における検索プロセスと同じである。
タグの更新プロセスは次のように行われる。タグ更新部12はステップS21からS23の処理を終えた後、新たにビット列記憶部17の更新処理としてステップS24を行う。ステップS24とは、タグ名と文書番号と命令種をビット列記憶部17に入力し、ビット列の更新を行う処理である。ステップS24においてビット列記憶部17はまず、命令種を調べ、命令種が追加である場合、タグ名をキーとして対応するビット列を読み出し、文書番号番目のビットを「1」に更新する。命令種が削除である場合、何もしない。
文書の更新プロセスは次のように行われる。第一および第二の実施形態と同様の文書の更新プロセスを終えた後、ステップS31を行う。ステップS31とは、文書インデックス作成部11が、ビット列記憶部17に単語と文書番号を入力する処理である。この処理においてビット列記憶部17は、単語をキーとして対応するビット列を読み出し、文書番号番目のビットを「1」に更新する。
なお、ステップS31の処理は、特定の単語のみに対して行うもの、としても良い。例えば、予め高い頻度を持つ単語の辞書HDを用意しておき、ステップS31の処理を行う前に単語とHDを比較し、単語がHD内に含まれる場合のみS31を行うことが考えられる。
次に、具体的な例を用いて本実施形態の動作を説明する。例えば、「[企業名]の[人名]」というクエリが入力されたとすると、クエリ解釈手段11は、S11の処理を行い、[企業名]、「の」、[人名]というキーから成るキー列を作成する。次に問い合わせ実行手段152は、ビット列記憶部17内に記憶されたデータ(図29)を参照し、それぞれのキーに対応するビット列を読み出し、AND演算を行う。この結果「1100101000100」というビット列を得る。これにより、[企業名]、「の」、[人名]という3つのキーが登場する文書の集合を文書番号1番、文書番号2番、文書番号5番・・・に絞り込むことができる。次に問い合わせ実行手段152は、ステップS13において文書リスト・タグ文書リストを読み込む際に、この文書集合に当てはまる部分だけを読み込む。以降の処理は、第一および第二の実施形態における文書の更新プロセスと同様である。
この実施形態では、問い合わせ実行手段において、検索時に予めクエリに含まれる単語/タグ名を元にビット列記憶部を参照してビット列を読み込み、それをAND演算によって調べることで、クエリ内のすべての単語/タグ名が含まれる文書を高速に発見できるため、文書リストの読み込み量を削減でき、検索をさらに高速に行うことができる。
(第四の実施形態)
図30は本発明の第四の望ましい実施形態を示すブロック構成図である。この文書管理・検索システムは、タグを管理するタグ管理部19を備え、このタグ管理部19内に、タグLRインデックス記憶部14と、タグの集合に対して文書集合内のタグの登場位置と左右の単語を記憶するタグNLRインデックス記憶部18と、タグNLRインデックス記憶部18内のインデックスをタグLRインデックス記憶部14内のインデックスに変換する変換手段20と、タグの統計情報に基づきインデックスの持ち方を変更する管理手段21と、を備える。
タグ管理部19は、問い合わせ実行手段152から問い合わせを受けると、内部の管理手段21にその入力のデータを渡し、管理手段21が出力するデータを問い合わせ実行手段152に返却する。また、タグ管理部19は、タグ更新部12から更新の命令文を受けると、内部の管理手段21にその命令文に入力する。
タグNLRインデックス記憶部18は、内部に、タグの集合に対して各タグ名をキーとするタグLR文書リストを持つ。タグLR文書リストとは、タグ文書リストが持つデータに加えて、左の単語と、右の単語とを加えたデータである。
図31はタグLR文書リストの一例を示す。この例では、[人名]というタグが文書集合内で100001回登場し、文書番号333の文書において7文字目から10文字目にあり、その左には「の」という単語が、その右には「社長」という単語があることを示している。
タグLRインデックス記憶部14は、第一の実施形態で示した図12のタグLRインデックスと同じ情報を持つ。
変換手段20は、管理手段21に呼び出され、タグLR文書リストを入力とし、LインデックスとRインデックスを出力する。
管理手段21は、内部に管理テーブルを持つ。管理テーブルとは、タグ名、タグの文書内の頻度、インデックス種の関係を記憶するテーブルである。なお、このうちインデックス種とは、該当のタグのインデックスがどこに作成されているかを表し、その値はタグNLRインデックス記憶部18である(NLR)か、タグLRインデックス記憶部14である(LR)かのどちらかである。
図32に管理テーブルの一例を示す。この例は、[人名]タグが文書集合に100001回登場しており、インデックスが現在タグNLRインデックス記憶部18内に記憶されていることを意味する。
管理手段21は、命令種、タグ名、文書番号、開始位置、終了位置、左の単語、右の単語を含むデータ(命令文)を入力されると、タグ名を元に管理テーブルを参照し、タグ名に対応するインデックス種を取り出し、該当のインデックスに入力された命令文をそのままを入力する。管理手段21は、参照キーと参照先とを入力とする問い合わせを受け、参照キー内のタグ名を元に管理テーブルを参照し、タグ名に対応するインデックス種を取り出し、該当のインデックスに問い合わせを行う。管理手段21はまた、任意のタイミングで管理テーブル内のタグの頻度とインデックス種を調べる。そして、タグの頻度が閾値αよりも大きく、かつ、インデックス種が「NLR」であるタグ名がある場合、タグNLRインデックス記憶部18内からそのタグ名に対応するタグLR文書リストを読み込み、変換手段20を利用してタグLインデックスとタグRインデックスを作成し、タグLRインデックス記憶部14内に追加する。なお、閾値αとは任意の固定的な数である。
次にこの実施形態における処理の流れを説明する。この実施形態は主に、検索プロセスと、タグの更新プロセスと、文書のインデックスプロセスの3つのプロセスを持つが、これらのプロセスは、第一ないし第三の実施形態におけるタグLRインデックス記憶部14の動作をタグ管理部19に置き換えたものと等しい。そこでここでは、タグ管理部19内の処理のみを説明することとし、タグ管理部19に対するタグの更新プロセスと、タグ管理部19に対する問い合わせプロセスと、インデックスの最適化プロセスとを説明する。
まず、タグ管理部19に対するタグの更新プロセスについて説明する。タグの更新プロセスは、タグ更新部12が、タグの追加・削除に関する命令文を管理部19に入力することで開始される。このとき、システムはまず、タグ名を元に管理テーブルを参照し、タグ名に対応する頻度を更新する。頻度の更新は次のように行われる。命令文の命令種が追加である場合には頻度に1を足し、命令種が削除である場合には頻度から1を引く。
次にシステムは、タグ名を元に管理テーブルを参照し、該当するインデックス種を取り出す。インデックス種がLRである場合、命令文をタグLRインデックス記憶部14に与え、ステップS21とS22の処理を行う。インデックス種がNLRである場合、システムは次のように処理を行う。システムは、入力されたタグ名をキーとしてタグLR文書リストを読み込んだ上で、命令種が追加である場合には、タグLR文書リストに文書番号、開始位置、終了位置、左の単語、右の単語を追加する。命令種が削除である場合には、タグLR文書リストから文書番号、開始位置、終了位置が一致する部分を探し出しその部分を削除する。
次に、タグ管理部19に対する問い合わせプロセスについて説明する。このプロセスは、問い合わせ実行手段152がタグ管理部19に参照キーと参照先とを入力とする問い合わせを行うことで開始される。
このとき、システムはまず、タグ名を元に管理テーブルを参照し、該当するインデックス種を取り出す。インデックス種がLRである場合、タグLRインデックス記憶部14に対し問い合わせが行われる。この問い合わせ処理は、第一の実施形態におけるタグLRインデックス記憶部14に対する問い合わせと同様である。
図33はインデックス種がNLRである場合の処理のフローチャートを示す。インデックス種がNLRである場合、システムは、問い合わせ内の参照キーに含まれるタグ名を元に、対応するタグLR文書リストを読み込み、変換手段20を利用してタグLインデックスとタグRインデックスを作成する。
すなわち、システムはまず、コンピュータのメモリ上など高速に追加・参照できる位置に、空のタグLインデックスと空のRインデックスを作成する(S51)。
次にシステムは、タグLRインデックスを前方から順に調べ、文書番号、開始位置、終了位置、左の語、右の語とから成る5つのデータを読み込むたびに、次の処理を行う。システムは、タグLインデックス内に「タグ名→左の語」というキーを持つタグ文書リストが存在するかどうか調べ、もし存在すれば、タグ文書リストの末尾に文書番号と開始位置と終了位置を追加する。もし存在しなければ文書番号と開始位置と終了位置とを元に新たにタグ文書リストを作成し「タグ名→左の語」というキーで登録する。さらに、タグRインデックスに対しても同様の処理を行い、タグRインデックスに「タグ名→右の語」というキーで文書番号と開始位置と終了位置とを追加する(S52)。
この上で、参照キーが「タグ名」である場合は右の単語リスト/左の単語リストを返却し、参照キーが「タグ名→単語」である場合は該当するタグLインデックス/タグRインデックス内の該当の位置を参照し、タグ文書リストを返却する(S53)。
図34はインデックスの最適化プロセスのフローチャートを示す。インデックスの最適化プロセスは、管理テーブル内の1行のデータ(タグ名、頻度、インデックス種)を入力とし、任意のタイミングで実行される。例えば、この実行のタイミングとして、タグ管理部19に対するタグの更新プロセスが終わった際にタグの更新プロセス内で更新された管理テーブル内の行に対して実行することや、毎日午前3時に全行に対してそれぞれ実行すること、などが考えられる。
インデックスの最適化プロセスが開始されると、システムは頻度とインデックス種を調べる。閾値α以上でありかつインデックス種が「NLR」である場合、管理手段21はタグNLRインデックス記憶部18を調べ、このタグ名に対応するタグLR文書リストを読み込む(S61)。次に管理手段21は、変換手段20を利用してこのタグLR文書リストからタグLインデックスとタグRインデックスを作成する(S62)。さらに管理手段21は、作成したタグLインデックスとタグRインデックスをタグLRインデックス記憶部14内に追加する(S63)。次に、管理手段21は同タグ名を用いて管理テーブル内を参照し、インデックス種を「LR」に更新する(S64)。最後に管理手段21は、このタグ名に対応するタグNLRインデックス記憶部18内からこのタグLR文書リストとキーを削除する(S65)。
なお、上記のアルゴリズムでは、タグの頻度を元にインデックスの記憶先を変更しているが、この判定基準は他にも、左の語の種類数、右の語の種類数、タグに対する問い合わせ回数、あるいはそれらを組み合わせて算出される数などが考えられる。
次に、具体的な例を用いてこの実施形態の動作を説明する。なお、ここでは、インデックスの最適化プロセスについて説明する。
例えば、図32で示した管理テーブル内の人名タグの行に注目し、閾値αが100000である状況を想定する。このとき、インデックスの最適化プロセスは次のように動作する。管理手段21はまず頻度とインデックス種を調べる。このとき、タグの頻度が閾値以上でありインデックス種が「NLR」であることから、管理手段21はタグNLRインデックス記憶部18に対して問い合わせを行い、図31の人名をキーとしたタグLR文書リストを取得する(S61)。さらに管理手段21は、変換手段20を利用してこのタグLR文書リストからタグLインデックスとタグRインデックスを作成し、図12で示したインデックスを得(S62)、これをタグLRインデックス記憶部14に記憶する(S63)。さらに管理手段21は、図32で示した管理テーブル内の人名に対するインデックス種を「LR」に変更し(S64)、タグNLRインデックス記憶部18内からこのタグLR文書リストと「人名」というキーを削除する(S65)。
このように、本実施形態では、タグの統計情報を元に、タグNLRインデックスと、タグLRインデックスを切り替えて用いる。タグLRインデックスは左右の単語を元にそれぞれ文書リストを持つために高速な反面、双方向にインデックスを作成するため冗長であり記憶するデータ量が大きくなるという特徴がある。そこで、元々頻度が短く、検索時に文書リストの読み込み量が少ない低頻度なタグに関してはタグNLRインデックスを利用してインデックスを小さくしておくことで、データ量と検索の高速化のバランスを取ることができる。すなわち、元々文書リストが短い低頻度なタグに対してLRインデックスを作成することを避けることができ、インデックスとして保持するデータの量を削減しつつ、検索の高速性を維持することができる。
(第五の実施形態)
本発明はコンピュータ・プログラムとして実施することができ、また、記憶媒体あるいはネットワークを経由して頒布することができる。
このようなコンピュータ・プロクラムは、一つ以上の文書が与えられた場合に、その文書に含まれる単語の集合に対し、各単語をキーとして、その登場位置を記憶する文書インデックス作成処理と、特定の文書中の部分文字列に対しタグを追加・削除するクエリが与えられた場合に、そのタグ名をキーとしタグの登場位置を記憶するタグ更新処理と、このタグ更新処理内において、入力されたタグに対し、タグの右と左に登場した単語を記憶し、さらに各タグとその右に登場する語の組み合わせ、あるいは、各タグとその左に登場する語の組み合わせをキーとして文書集合内の各タグの登場位置を記憶するタグLR記憶処理と、タグと単語から成るフレーズが検索クエリとして与えられた場合に、その検索クエリを解釈した上でフレーズ内の隣接する単語とタグの左右の関係を利用して複数のキーを作成し、これらのキーを元に文書インデックス作成処理において記憶されたキーを元に単語の登場位置、タグ更新処理において記憶されたキーを元に各タグの登場位置をそれぞれ参照し、その上でそれらを統合することでそのフレーズを含む文書の識別子の一覧を返却する文書検索処理とをコンピュータに実行させるためのコードで構成される。
任意の文字列をキーとし、その文字列に付加されている可能性のあるタグ名の集合を高速に参照可能とする高速タグ値判定処理と、タグ更新処理においてタグを付加する際にタグ名と文字列の関係を表すデータを更新する処理と、文書検索処理においてタグ名が連続するフレーズを検索クエリが入力された場合に、高速タグ値判定処理を利用し、特定のタグ名を含む可能性のある単語のみに絞ってタグの登場位置を読み込む処理とをさらにコンピュータに実行させるコードを含むことが望ましい。
文書インデックス処理において高頻度語およびタグ名をキーとし、その単語およびタグを含む文書の集合を表すビット列を記憶するビット列記憶処理と、タグ更新処理において、タグを更新する際に追加・削除されたタグを元にビット列記憶処理で記憶されたビット列を更新する処理と、文書検索処理において、検索クエリに含まれる高頻度語およびタグ名をキーとしてビット列記憶処理で記憶されたビット列を参照し、クエリ内の高頻度語およびタグ名がすべて含まれる文書の集合を表すデータを得、そのデータを元に文書集合を絞り込んだ上で単語とタグの登場位置を読み込む処理とをさらにコンピュータに実行させるコードを含むことができる。
タグ更新処理内において、タグの集合に対して、各タグ名をキーとし、文書集合内のタグの登場位置と左右の単語を記憶するタグNLRインデックス処理をコンピュータに実行させ、タグ更新ステップ内および文書検索ステップ内において、タグをキーとしその登場位置を更新あるいは検索する際に、そのタグがタグNLRインデックス処理で記憶されているか、タグLR更新処理で記憶されているかによって、参照先を選択する処理と、タグに関する頻度を元に、タグNLRインデックス処理で作成されたデータを削除し、タグLRインデックス処理で作成するインデックス変換処理とをコンピュータに実行させるコードを含むこともできる。
本発明はタグを用いて文書を管理・検索するシステムの一部分として有効である。本発明では、タグを含むフレーズを元に、そのフレーズを含む文書集合を表す文書番号のリストを高速に決定する部分に焦点を絞っている。よって、本発明の構成に加え、文書番号から、その文書自体を参照する文書データベースを用意することにより、タグを含むフレーズにより、文書集合を読み出せる検索エンジンとして利用可能である。
本発明は、タグの更新を想定した上でタグを含むフレーズ検索を実現する技術である。このような技術が求められるアプリケーションとしては、大規模な文書集合を分析するテキストマイニングの分野が挙げられる。テキストマイニングでは、文書にタグを付加し、そのタグを利用して分析が行われる。通常、文書集合に対してどのようなタグ付けが好ましいかどうかは事前にわからないことが多い。そこで、大量の文書集合を予めインデックス化しておき、種々のタグ付け手段を用いてタグ付けを行っていき、タグやそのタグを含むフレーズで検索し、その頻度や文書集合を取り出すことで、効率良く文書集合から知識を取り出すことができる。本発明はこのような場合に有益である。
この出願は、2007年11月15日に出願された日本出願特願第2007−296386号を基礎とする優先権を主張し、その開示のすべてをここに取り込むものである。
Claims (12)
- 単語の集合に対して、各単語が登場する文書の識別子及びその文書内におけるその単語の登場位置を記憶する単語インデックス記憶部と、
単語に付加されてその単語の属性を表すタグの集合に対して、各タグの右に登場した単語の集合、及び、各タグの左に登場した単語の集合を記憶し、さらに各タグとその右に登場する単語の組み合わせ、あるいは、各タグとその左に登場する単語の組み合わせをキーとして、各タグが登場する文書の識別子及びその文書内におけるそのタグの登場位置を記憶するタグLRインデックス記憶部と、
検索クエリとして入力されたフレーズ内の、タグとその右に登場する単語の組み合わせ、あるいは、タグとその左に登場する単語の組み合わせを含む文書の識別子を、上記タグLRインデックス記憶部に問い合わせて、当該問い合わせの結果に基づいて、前記フレーズを含む文書の識別子の一覧を返却する文書検索部と、
特定の文書中の部分文字列に対してタグを追加・削除するクエリを解釈し、上記タグLRインデックス記憶部の記憶内容を更新するタグ更新部と、
一つ以上の文書が与えられた場合に、上記単語インデックス記憶部内のインデックスを更新する文書インデックス作成部と
を備えたことを特徴とする文書管理・検索システム。 - 任意の文字列をキーとし、その文字列に付加されている可能性のあるタグ名の集合を高速に参照可能とする高速タグ値判定部を備え、
前記タグ更新部は、タグを付加する際に上記高速タグ値判定部内のデータを更新する手段を含み、
前記文書検索部は、タグが連続するフレーズが検索クエリとして入力された場合に、上記高速タグ値判定部と前記タグLRインデックス記憶部とを参照して、特定のタグ名を含む可能性のある単語に絞って問い合わせを実行する手段を含む
ことを特徴とする請求項1記載の文書管理・検索システム。 - 高頻度語とタグ名とをキーとし、その単語およびタグをそれぞれ含む文書の集合を表すビット列を記憶するビット列記憶部を備え、
前記文書インデックス作成部は、文書からインデックスを作成する際に上記ビット列記憶部内のビット列を更新する手段を含み、
前記タグ更新部は、タグを更新する際に追加・削除されたタグを元に上記ビット列記憶部内のビット列を更新する手段を含み、
前記文書検索部は、検索時に予めクエリに含まれる高頻度語およびタグ名を元に上記ビット列記憶部を参照し、クエリ内の高頻度語およびタグ名がすべて含まれる文書番号の集合を得て、その文書番号を元に文書集合を絞り込んだ上で文書集合内にフレーズの登場位置を読み込む手段を含む
ことを特徴とする請求項1または2記載の文書管理・検索システム。 - タグの集合に対して、各タグ名をキーとし、文書集合内のタグの登場位置と左右の単語を記憶するタグNLRインデックス記憶部と、
このタグNLRインデックス記憶部内のインデックスを前記タグLRインデックス記憶部内のインデックスに変換する変換手段と、
タグの登場頻度に基づきインデックスの記憶方法を変更する管理手段と
を備えたことを特徴とする請求項1ないし3のいずれか記載の文書管理・検索システム。 - 一つ以上の文書が与えられた場合に、その文書に含まれる単語の集合に対し、各単語をキーとして、その単語が登場する文書の識別子及びその文書内におけるその単語の登場位置を記憶する処理を処理装置にて実行する文書インデックス作成ステップと、
特定の文書中の部分文字列に対しタグを追加・削除するクエリが与えられた場合に、そのタグ名をキーとしタグの登場位置を記憶装置に記憶するタグ更新ステップと、
このタグ更新ステップ内において、入力されたタグに対し、タグの右に登場した単語とタグの左に登場した単語とを記憶し、さらに各タグとその右に登場する単語の組み合わせ、あるいは、各タグとその左に登場する単語の組み合わせをキーとして、各タグが登場する文書の識別子及びその文書内におけるそのタグの登場位置を記憶装置に記憶するタグLR記憶ステップと、
検索クエリとして入力されたフレーズ内の、タグとその右に登場する単語の組み合わせ、あるいは、タグとその左に登場する単語の組み合わせを含む文書の識別子を、上記タグLRインデックス記憶ステップにて記憶した記憶装置に問い合わせて、当該問い合わせの結果に基づいて、前記フレーズを含む文書の識別子の一覧を返却する処理を処理装置にて実行する文書検索ステップと、
を含むことを特徴とする文書の管理・検索方法。 - 任意の文字列をキーとし、その文字列に付加されている可能性のあるタグ名の集合を高速に参照可能とする高速タグ値判定ステップを含み、
前記タグ更新ステップは、タグを付加する際にタグ名と文字列の関係を表すデータを更新するステップを含み、
前記文書検索ステップは、タグ名が連続するフレーズを検索クエリが入力された場合に、高速タグ値判定ステップを利用し、特定のタグ名を含む可能性のある単語のみに絞ってタグの登場位置を読み込むステップを含む
ことを特徴とする請求項5記載の文書の管理・検索方法。 - 文書インデックスステップにおいて高頻度語とタグ名とをキーとし、その単語およびタグをそれぞれ含む文書の集合を表すビット列を記憶するビット列記憶ステップを含み、
前記タグ更新ステップは、タグを更新する際に追加・削除されたタグを元にビット列記憶部内のビット列を更新するステップを含み、
文書検索ステップは、検索クエリに含まれる高頻度語とタグ名とをキーとしてビット列記憶ステップで記憶されたビット列を参照し、クエリ内の高頻度語およびタグ名がすべて含まれる文書の集合を表すデータを得、そのデータを元に文書集合を絞り込んだ上で単語とタグの登場位置を読み込むステップを含む
ことを特徴とする請求項5または6記載の文書の管理・検索方法。 - 前記タグ更新ステップは、タグの集合に対して、各タグ名をキーとし、文書集合内のタグの登場位置と左右の単語を記憶するタグNLRインデックスステップを含み、
前記タグ更新ステップおよび前記文書検索ステップは、
タグをキーとしその登場位置を更新あるいは検索する際に、そのタグが前記タグNLRインデックスステップで記憶されているか前記タグLR更新ステップで記憶されているかによって、参照先を選択するステップと、
タグに関する頻度を元に、タグNLRインデックスステップで作成されたデータを削除し、タグLRインデックスステップで作成するインデックス変換ステップと
を含む
ことを特徴とする請求項5ないし7のいずれか記載の文書の管理・検索方法。 - 一つ以上の文書が与えられた場合に、その文書に含まれる単語の集合に対し、各単語をキーとして、その単語が登場する文書の識別子及びその文書内におけるその単語の登場位置を記憶する文書インデックス作成処理と、
特定の文書中の部分文字列に対しタグを追加・削除するクエリが与えられた場合に、そのタグ名をキーとしタグの登場位置を記憶するタグ更新処理と、
このタグ更新処理内において、入力されたタグに対し、タグの右と左に登場した単語を記憶し、さらに各タグとその右に登場する語の組み合わせ、あるいは、各タグとその左に登場する語の組み合わせをキーとして文書集合内の各タグの登場位置を記憶するタグLR記憶処理と、
このタグ更新処理内において、入力されたタグに対し、タグの右に登場した単語とタグの左に登場した単語とを記憶し、さらに各タグとその右に登場する単語の組み合わせ、あるいは、各タグとその左に登場する単語の組み合わせをキーとして、各タグが登場する文書の識別子及びその文書内におけるそのタグの登場位置を記憶するタグLR記憶処理と、
検索クエリとして入力されたフレーズ内の、タグとその右に登場する単語の組み合わせ、あるいは、タグとその左に登場する単語の組み合わせを含む文書の識別子を、上記タグLRインデックス記憶ステップにて記憶した記憶装置に問い合わせて、当該問い合わせの結果に基づいて、前記フレーズを含む文書の識別子の一覧を返却する文書検索処理と
をコンピュータに実行させるためのコンピュータ・プログラム。 - 任意の文字列をキーとし、その文字列に付加されている可能性のあるタグ名の集合を高速に参照可能とする高速タグ値判定処理と、
タグ更新処理においてタグを付加する際にタグ名と文字列の関係を表すデータを更新する処理と、
文書検索処理においてタグ名が連続するフレーズを検索クエリが入力された場合に、高速タグ値判定処理を利用し、特定のタグ名を含む可能性のある単語のみに絞ってタグの登場位置を読み込む処理と
をさらにコンピュータに実行させることを特徴とする請求項9記載のコンピュータ・プログラム。 - 文書インデックス処理において高頻度語およびタグ名をキーとし、その単語およびタグを含む文書の集合を表すビット列を記憶するビット列記憶処理と、
前記タグ更新処理において、タグを更新する際に追加・削除されたタグを元に上記ビット列記憶処理で記憶されたビット列を更新する処理と、
前記文書検索処理において、検索クエリに含まれる高頻度語およびタグ名をキーとして上記ビット列記憶処理で記憶されたビット列を参照し、クエリ内の高頻度語およびタグ名がすべて含まれる文書の集合を表すデータを得、そのデータを元に文書集合を絞り込んだ上で単語とタグの登場位置を読み込む処理と
をさらにコンピュータに実行させることを特徴とする請求項9または10記載のコンピュータ・プログラム。 - 前記タグ更新処理内において、タグの集合に対して、各タグ名をキーとし、文書集合内のタグの登場位置と左右の単語を記憶するタグNLRインデックス処理をコンピュータに実行させ、
前記タグ更新ステップ内および前記文書検索ステップ内において、タグをキーとしその登場位置を更新あるいは検索する際に、そのタグが上記タグNLRインデックス処理で記憶されているか、前記タグLR更新処理で記憶されているかによって、参照先を選択する処理と、タグに関する頻度を元に、タグNLRインデックス処理で作成されたデータを削除し、タグLRインデックス処理で作成するインデックス変換処理とをコンピュータに実行させる
ことを特徴とする請求項9ないし11のいずれか記載のコンピュータ・プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009541163A JP5376163B2 (ja) | 2007-11-15 | 2008-11-06 | 文書管理・検索システムおよび文書の管理・検索方法 |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007296386 | 2007-11-15 | ||
JP2007296386 | 2007-11-15 | ||
JP2009541163A JP5376163B2 (ja) | 2007-11-15 | 2008-11-06 | 文書管理・検索システムおよび文書の管理・検索方法 |
PCT/JP2008/070630 WO2009063925A1 (ja) | 2007-11-15 | 2008-11-06 | 文書管理・検索システムおよび文書の管理・検索方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2009063925A1 JPWO2009063925A1 (ja) | 2011-03-31 |
JP5376163B2 true JP5376163B2 (ja) | 2013-12-25 |
Family
ID=40638773
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009541163A Active JP5376163B2 (ja) | 2007-11-15 | 2008-11-06 | 文書管理・検索システムおよび文書の管理・検索方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9454597B2 (ja) |
JP (1) | JP5376163B2 (ja) |
WO (1) | WO2009063925A1 (ja) |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8266140B2 (en) * | 2009-03-13 | 2012-09-11 | International Business Machines Corporation | Tagging system using internet search engine |
JP2011123598A (ja) * | 2009-12-09 | 2011-06-23 | Canon Inc | 原稿判別装置、原稿判別方法及びプログラム |
US8745370B2 (en) * | 2010-06-28 | 2014-06-03 | Sap Ag | Secure sharing of data along supply chains |
US8539597B2 (en) * | 2010-09-16 | 2013-09-17 | International Business Machines Corporation | Securing sensitive data for cloud computing |
US9600565B2 (en) * | 2010-10-15 | 2017-03-21 | Nec Corporation | Data structure, index creation device, data search device, index creation method, data search method, and computer-readable recording medium |
JP5084895B2 (ja) * | 2010-11-18 | 2012-11-28 | ヤフー株式会社 | テキストデータ読出装置、方法及びプログラム |
US8983963B2 (en) * | 2011-07-07 | 2015-03-17 | Software Ag | Techniques for comparing and clustering documents |
AU2011377004B2 (en) * | 2011-09-14 | 2015-11-12 | Fujitsu Limited | Extraction method, extraction program, extraction device, and extraction system |
US9495352B1 (en) | 2011-09-24 | 2016-11-15 | Athena Ann Smyros | Natural language determiner to identify functions of a device equal to a user manual |
US20130086059A1 (en) * | 2011-10-03 | 2013-04-04 | Nuance Communications, Inc. | Method for Discovering Key Entities and Concepts in Data |
US8589404B1 (en) * | 2012-06-19 | 2013-11-19 | Northrop Grumman Systems Corporation | Semantic data integration |
US9740765B2 (en) * | 2012-10-08 | 2017-08-22 | International Business Machines Corporation | Building nomenclature in a set of documents while building associative document trees |
US9116938B2 (en) * | 2013-03-15 | 2015-08-25 | Qualcomm Incorporated | Updating index information when adding or removing documents |
JP5954742B2 (ja) | 2013-07-23 | 2016-07-20 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 文書を検索する装置及び方法 |
US11126592B2 (en) * | 2014-09-02 | 2021-09-21 | Microsoft Technology Licensing, Llc | Rapid indexing of document tags |
US10055301B2 (en) * | 2015-06-15 | 2018-08-21 | Open Text Sa Ulc | Systems and methods for content server make disk image operation |
US10606815B2 (en) * | 2016-03-29 | 2020-03-31 | International Business Machines Corporation | Creation of indexes for information retrieval |
JP6717152B2 (ja) * | 2016-10-06 | 2020-07-01 | 富士通株式会社 | インデックス生成プログラム、インデックス生成装置、インデックス生成方法、検索プログラム、検索装置および検索方法 |
JP6900956B2 (ja) * | 2016-11-28 | 2021-07-14 | 富士通株式会社 | 検証プログラム、検証装置、検証方法、インデックス生成プログラム、インデックス生成装置およびインデックス生成方法 |
US10572545B2 (en) * | 2017-03-03 | 2020-02-25 | Perkinelmer Informatics, Inc | Systems and methods for searching and indexing documents comprising chemical information |
US10417269B2 (en) * | 2017-03-13 | 2019-09-17 | Lexisnexis, A Division Of Reed Elsevier Inc. | Systems and methods for verbatim-text mining |
EP3608800A4 (en) * | 2017-04-06 | 2020-04-01 | Fujitsu Limited | INDEX GENERATION PROGRAM, INDEX GENERATION DEVICE, INDEX GENERATION METHOD, SEARCH PROGRAM, SEARCH DEVICE, AND SEARCH METHOD |
JP6972653B2 (ja) | 2017-05-16 | 2021-11-24 | 富士通株式会社 | 解析プログラム、解析方法および解析装置 |
US10678818B2 (en) * | 2018-01-03 | 2020-06-09 | Snap Inc. | Tag distribution visualization system |
JP7006462B2 (ja) * | 2018-04-02 | 2022-01-24 | 富士通株式会社 | データ生成プログラム、データ生成方法および情報処理装置 |
WO2020257973A1 (en) * | 2019-06-24 | 2020-12-30 | Citrix Systems, Inc. | Detecting hard-coded strings in source code |
CN112230781B (zh) * | 2019-07-15 | 2023-07-25 | 腾讯科技(深圳)有限公司 | 字符推荐方法、装置及存储介质 |
CN111178965B (zh) * | 2019-12-27 | 2023-07-25 | 聚好看科技股份有限公司 | 一种资源投放方法及服务器 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06215029A (ja) * | 1992-12-10 | 1994-08-05 | Xerox Corp | テキスト検索方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6215898B1 (en) * | 1997-04-15 | 2001-04-10 | Interval Research Corporation | Data processing system and method |
CN1328321A (zh) * | 2000-05-31 | 2001-12-26 | 松下电器产业株式会社 | 通过语音提供信息的装置和方法 |
JP3709890B2 (ja) | 2000-10-25 | 2005-10-26 | 松下電器産業株式会社 | 文字列検索装置 |
JP3882729B2 (ja) * | 2002-09-27 | 2007-02-21 | 富士通株式会社 | 情報開示プログラム |
US20080077570A1 (en) * | 2004-10-25 | 2008-03-27 | Infovell, Inc. | Full Text Query and Search Systems and Method of Use |
-
2008
- 2008-11-06 WO PCT/JP2008/070630 patent/WO2009063925A1/ja active Application Filing
- 2008-11-06 JP JP2009541163A patent/JP5376163B2/ja active Active
- 2008-11-06 US US12/741,302 patent/US9454597B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06215029A (ja) * | 1992-12-10 | 1994-08-05 | Xerox Corp | テキスト検索方法 |
Also Published As
Publication number | Publication date |
---|---|
US20100281030A1 (en) | 2010-11-04 |
US9454597B2 (en) | 2016-09-27 |
WO2009063925A1 (ja) | 2009-05-22 |
JPWO2009063925A1 (ja) | 2011-03-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5376163B2 (ja) | 文書管理・検索システムおよび文書の管理・検索方法 | |
US11573996B2 (en) | System and method for hierarchically organizing documents based on document portions | |
US6853992B2 (en) | Structured-document search apparatus and method, recording medium storing structured-document searching program, and method of creating indexes for searching structured documents | |
JP5038939B2 (ja) | 情報検索システム、方法及びプログラム | |
JP4398988B2 (ja) | 構造化文書を管理する装置、方法およびプログラム | |
JP2012073951A (ja) | 文字列比較プログラム、文字列比較装置及び文字列比較方法 | |
JP4333318B2 (ja) | 話題構造抽出装置及び話題構造抽出プログラム及び話題構造抽出プログラムを記録したコンピュータ読み取り可能な記憶媒体 | |
US20200210419A1 (en) | System and method for value based region searching and associated search operators | |
JP4237813B2 (ja) | 構造化文書管理システム | |
JP7103763B2 (ja) | 情報処理システムおよび情報処理方法 | |
JP5169456B2 (ja) | 文書検索システム、文書検索方法および文書検索プログラム | |
JPH0844771A (ja) | 情報検索装置 | |
JP2005242416A (ja) | 自然言語文の検索方法および検索装置 | |
JP4439496B2 (ja) | 検索処理装置及びプログラム | |
WO2009136426A1 (ja) | 検索クエリ提供装置 | |
US20050044118A1 (en) | Numerical information retrieving device | |
JP2008026964A (ja) | 検索処理装置及びプログラム | |
JP4378106B2 (ja) | 文書検索装置、文書検索方法及びプログラム | |
JP3531222B2 (ja) | 類似文字列検索装置 | |
JP7272540B2 (ja) | 情報提供システム、情報提供方法、及びデータ構造 | |
JP4543819B2 (ja) | 情報検索システム、情報検索方法及び情報検索プログラム | |
KR20020061886A (ko) | 엑스엠엘 문서의 저장방법 및 엑스엠엘 문서 또는 인덱스노드 탐색방법 | |
JP2006018584A (ja) | 構造化文書管理システム、値索引生成方法及びプログラム | |
JPH11203312A (ja) | キーワード検索装置、文書検索装置、キーワード検索プログラムを記録した記録媒体及び文書検索プログラムを記録した記録媒体 | |
JP2002297603A (ja) | 情報抽出方法および構造化文書管理装置およびプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20110831 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130612 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130805 |
|
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: 20130828 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130910 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5376163 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |