JP2016115288A - データを集計するシステム、方法およびプログラム - Google Patents

データを集計するシステム、方法およびプログラム Download PDF

Info

Publication number
JP2016115288A
JP2016115288A JP2014255623A JP2014255623A JP2016115288A JP 2016115288 A JP2016115288 A JP 2016115288A JP 2014255623 A JP2014255623 A JP 2014255623A JP 2014255623 A JP2014255623 A JP 2014255623A JP 2016115288 A JP2016115288 A JP 2016115288A
Authority
JP
Japan
Prior art keywords
target data
list
index
attribute
word
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.)
Granted
Application number
JP2014255623A
Other languages
English (en)
Other versions
JP6376534B2 (ja
Inventor
吉田 一星
Issei Yoshida
一星 吉田
美紀 榎
Miki Enoki
美紀 榎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2014255623A priority Critical patent/JP6376534B2/ja
Priority to US14/970,741 priority patent/US10733218B2/en
Publication of JP2016115288A publication Critical patent/JP2016115288A/ja
Application granted granted Critical
Publication of JP6376534B2 publication Critical patent/JP6376534B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/31Indexing; Data structures therefor; Storage structures
    • G06F16/316Indexing structures
    • G06F16/319Inverted lists

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】集計処理において、必要なメモリ領域(記憶容量)を削減し、かつ、対象データや属性の更新処理に要する手間を削減する。【解決手段】データを集計するシステムであって、対象データごとに所定の順序で並び、対象データの識別情報から対象データが有する属性のリストを指定するDtoKインデックス122と、複数の対象データが有する属性のリストである単語リスト121と、を記憶するインデックス記憶部と、属性ごとにこの属性を有する対象データを調べ、対象データとの関係が所定の基準を満たす属性を集計する集計処理を行う集計処理部と、を備える。そして、単語リスト121の各属性に関して、対象データごとの第1リストの要素を順に辿るリンクが設定されており、集計処理部は、属性ごとに設定されたリンクに基づき、属性を有する対象データを調べる。【選択図】図2

Description

本発明は、データを集計するシステム、方法およびプログラムに関し、特に所定の属性を有する対象データの集合中から所定の属性を集計する技術に関する。
複数種類の属性を持つ大量のデータに対する集計操作の一つに、処理対象として指定されたデータ(以下、対象データ)の集合中に出現する属性を、ある規則に基づいて各属性に付与された値である点数(重み、スコア)の高いものから順にk種類求める集計操作がある。この集計操作は、Top−k等とも呼ばれる。例えば、対象データが文書(テキスト)で、属性がその文書に含まれる単語である場合を考える。また、属性である各単語に付与される点数を全文書中の出現数とする。このとき、特定の条件を満たす複数の文書だけに出現する単語のうち、出現頻度上位k個の単語を求める操作は、Top−kの集計操作の一例である。
この種の従来技術として、テキストの識別情報から当該テキストに含まれるキーワードのリストを指定する第1インデックス(DOC_TO_KEYインデックス)と、キーワードの識別情報から当該キーワードを含むテキストのリストを指定する第2インデックス(KEY_TO_DOCインデックス)とを用いて、テキストを検索する技術がある(特許文献1参照)。ここで、テキストは上記の「対象データ」の一例であり、キーワードは上記の「属性」の一例である。この従来技術では、検索条件の入力を受け付けると、まず、第1インデックスによる検索時間および第2インデックスによる検索時間を見積もる。そして、より高速であると判断されたインデックスを用いて検索する。
特開2007−156739号公報
KEY_TO_DOCインデックス(以下、KtoDインデックスと略記する)を用いた処理は、例えば、次のような手順による処理となる。すなわち、まず、出現頻度の高い順に属性を順次選択する。そして、選択された属性を含む対象データのリストが、検索条件を満たすか否かを判断する。そして、検索条件を満たす対象データの数が多い順にk個の属性を選択する。これにより、選択された属性が集計結果となる。しかし、この処理は、集計される対象となる属性の種類が多い場合、多大な処理時間を要する。
DOC_TO_KEYインデックス(以下、DtoKインデックスと略記する)を用いた処理は、例えば、次のような手順による処理となる。すなわち、まず、検索条件を満たす対象データを選択する。そして、選択された対象データの識別情報に対応する属性のリストを取得する。そして、リストに示された属性を含む対象データの数を属性毎に集計する。しかし、この処理は、対象データの数が多い場合、多大な処理時間を要する。
特許文献1の従来技術は、上記2種類のインデックスを有し、各インデックスを用いた処理に要する時間を見積もり、より短時間で実行可能と判断した処理を実行するものである。しかし、この従来技術は、KtoDインデックスとDtoKインデックスの両方を有するため、インデックスを保持するために必要なメモリ領域(記憶容量)が大きい。
また、KtoDインデックスに関しては、対象データが追加された場合、追加された対象データおよびその属性に対応させるためにはインデックスを作成しなおさなければならず、更新処理が煩雑であった。
そこで本発明は、上記の集計処理を行う技術において、KtoDインデックスとDtoKインデックスの両方を用意する場合と比較して、必要なメモリ領域(記憶容量)を削減し、かつ、対象データや属性の更新処理に要する手間を削減することを目的とする。
上記の目的を達成するため、本発明は、次のようなシステムとして実現される。このシステムは、データを集計するシステムであって、集計処理の対象である対象データの識別情報から対象データが有する属性のリストである第1リストを指定するインデックスであって、対象データごとの第1リストは所定の順序で並び、第1リストの各要素が属性の情報を含む、インデックスと、複数の対象データが有する属性のリストである第2リストと、を記憶するインデックス記憶部と、属性ごとにこの属性を有する対象データを調べ、対象データとの関係が所定の基準を満たす属性を集計する集計処理を行う集計処理部と、を備える。そして、第2リストの各属性に関して、対象データごとの第1リストの要素を順に辿るリンクが設定されており、集計処理部は、属性ごとに設定されたリンクに基づき、属性を有する対象データを調べる。
より好ましくは、第1リストにおけるリンクは、対象データごとの第1リストの各要素が、この要素に含まれるのと同一の属性の情報を含む最も近い後続の第1リストの要素を特定する情報を含むことにより、設定される。
さらに好ましくは、第2リストの各属性は、複数の対象データにおける個々の対象データが属性を有する頻度の降順にソートされている。
さらに好ましくは、対象データごとの第1リストの各要素は、この要素が含む情報により特定される属性に対して付与された値をさらに含む。そして、第1リストの各要素は、この値に基づく順序でソートされている。
より詳細には、属性に対して付与された値は、この属性とこの属性を有する対象データとの関係に基づく重み値であり、第1リストの各要素は、この値の降順にソートされている。
さらに好ましくは、対象データごとの第1リストは、最も古い第1リストを最後尾として作成された順に並び、新規に作成された第1リストを追加する場合は、第1リストの並びの先頭に配置され、かつ、新規に作成された第1リストの各要素に含まれる属性に関するリンクが更新される。
さらに好ましくは、対象データごとの第1リストは、最も古い第1リストを最後尾として作成された順に並び、最も古い第1リストを削除する場合は、最後尾の第1リストが削除され、かつ、削除された第1リストの各要素に含まれる属性に関するリンクが更新される。
また、本発明は、次のようなシステムとしても実現される。このシステムは、データを集計するシステムであって、集計処理の対象である対象データごとに対象データが有する属性を登録したリストを含むインデックスを記憶するインデックス記憶部と、属性ごとにこの属性を有する対象データを調べ、対象データとの関係が所定の基準を満たす属性を集計する第1手法、および、対象データごとに対象データが有する属性を調べ、対象データとの関係が所定の基準を満たす属性を集計する第2手法のどちらで集計処理を行うかを判定する判定部と、判定部による判定に応じて第1手法および第2手法の一方により集計処理を行う集計処理部と、を備える。そして、インデックスは、相異なる対象データが有する同一の属性どうしを関連付けており、集計処理部は、第1手法により集計処理を行う場合に、インデックスにおける同一の属性どうしの関連に基づき、この属性を有する対象データを調べる。
また、本発明は、次のような方法としても実現される。この方法は、データを集計する方法であって、集計処理の対象である対象データの識別情報から対象データが有する属性のリストである第1リストを指定するインデックスであって、対象データごとの第1リストは所定の順序で並び、第1リストの各要素がこの属性の情報を含む、インデックスと、複数の対象データが有する属性のリストである第2リストと、第2リストの各属性に関して、対象データごとの第1リストの要素を順に辿るリンク構造と、を記憶するインデックス記憶部と、属性の集計処理を行う集計処理部と、を備えるシステムにおいて、集計処理部が、属性ごとに設定されたリンクに基づき、この属性を有する対象データの数を調べるステップと、属性を、調べた対象データの数が多い上位の所定数の属性を集計し、集計結果を出力するステップと、を含む。
また、本発明は、次のような方法としても実現される。この方法は、データを集計する方法であって、集計処理の対象である対象データごとにこの対象データが有する属性を登録したリストを含むインデックスを記憶するインデックス記憶部と、属性の集計処理を行う集計処理部と、この集計処理部により行われる集計処理の手法を判定する判定部と、を備えるシステムにおいて、判定部が、属性ごとにこの属性を有する対象データを調べ、対象データとの関係が所定の基準を満たす属性を集計する第1手法、および、対象データごとにこの対象データが有する属性を調べ、対象データとの関係が所定の基準を満たす属性を集計する第2手法のどちらで集計処理を行うかを判定するステップと、判定部が第1手法により集計処理を行うと判定した場合に、集計処理部が、相異なる対象データが有する同一の属性どうしを関連付けてなるインデックスにおける同一の属性どうしの関連に基づき、この属性を有する対象データを調べ、対象データとの関係が所定の基準を満たす属性を集計するステップと、判定部が第2手法により集計処理を行うと判定した場合に、集計処理部が、インデックスに基づき、各対象データが有する属性を調べ、対象データとの関係が所定の基準を満たす属性を集計するステップと、を含む。
さらにまた、本発明は、コンピュータを制御して上述した装置の各機能を実現するプログラム、あるいは、コンピュータに上記の各ステップに対応する処理を実行させるプログラムとしても実現される。このプログラムは、磁気ディスクや光ディスク、半導体メモリ、その他の記録媒体に格納して配布したり、ネットワークを介して配信したりすることにより、提供することができる。
本発明によれば、KtoDインデックスを別途作成することなく、集計対象の属性ごとに、その属性を有する対象データの数を調べ、対象データ数の多い上位の所定数の属性を集計する。これにより、KtoDインデックスとDtoKインデックスの両方を用意する場合と比較して、必要なメモリ領域(記憶容量)を削減し、かつ、対象データや属性の更新処理に要する手間を削減することが可能となる。
本実施形態による集計システムの構成を示す図である。 本実施形態のインデックス記憶部に記憶されるインデックスの構成を示す図である。 第1の手法により集計処理を行う場合の集計処理部の動作を示すフローチャートである。 第1の手法により集計処理を行う場合の集計処理部の動作を示すフローチャートである。 DtoKインデックスの作成処理の手順を示すフローチャートである。 新規文書追加処理の手順を示すフローチャートである。 Javaプログラミング言語を用いたDtoKインデックスの実装例を示す図であり、図7(a)はDtoKインデックスのエントリを設定するコード、図7(b)はDtoKリストを生成するコード、図7(c)は新しいDtoKインデックスを追加するコード、図7(d)はDtoKインデックスを削除するコードを示す図である。 Javaプログラミング言語を用いたDtoKインデックスの実装例を示す図であり、図7に示すコードにより設定されたリンクの様子を示す図である。 Javaプログラミング言語を用いたDtoKインデックスの他の実装例を示す図であり、DtoKインデックスのエントリを設定するコードを示す図である。 Javaプログラミング言語を用いたDtoKインデックスの他の実装例を示す図であり、図9に示すコードにより設定されたリンクの様子を示す図である。 図9〜図10に示す実装例によるインデックスの構成を示す図である。 図9〜図11の実装例において、DtoKインデックスを削除する処理の手順を示すフローチャートである。 図11に示したインデックス構成において、DtoKインデックスを削除した様子を示す図である。 本実施形態の集計システムを構成するのに好適なハードウェア構成例を示す図である。
以下、添付図面を参照して、本発明の実施形態について詳細に説明する。本実施形態による集計システムは、複数種類の属性を持つ対象データの集合中に出現する属性を、何らかの規則に基づいて所定の基準個数だけ求める集計処理を行う。以下では、対象データの一例として、検索等の何らかの手段で処理対象として絞り込まれた文書、属性の一例として、各文書に含まれる単語を用いた場合を例として説明する。また、この例において、集計の規則は、絞り込まれた文書全体における出現数の多いものから順に基準個数(k個)の単語を選択するものとする。
<システム構成>
図1は、本実施形態による集計システムの構成を示す図である。図1に示すように、本実施形態の集計システム100は、文書DB(データベース)200に接続されている。文書DB200は、処理対象となり得る文書を格納している。集計処理の対象となる文書は、例えば、文書DB200に格納されている文書のうちで、何らかの検索条件に基づく検索等により指定された(絞り込まれた)文書とすることができる。
本実施形態では、集計システム100は、文書DB200に格納されている文書に関して、何らかの検索条件に基づく検索により集計処理の対象となる文書を指定する(絞り込む)。例えば、特定の単語を含む文書を検索し、得られた文書を集計処理の対象とする。そして、得られた文書に含まれる単語のうち、出現頻度の高いものから順に、予め定められた個数(k個)の単語を求める。図1に示すように、本実施形態の集計システム100は、入力受け付け部110と、インデックス記憶部120と、集計処理部130と、判定部140と、インデックス更新部150とを備える。
入力受け付け部110は、集計処理を行うための入力を受け付ける。具体的には、入力受け付け部110は、集計処理の対象となる文書を指定するための絞り込み条件(検索条件等)の入力を受け付ける。また、入力受け付け部110は、集計しようとする属性を指定する情報の入力を受け付ける。
インデックス記憶部120は、集計処理に用いられるインデックスを記憶している。本実施形態では、文書の識別情報からその文書に含まれる単語のリストを指定するDtoKインデックスが用いられる。DtoKインデックスは、文書DB200に格納されている文書ごとに作成されている。また、本実施形態では、DtoKインデックスにおける文書ごとの単語のリストにおいて、各文書に出現する同一の単語間にリンクを設定している。言い換えれば、相異なる文書のDtoKインデックスに含まれる同一の単語どうしを関連付けている。これにより、例えば、ある単語をキーワードとして、この単語間のリンクを辿ることにより、キーワードを含む文書を特定することができる。このDtoKインデックスのデータ構造の詳細については後述する。
集計処理部130は、文書DB200に格納されている文書のうち、集計処理の対象として指定された文書(以下、指定文書と呼ぶ)を対象として、指定文書全体における出現頻度の高い単語を特定し、集計する。具体的には、集計処理部130は、出現頻度が予め定められた上位k個に含まれる単語を集計する。本実施形態の集計処理部130は、次の何れかの手法を用いて集計処理を行う。
すなわち、一つは、集計対象(集計される属性)の単語ごとに、その単語を含む文書の数を調べ、最も多くの文書に含まれる単語から降順にk個の単語を選択する処理である。以下、この手法を第1手法と呼ぶ。より一般的に言い換えれば、第1手法は、属性ごとに、その属性を有する対象データを調べ、対象データとの関係が所定の基準を満たす属性を集計する手法である。
他の一つは、指定文書ごとに、その指定文書に含まれる単語を調べ、最も多くの指定文書に含まれる単語から降順にk個の単語を選択する処理である。以下、この手法を第2手法と呼ぶ。より一般的に言い換えれば、第2手法は、対象データごとに、その対象データが有する属性を調べ、対象データとの関係が所定の基準を満たす属性を集計する手法である。
本実施形態において、第1手法の処理は、DtoKインデックスの単語間に設けられたリンクを辿ることによって行われる。集計処理部130の動作の詳細については後述する。
また、集計処理部130は、出力候補保持部131を有している。出力候補保持部131には、集計処理部130による集計処理の過程で取得される、集計結果として出力する単語の候補が保持される。すなわち、集計処理部130は、第1手法または第2手法による処理において、集計対象となる個々の単語に対して、集計結果として出力する単語に該当するか否かを順次判断する。そして、集計結果として出力する単語に該当すると判断した単語を、出力候補保持部131に保持させる。言い換えれば、出力候補保持部131に保持される単語は、集計処理部130による集計処理の実行途中における、既に処理の済んだ単語である。集計処理が完了した後、集計処理部130は、出力候補保持部131に保持されている単語を、集計結果として出力する。
判定部140は、集計処理部130による集計処理を第1手法と第2手法のどちらで行うかを判定する。上記の第1手法による処理は、集計対象である単語の種類が多い場合、多大な処理時間を要する。一方、第2手法による処理は、集計処理の対象である文書の数が多い場合、多大な処理時間を要する。そこで、判定部140は、集計処理部130による集計処理が効率良く実行されるように、第1手法と第2手法のどちらで集計処理を行うかを決定する。なお、具体的な決定方法は、特に限定しない。例えば、集計処理の対象である文書の数が予め設定された閾値よりも多い場合に第1手法により集計処理を実行すると決定し、文書の数が閾値以下である場合に第2手法により集計処理を実行すると決定しても良い。また、第1手法で集計処理を行う場合に要する処理時間と、第2手法で集計処理を行う場合に要する処理時間とを予想し、予想される処理時間の短い方の手法により集計処理を行うと決定しても良い。
インデックス更新部150は、インデックス記憶部120に記憶されているインデックスを更新する。具体的には、インデックス更新部150は、文書DB200の更新(文書の追加または削除)に応じて、追加された文書に対応するDtoKインデックスを追加したり、削除したりする。また、インデックス更新部150は、DtoKインデックスの更新に伴い、DtoKインデックスを管理するためのDtoKリスト(後述)も更新する。また、インデックス更新部150は、新たにDtoKインデックスを追加する更新処理を繰り返すことにより、インデックス記憶部120に記憶されるDtoKインデックス群を作成する。インデックス更新部150による更新処理の詳細については後述する。
<インデックスの構成>
図2は、本実施形態のインデックス記憶部120に記憶されるインデックスの構成例を示す図である。図2に示すように、本実施形態では、単語リスト121と、文書DB200に格納されている文書ごとのDtoKインデックス122とが用意される。言い換えれば、このDtoKインデックス122は、文書(対象データ)ごとに作成された、文書に含まれる単語(対象データが有する属性)のリスト(第1リスト)である。なお、図2に示す例では、n個の文書に対するDtoKインデックス122が存在し、最後に文書DB200に格納された文書(最も新しい文書)から順に、(1)〜(n)の枝番を付している。すなわち、符号122(n)は、n個の文書の中で最初に文書DB200に格納された文書(最も古い文書)に対するDtoKインデックス122であり、符号122(1)は、最後に文書DB200に格納された文書に対するDtoKインデックス122である。すなわち、DtoKインデックス122は、最初に作成されたDtoKインデックス122を最後尾として、作成された順に並ぶ。
また、特に図示しないが、インデックス記憶部120は、DtoKインデックス122を図2に示す枝番の順番で管理するためのDtoKリストを記憶している。このDtoKリストは、DtoKインデックス122の識別情報di(i:1≦i≦n)を添え字「i」の昇順に並べて登録している。したがって、DtoKリストにおいて、先頭のDtoKインデックス122の識別情報はd1であり、最後のDtoKインデックス122の識別情報はdnである。また、識別情報diの添え字「i」は、図2に示したDtoKインデックス122の枝番(1)〜(n)に対応している。集計処理部130は、DtoKリストから各DtoKインデックス122(1)〜122(n)へランダム・アクセスが可能である。また、DtoKリストは、リストの先頭と終端に対して、エントリ(要素)の追加および削除が可能なリスト構造である。このようなリストは、例えば、Java(登録商標)のjava.util.LinkedListにより実現される。
単語リスト121は、文書DB200に格納されている文書に含まれる全ての単語の識別情報のリスト(第2リスト)である。この単語リスト121には、各単語に関して、その単語の識別情報、その単語を含む文書の数(以下、出現文書数と呼ぶ)、その単語に関するリンク先の情報が登録される。リンク先の情報については後述する。また、単語リスト121は、各単語の識別情報に関してランダム・アクセスが可能であり、かつ、出現文書数に関してソート順を保持するマップ構造である。このようなリスト(マップ)は、例えば、Javaのjava.util.TreeMapにより実現される。
図2に示す例では、単語リスト121には、m個(識別情報「1」〜「m」)の単語が収録されている。単語リスト121に収録された単語は、最も多くの文書に含まれる単語から降順に並べられている。言い換えれば、単語リスト121において、対象データの属性である各単語は、対象データである文書全体における個々の文書に出現する頻度の降順にソートされている。なお、文書DB200が更新されて文書が追加された場合、追加された文書にのみ含まれる単語が存在するならば、その単語に関するエントリが、単語リストの末尾に追加される。すなわち、図2に示す単語リスト121においては、識別情報「m」のエントリの後に、識別情報「m+1」、「m+2」、……、というようにエントリが追加されていく。
DtoKインデックス122は、文書DB200に格納されている文書ごとに作成された、個々の文書に含まれる単語の情報を参照するインデックスである。DtoKインデックス122には、対応する文書に含まれる各単語に関して、その単語の識別情報と、その単語に付与された点数と、その単語に関するリンク先の情報が登録される。リンク先の情報については後述する。単語に付与される点数は、任意に定義し、設定して良い。例えば、TF−IDF(Term Frequency − Inverse Document Frequency)による重みの値などを点数として用いることができる。本実施形態では、各文書における、その単語の出現数を点数とする。また、DtoKインデックス122に収録される単語は、この点数の値が最も大きい単語から降順に並べられている。
本実施形態において、単語リスト121および各DtoKインデックス122(1)〜122(n)に登録されている各単語は、同一の単語どうしの間にリンクが張られている。本実施形態では、単語リスト121に登録されている識別情報を始点として、DtoKインデックス122の枝番の順(すなわち、新しい文書から古い文書へ向かう順)にしたがってリンクが張られる。言い換えれば、属性である単語の間のリンクは、対象データである文書ごとのDtoKインデックス122(1)〜122(n)の順序に基づく特定の順序で張られる。また、枝番で次のDtoKインデックス122に同一の単語が無い場合は、枝番がより後のDtoKインデックス122であって同一の単語を含むもののうち、直近のDtoKインデックス122に含まれる単語に対してリンクが張られる。
具体的に、識別情報「1」の単語(以下、単語「1」と記す)について、図2を参照して設定されるリンクを説明する。単語「1」のリンクは、まず、単語リスト121の単語「1」から、DtoKインデックス122(1)の単語「1」へ張られている。そして、DtoKインデックス122(1)の単語「1」から、DtoKインデックス122(2)の単語「1」へ張られている。以下、図示は省略するが、DtoKインデックス122の枝番の順にしたがって、単語「1」間のリンクが張られている。
ただし、ある文書が単語「1」を含まない場合、その文書のDtoKインデックス122を飛ばして、より後方のDtoKインデックス122に対してリンクが設定される。例えば、図示しないDtoKインデックス122(3)に対応する文書に単語「1」が含まれていない場合を考える。この場合、DtoKインデックス122(2)の単語「1」からのリンクは、DtoKインデックス122(3)を飛ばして、DtoKインデックス122(4)の単語「1」へ張られる。同様に、DtoKインデックス122(4)に対応する文書にも単語「1」が含まれていない場合、DtoKインデックス122(2)の単語「1」からのリンクは、DtoKインデックス122(5)の単語「1」へ張られる。
図2に示す例では、識別情報「2」の単語は、DtoKインデックス122(1)に対応する文書に含まれていない。したがって、識別情報「2」の単語(以下、単語「2」と記す)のリンクは、DtoKインデックス122(1)を飛ばして、単語リスト121の単語「2」からDtoKインデックス122(2)の単語「2」へ張られている。
したがって、本実施形態によるインデックスの単語間のリンクにおいて、DtoKインデックス122(n)に含まれる各単語は、その単語に関するリンクの終端となる。そして、DtoKインデックス122(n)に含まれていない各単語に関しては、DtoKインデックス122(n)よりも前方のDtoKインデックス122(1)〜122(n−1)の何れかにリンクの終端が存在する。
本実施形態によるインデックスの単語間のリンクは、既存の種々の手段により設定して良い。一例としては、単語リスト121および各DtoKインデックス122(1)〜122(n)における各単語のエントリに、リンク先のDtoKインデックス122およびエントリを指定する情報を記述することによって実現される。他の一例としては、単語リスト121および各DtoKインデックス122(1)〜122(n)における各単語のエントリに、他の文書のDtoKインデックス122に含まれている同一の単語のエントリへのポインタを記述することによって実現される。
<集計処理部の動作>
集計処理部130は、集計処理の対象として指定された指定文書全体における出現頻度の高い単語を特定し集計する処理を、第1手法または第2手法の一方により行う。第1手法は、集計対象(集計される属性)の単語ごとに、その単語を含む指定文書の数を調べ、最も多くの指定文書に含まれる単語から降順にk個の単語を選択する処理である。また、第2手法は、指定文書ごとに、その文書に含まれる単語を調べ、最も多くの文書に含まれる単語から降順にk個の単語を選択する処理である。
ここで、第2手法は、従来のDtoKインデックスを用いた既存の集計処理と同様である。本実施形態においても、図2を参照して説明したDtoKインデックス122を用いて従来と同様の処理を行うことができる。すなわち、集計処理部130は、まず、指定文書のDtoKインデックス122に基づいて、各指定文書に含まれる単語のリストを作成する。そして、集計処理部130は、作成したリストに基づき、最も多くの文書に含まれる単語から降順にk個の単語を選択する。
一方、第1手法は、従来技術におけるKtoDインデックスを用いた既存の集計処理と同様の考え方による処理である。ただし、本実施形態では、KtoDインデックスを用いず、図2を参照して説明したDtoKインデックス122における単語間のリンクを利用して処理を行う。
図3および図4は、第1の手法により集計処理を行う場合の集計処理部130の動作を示すフローチャートである。集計処理部130は、単語リスト121に収録された単語に対する処理を、例えば、識別情報「1」の単語から順に処理対象として着目して行う。すなわち、集計処理部130は、まず、未処理の単語が残っているか否かを判断する(S301)。そして、未処理の単語がある場合は(S301でYes)、集計処理部130は、未処理の単語から処理対象の単語(以下、対象単語と呼ぶ)を選択する(S302)。ここで、対象単語として選択される単語は、例えば、未処理の単語のうちで識別情報の値が最も小さい単語である。単語リスト121に収録された単語は、最も多くの文書に含まれる単語から降順に並べられている。したがって、識別情報の値が最も小さい単語は、未処理の単語のうちで最も多くの文書に含まれる単語である。
次に、集計処理部130は、出力候補保持部131に保持されている処理済みの単語(以下、処理済み単語と呼ぶ)の数が集計数のk個か否かを判断する(S303)。そして、処理済み単語の数がk個であれば(S303でYes)、集計処理部130は、対象単語の出現文書数「g」を取得する(S304)。この出現文書数「g」は、文書DB200に格納されている文書全体のうち、対象単語を含む文書の数である。
次に、集計処理部130は、対象単語の出現文書数「g」と、出力候補保持部131に保持されている各処理済み単語の出現文書数「h1」とを比較する(S305)。ここで、処理済み単語の出現文書数「h1」は、その処理済み単語を含む指定文書の数である。すなわち、処理済み単語の出現文書数「h1」は、文書DB200に格納されている文書全体のうち、その処理済み単語を含み、かつ、集計処理の対象として指定された文書の数である。後述するように、処理済み単語の出現文書数は、出力候補保持部131に保持されている。対象単語の出現文書数「g」が何れかの処理済み単語の出現文書数「h1」よりも大きい場合(S306でYes)、集計処理部130は、この対象単語に関して、DtoKインデックス122のリンクを辿って、この対象単語を含む文書のリストを取得する(S307)。
次に、集計処理部130は、取得したリストに含まれる文書のうち、絞り込み条件を満足する文書(指定文書)の数を算出する(S308)。そして、集計処理部130は、算出された指定文書の数「h2」と、各処理済み単語の出現文書数「h1」とを比較する(S309)。指定文書数「h2」が何れかの処理済み単語の出現文書数「h1」よりも大きい場合(S310でYes)、集計処理部130は、対象単語および処理済み単語のうち、出現文書数の多い方からk個を選択する。そして、集計処理部130は、選択した各単語と、その単語の出現文書数とを対応付けて、出力候補保持部131に記憶させる。これにより、集計結果として出力する単語の候補である処理済み単語が更新される(S311)。なお、処理済み単語の数の上限はk個なので、今回の処理の対象単語が処理済み単語に追加されたことに伴い、更新前の処理済み単語のうち、最も出現文書数の少ない単語の情報が出力候補保持部131から消去される。この後、集計処理部130の処理は、S301に戻る。そして、未処理の単語が残っていれば(S301でYes)、S302以降の処理が行われる。
全ての処理済み単語の出現文書数「h1」が指定文書数「h2」以上であった場合(S310でNo)、今回の処理の対象単語は、処理済み単語に追加されない。したがって、出力候補保持部131に記憶された処理済み単語は更新されることなく、集計処理部130の処理は、S301に戻る。そして、未処理の単語が残っていれば(S301でYes)、S302以降の処理が行われる。
ここで、S303において、処理済み単語の数が集計数k個に達していない場合を考える(S303でNo)。この場合、今回の処理の対象単語は、必ず、集計結果として出力する単語の候補となる。したがって、集計処理部130は、この対象単語に関して、DtoKインデックス122のリンクを辿って、この対象単語を含む文書のリストを取得する(S313)。そして、集計処理部130は、取得したリストに含まれる文書のうち、絞り込み条件を満足する文書(指定文書)の数を算出する(S314)。この後、集計処理部130は、対象単語と算出した指定文書の数とを対応付けて、出力候補保持部131に記憶させる。これにより、集計結果として出力する単語の候補である処理済み単語が更新される(S311)。なお、この場合は、更新後の処理済み単語の数はk個以下なので、何れの処理済み単語も、出力候補保持部131から消去されない。この後、集計処理部130の処理は、S301に戻る。そして、未処理の単語が残っていれば(S301でYes)、S302以降の処理が行われる。
一方、S301において、未処理の単語が残っていなければ(S301でNo)、全ての単語に対して上記の処理が済んだので、集計処理部130は、出力候補保持部131に記憶されているk個の処理済み単語を、集計結果として出力し(S312)、処理を終了する。
また、S306において、全ての処理済み単語の出現文書数「h1」が対象単語の出現文書数「g」以上であった場合を考える(S306でNo)。この場合、単語リスト121に収録された単語は、最も多くの文書に含まれる単語から降順に並べられているため、今回よりも後の処理において対象単語となる単語の出現文書数が何れかの処理済み単語の出現文書数「h1」よりも大きくなることはない。すなわち、今回よりも後の処理において処理済み単語が更新されることはない。したがって、集計処理部130は、出力候補保持部131に記憶されているk個の処理済み単語を、集計結果として出力し(S312)、処理を終了する。
このように、S305、S306に示す処理によれば、単語リスト121に収録された全ての単語に対して処理を行っていない段階でも、処理済み単語が更新される可能性が無くなった場合に、集計処理を終了する。これにより、S301〜S311の処理の繰り返し回数を、単語リスト121に収録された単語の数よりも少なく抑えることができる。
以上のように、本実施形態は、収録した単語間にリンクを設定したDtoKインデックス122を用いて、第1手法による処理および第2手法による処理のどちらも実行できる。したがって、第1手法による処理を行うためにKtoDインデックスを用意する場合と比較して、インデックスを保持するために必要なメモリ領域(記憶容量)を小さく抑えることができる。
なお、単にインデックスを保持するために必要なメモリ領域(記憶容量)を削減するのであれば、適当な圧縮方式によりインデックスをデータ圧縮してデータサイズを小さくすることが可能である。しかし、文書DB200の更新(文書の追加または削除)に応じてデータ圧縮されたインデックスを更新することは困難である。そのため、文書DB200が更新された場合は、インデックス自体を作成し直し、改めてデータ圧縮することが必要となる。これに対し、本実施形態では、限定的ではあるが、後述のように、文書DB200の更新に応じてDtoKインデックス122を更新可能としながら、上記のようにインデックスを保持するために必要なメモリ領域(記憶容量)の削減を実現している。
<DtoKインデックスの作成および更新>
本実施形態において、文書DB200が更新されると、これに伴って、インデックス記憶部120に記憶された単語リスト121およびDtoKインデックス122も更新される。単語リスト121に関しては、文書の追加または削除により、収録している各単語を含む文書の数が変わる。そこで、本実施形態の集計システム100のインデックス更新部150は、例えば、文書DB200が更新される度に、単語リスト121に収録している単語をソートし直す。また、本実施形態のインデックス更新部150は、追加された文書にのみ含まれる単語が存在するならば、その単語の識別情報を、単語リストの末尾に追加することにより、単語リスト121を更新する。
次に、DtoKインデックス122の作成および更新について説明する。DtoKインデックス122の作成は、一つの文書に対応する新たなDtoKインデックス122を追加する更新処理を、文書DB200に格納されたn個の文書に対して実行することにより行われる。
図5は、DtoKインデックス122の作成処理の手順を示すフローチャートである。図5に示すように、インデックス更新部150は、まず、文書DB200に格納されている文書のうち、未処理の(DtoKインデックス122の作成が行われていない)文書があるか否かを調べる(S401)。未処理の文書があれば(S401でYes)、インデックス更新部150は、未処理の文書の一つを取得する(S402)。そして、インデックス更新部150は、取得した文書を処理対象として、新規文書追加処理を行う(S403)。以上の処理を文書DB200に格納されている各文書に対して行い、未処理の文書が無くなったならば(S401でNo)、インデックス更新部150は、処理を終了する。
図6は、新規文書追加処理の手順を示すフローチャートである。図6に示すように、インデックス更新部150は、まず、処理対象として取得した一つの文書に対応するDtoKインデックス122を作成する(S501)。以下、作成されたDtoKインデックス122を、DtoKリストに登録される各DtoKインデックス122の識別情報diを用いてインデックスdiと記載する(図6のS501でもインデックスdiと記載)。また、インデックスdiに対応する文書を文書diと記載する。インデックス更新部150は、作成したインデックスdiをDtoKリストの先頭に追加する(S502)。
次に、インデックス更新部150は、インデックスdiに登録されている単語(文書diに含まれる単語)のうち、未処理の(リンクの設定が更新されていない)単語が有るか否かを調べる(S503)。未処理の単語が有る場合(S503でYes)、インデックス更新部150は、未処理の単語の一つを選択し(S504)、選択した単語が単語リスト121に登録されているか否かを調べる(S505)。そして、選択した単語が登録されているならば(S505でYes)、インデックス更新部150は、単語リスト121におけるその単語のエントリに登録されているリンク先の情報を、処理中のインデックスdiにおけるその単語のエントリを指すように更新する(S507)。
一方、選択した単語が単語リスト121に登録されていない場合(S505でNo)、インデックス更新部150は、選択した単語のエントリを単語リスト121に追加する(S506)。そして、インデックス更新部150は、単語リスト121において作成したエントリのリンク先の情報を、処理中のインデックスdiにおけるその単語のエントリを指すように更新する(S507)。
次に、インデックス更新部150は、インデックスdiにおけるその単語のエントリに登録されているリンク先の情報を、DtoKリストにおいて後方かつ直近の他のDtoKインデックス122におけるその単語のエントリを指すように更新する(S508)。
インデックス更新部150は、以上のS503〜S508の処理を、インデックスdiに含まれる各単語に対して行い、未処理の単語が無くなったならば(S503でNo)、インデックス更新部150は、処理を終了する。
以上、DtoKインデックス122を追加する処理について説明した。次に、インデックス記憶部120に記憶されているDtoKインデックス122を削除する処理について説明する。図2を参照して説明した本実施形態のDtoKインデックス122は、単語間にリンクが設定されている。そのため、DtoKインデックス122を削除する場合は、削除対象のDtoKインデックス122における単語のリンクを設定し直す必要がある。したがって、任意のDtoKインデックス122を削除することは容易ではない。しかし、DtoKリストの終端に対応する(すなわち、最も古い)DtoKインデックス122(識別情報dn)については、削除することが容易である。これは、DtoKインデックス122の全ての単語が、その単語に関するリンクの終端だからである。この場合、インデックス記憶部120から識別情報dnのDtoKインデックス122(図2に示す例では、DtoKインデックス122(n))を削除し、DtoKリストから終端のエントリを削除すれば良い。
<インデックスの実装例>
図7および図8は、Javaプログラミング言語を用いた、本実施形態によるDtoKインデックス122の実装例を示す図である。図7は、コードの例を示す図であり、図7(a)はDtoKインデックス122のエントリを設定するコード、図7(b)はDtoKリストを生成するコード、図7(c)は新しいDtoKインデックス122を追加するコード、図7(d)はDtoKインデックス122を削除するコードである。図8は、図7に示すコードにより設定されたリンクの様子を示す図である。
図7に示すように実装した場合、DtoKインデックス122の単語(エントリ)間のリンクは、リンク先のDtoKインデックス122およびエントリの位置を数値で指定することにより実現される。図7(a)に示す例では、リンク先のDtoKインデックス122は、「nextDocId」の値で指定される。ここで、DocIdとは、後述の文書IDである。また、リンク先のエントリの位置は、「nextEntryIndex」の値で指定される。また、「keywordId」は、各単語の識別情報である。そして、「score」は、各単語に付与された点数である。また、図7(b)に示すように、Javaの標準ライブラリに存在するクラスである「java.util.TreeMap」により、DtoKリスト「DLList」が生成される。このDtoKリスト「DLList」は、DtoKインデックス122(図7ではDL[i]と記載)の全体を識別情報diの昇順(DL[1]〜DL[n])に格納する。
また、図7(c)に示す例では、DtoKインデックス122が追加される場合に、追加されるDtoKインデックス122に対応する文書の識別情報(文書ID)が設定される。この文書IDは、DtoKリスト「DLList」に登録されるDtoKインデックス122の識別情報diとは別に設定される。例えば、それまでに使用した文書IDの最大値を記憶しておき、その最大値よりも1大きい値を新たに設定する文書IDの値とする。このようにすれば、図7(d)に示すように、文書IDが最小値であるDtoKインデックス122を削除することにより、DtoKリスト「DLList」の終端のエントリに対応するDtoKインデックス122が削除される。
図8に示す例では、識別情報「200」の単語に関して、DtoKインデックス122(3)からDtoKインデックス122(5)へ設定されたリンクが示されている。図示の例において、DtoKインデックス122(3)の文書IDは「10」であり、DtoKインデックス122(5)の文書IDは「6」である。また、DtoKインデックス122(3)において、識別情報「200」の単語は、2番目のエントリ「Entry[1]」に登録されている。DtoKインデックス122(3)のエントリ「Entry[1]」を参照すると、識別情報「200」の単語の点数は「1.5」である。また、リンク先は、文書ID「6」のDtoKインデックス122のエントリ「Entry[2]」となっている。したがって、リンク先である、DtoKインデックス122(5)の3番目のエントリ「Entry[2]」には、識別情報「200」の単語が登録されている。
図8に示す例において、文書ID「6」の文書が削除された場合を考える。DtoKリスト「DLList」およびDtoKインデックス122が更新されると、文書ID「6」のDtoKインデックス122(5)が削除される。これにより、DtoKリスト「DLList」に文書ID「6」のDtoKインデックス122(5)が存在しなくなる。そのため、DtoKインデックス122(3)のエントリ「Entry[1]」からDtoKインデックス122(5)のエントリ「Entry[2]」へのリンクを辿れなくなる。そして、識別情報「200」の単語に関するリンクは、DtoKインデックス122(3)のエントリ「Entry[1]」が終端となる。
<インデックスの他の構成および実装例>
以上の実施形態において、単語リスト121および各DtoKインデックス122(1)〜122(n)に登録されている単語間のリンクは、単語リスト121に登録されている識別情報を始点として、識別情報diの順にしたがって設定した。これに対し、DtoKインデックス122の実装によっては、識別情報diの降順(すなわち、古い文書から新しい文書へ向かう順)にリンクを設定することが望ましい場合がある。
図9および図10は、Javaプログラミング言語を用いた、本実施形態によるDtoKインデックス122の他の実装例を示す図である。図9は、DtoKインデックス122のエントリを設定するコードの例を示す図である。図10は、図9に示すコードにより設定されたリンクの様子を示す図である。なお、DtoKリストを生成するコード、新しいDtoKインデックス122を追加するコード、DtoKインデックス122を削除するコードは、図7(b)〜(d)に示したコードと同様とする。
図9に示すように実装した場合、DtoKインデックス122の単語(エントリ)間のリンクは、リンク先のエントリをポインタにより直接指し示すことにより実現される。図9に示す例では、リンク先のDtoKインデックス122のエントリが、JavaやC/C++等のプログラミング言語でサポートされているポインタ(または同等の機能)で指定される。図示の例では、「Entry next」にポインタが記録される。このように、ポインタを用いてリンクが設定される場合、図7および図8に示した実装例とは反対の向きにリンクを設定する。すなわち、ある単語に関するリンクは、その単語が出現する最も古い(識別情報diの値が最も大きい)DtoKインデックス122のエントリを始点とし、単語リスト121におけるその単語のエントリを終端とする。
また、この実装例では、単語リスト121のエントリから、各単語が出現する最も古いDtoKインデックス122のエントリへ向かうリンク(以下、逆向きリンクと呼ぶ)も設定される。この逆向きリンクは、集計処理部130が第1手法による集計処理を行う場合に、単語のリンクを辿るために用いられる。すなわち、集計処理部130は、逆向きリンクにより、通常のリンクの始点を見つける。
図10に示す例では、識別情報「200」の単語に関して、DtoKインデックス122(5)からDtoKインデックス122(3)へ、図8に示した例とは反対の向きに設定されたリンクが示されている。図示の例において、DtoKインデックス122(3)の文書IDは「10」であり、DtoKインデックス122(5)の文書IDは「6」である。また、DtoKインデックス122(5)において、識別情報「200」の単語は、3番目のエントリ「Entry[2]」に登録されている。DtoKインデックス122(5)のエントリ「Entry[2]」を参照すると、識別情報「200」の単語の点数は「1.5」である。そして、リンク先(DtoKインデックス122(3)のエントリ「Entry[1]」)へのポインタが設定されている。したがって、リンク先である、DtoKインデックス122(3)のエントリ「Entry[1]」には、識別情報「200」の単語が登録されている。
図11は、図9および図10に示す実装例によるインデックスの構成を示す図である。図11に示す構成例は、図2に示した構成例と同様に、単語リスト121と、文書DB200に格納されている文書ごとのDtoKインデックス122とを含む。そして、n個の文書に対するDtoKインデックス122が存在し、最後に文書DB200に格納された文書(最も新しい文書)から順に、(1)〜(n)の枝番を付している。
図11に示すインデックス構成では、単語ごとに、その単語が出現する最も古いDtoKインデックス122のエントリから単語リスト121におけるその単語のエントリへ至る通常のリンクと、逆向きリンクとが張られている。図11においては、通常のリンクを実線で示し、逆向きリンクを破線で示している。
具体的に、識別情報「1」の単語(単語「1」)について、図11に示すリンクを説明する。単語「1」の通常のリンクは、まず、単語「1」が出現する最も古いDtoKインデックス122(n)のエントリから、DtoKインデックス122(n−1)のエントリへ張られている。以下、図示は省略するが、単語「1」間のリンクは、DtoKインデックス122の枝番の降順にしたがって張られ、DtoKインデックス122(2)のエントリに至っている。そして、単語「1」のリンクは、DtoKインデックス122(2)のエントリから、DtoKインデックス122(1)のエントリを経て、単語リスト121における単語「1」のエントリを終端としている。
なお、単語「1」を含まない文書のDtoKインデックス122を飛ばしてリンクが張られることは、図2に示した構成例と同様である。例えば、図11において、単語「2」のリンクは、DtoKインデックス122(1)を飛ばして、DtoKインデックス122(2)のエントリから単語リスト121における単語「2」のエントリへ張られている。すなわち、単語「2」は、DtoKインデックス122(1)の文書には出現しない。また、単語「3」のリンクは、DtoKインデックス122(n)のエントリからDtoKインデックス122(2)のエントリへ張られている。すなわち、単語「3」は、図示しないDtoKインデックス122(3)からDtoKインデックス122(n−2)の文書には出現しない。
また、図11に示すインデックス構成において、ある単語に関する通常のリンクの始点は、その単語が出現する最も古いDtoKインデックス122であり、必ずしも全体で最も古いDtoKインデックス112(n)ではない。例えば、図11の例において、単語「2」に関するリンクを考える。単語「2」のリンクの始点は、DtoKインデックス122(n)およびDtoKインデックス122(n−1)のどちらにも存在しない。したがって、単語「2」のリンクの始点は、DtoKインデックス122(n−1)よりも新しい何れかのDtoKインデックス122である。
また、単語「1」の逆向きリンクは、単語リスト121における単語「1」のエントリから、単語「1」が出現する最も古いDtoKインデックス122(n)のエントリへ張られている。単語「3」の逆向きリンクも同様である。これに対し、単語「2」の逆向きリンクは、単語「2」が出現する最も古いDtoKインデックス122が図示されていないため、記載を省略している。すなわち、単語「2」が出現する最も古いDtoKインデックス122は、DtoKインデックス122(3)〜DtoKインデックス122(n−2)の何れかである。
図9〜図11を参照して説明した実装例において、新たなDtoKインデックス122を追加する更新については、リンクの方向が反対方向になることを除き、図6に示した手順と同様の手順で実行することができる。リンクの設定に関しては、図6のS505で、選択した単語が単語リスト121に登録されているならば、(S505でYes)、インデックス更新部150は、追加されたDtoKインデックス122におけるその単語のエントリのポインタを、単語リスト121におけるその単語のエントリを指すように更新する。また、インデックス更新部150は、単語リスト121におけるその単語のエントリから逆向きリンクおよび通常のリンクを辿り、現在、単語リスト121におけるその単語のエントリを指すポインタを有するDtoKインデックス122のエントリを検出する。そして、インデックス更新部150は、検出したDtoKインデックス122のエントリのポインタを、追加したDtoKインデックス122におけるその単語のエントリを指すように更新する。
一方、図6のS505で、選択した単語が単語リスト121に登録されていない場合は(S505でNo)、インデックス更新部150は、選択した単語のエントリを単語リスト121に追加する。そして、インデックス更新部150は、追加したDtoKインデックス122におけるその単語のエントリのポインタを、単語リスト121におけるその単語のエントリを指すように更新してリンクを設定する。また、インデックス更新部150は、単語リスト121におけるその単語のエントリのポインタを、追加したDtoKインデックス122におけるその単語のエントリを指すように更新して逆向きリンクを設定する。
これに対し、DtoKインデックス122を削除する更新の場合、単にDtoKインデックス122を削除するだけでなく、削除対象のDtoKインデックス122に収録されている各単語に関して設定されたリンクを更新する。削除対象である最も古いDtoKインデックス122に収録されている各単語は、その単語に関する通常のリンクの始点であり、かつ、その単語に関する逆向きリンクのリンク先である。そのため、DtoKインデックス122を削除した後に、これらのリンクおよび逆向きリンクを正しく辿れるように、リンクを更新することが必要である。
図12は、図9〜図11の実装例において、DtoKインデックス122を削除する処理の手順を示すフローチャートである。図12に示すように、インデックス更新部150は、まず、削除対象のDtoKインデックス122(n)に登録されている単語のうち、未処理の(リンクの設定が更新されていない)単語があるか否かを調べる(S1101)。未処理の単語がある場合(S1101でYes)、インデックス更新部150は、未処理の単語の一つを選択し(S1102)、選択した単語に対して張られている逆向きリンクのリンク先を更新する(S1103)。
具体的には、インデックス更新部150は、削除対象のDtoKインデックス122(n)における選択した単語のエントリに登録されている通常のリンクのリンク先へのポインタの情報を取得する。このポインタにより示されるリンク先のDtoKインデックス122は、削除対象のDtoKインデックス122(n)が削除された後に、選択した単語が出現する最も古いDtoKインデックス122となる。そして、インデックス更新部150は、単語リスト121における選択した単語に関する逆向きリンクのリンク先へのポインタを、取得したポインタの情報に基づいて更新する。
インデックス更新部150は、以上のS1101〜S1103の処理を、削除対象のDtoKインデックス122(n)に登録されている各単語に対して行う。これにより、DtoKインデックス122(n)の各単語に対して設定されていた逆向きリンクが、DtoKインデックス122(n)の削除後に各単語が出現する最も古いDtoKインデックス122へ、それぞれ設定し直される。そして、未処理の単語が無くなったならば(S1101でNo)、インデックス更新部150は、削除対象のDtoKインデックス122(n)を削除して(S1104)、処理を終了する。
図13は、図11に示したインデックス構成において、DtoKインデックス122(n)を削除した様子を示す図である。図13を参照すると、DtoKインデックス122(n)を削除したことにより、単語「1」に関する通常のリンクの始点(逆向きリンクのリンク先)は、DtoKインデックス122(n−1)における単語「1」のエントリとなっている。また、単語「2」に関する通常のリンクの始点(逆向きリンクのリンク先)は、DtoKインデックス122(2)における単語「2」のエントリとなっている。
<ハードウェア構成例>
図14は、本実施形態の集計システム100を構成するのに好適なハードウェア構成例を示す図である。ここでは、コンピュータにより構成する場合について説明する。図14に示すコンピュータは、演算手段であるCPU(Central Processing Unit)10aと、主記憶手段であるメモリ10cを備える。また、外部デバイスとして、磁気ディスク装置(HDD:Hard Disk Drive)10g、ネットワーク・インターフェイス10f、ディスプレイ装置を含む表示機構10d、キーボードやマウス等の入力デバイス10i等を備える。
図14に示す構成例では、メモリ10cおよび表示機構10dは、システム・コントローラ10bを介してCPU10aに接続されている。また、ネットワーク・インターフェイス10f、磁気ディスク装置10gおよび入力デバイス10iは、I/Oコントローラ10eを介してシステム・コントローラ10bと接続されている。各構成要素は、システム・バスや入出力バス等の各種のバスによって接続される。
図14において、磁気ディスク装置10gにはOSのプログラムやアプリケーション・プログラムが格納されている。そして、これらのプログラムがメモリ10cに読み込まれてCPU10aに実行されることにより、集計システム100における集計処理部130、判定部140およびインデックス更新部150の各機能が実現される。また、メモリ10cや磁気ディスク装置10gにより、インデックス記憶部120が実現される。また、入力デバイス10iおよびプログラム制御されたCPU10aにより、入力受け付け部110が実現される。さらにまた、本実施形態では、文書DB200を磁気ディスク装置10gにより実現しても良い。なお、図14は、本実施形態の集計システム100を実現するのに好適なコンピュータのハードウェア構成を例示するに過ぎず、集計システム100の具体的構成は、図14に示す構成に限定されない。
以上、本実施形態について説明したが、本実施形態は、上記の具体的構成に限定されるものではない。本実施形態は、複数種類の属性を持つ対象データの集合中に出現する属性を、何らかの規則に基づいて各属性に付与された点数の高いものから順に所定個数求める集計処理に対して、広く適用できるものである。すなわち、本実施形態が適用される集計処理における対象データは、上記の処理対象として絞り込まれた文書には限定されない。また、本実施形態が適用される集計処理における属性は、各文書に含まれる単語に限定されない。その他、上記の実施形態に、種々の変更または改良を加えたものも、本発明の技術的範囲に含まれる。
100…集計システム、110…入力受け付け部、120…インデックス記憶部、121…単語リスト、122…DtoKインデックス、130…集計処理部、140…判定部、150…インデックス更新部

Claims (12)

  1. データを集計するシステムであって、
    集計処理の対象である対象データの識別情報から当該対象データが有する属性のリストである第1リストを指定するインデックスであって、当該対象データごとの当該第1リストは所定の順序で並び、当該第1リストの各要素が当該属性の情報を含む、当該インデックスと、複数の当該対象データが有する属性のリストである第2リストと、を記憶するインデックス記憶部と、
    前記属性ごとに当該属性を有する前記対象データを調べ、当該対象データとの関係が所定の基準を満たす属性を集計する集計処理を行う集計処理部と、を備え、
    前記第2リストの各属性に関して、前記対象データごとの前記第1リストの要素を順に辿るリンクが設定されており、
    前記集計処理部は、前記属性ごとに設定された前記リンクに基づき、当該属性を有する前記対象データを調べる、システム。
  2. 前記リンクは、前記対象データごとの前記第1リストの各要素が、当該要素に含まれるのと同一の前記属性の情報を含む最も近い後続の第1リストの要素を特定する情報を含むことにより、設定される、請求項1に記載のシステム。
  3. 前記第2リストの各属性は、複数の前記対象データにおける個々の対象データが当該属性を有する頻度の降順にソートされている、請求項1に記載のシステム。
  4. 前記対象データごとの前記第1リストの各要素は、当該要素が含む情報により特定される前記属性に対して付与された値をさらに含み、
    前記第1リストの各要素は、前記値に基づく順序でソートされている、請求項1に記載のシステム。
  5. 前記属性に対して付与された値は、当該属性と当該属性を有する前記対象データとの関係に基づく重み値であり、
    前記第1リストの各要素は、前記値の降順にソートされている、請求項4に記載のシステム。
  6. 前記対象データごとの前記第1リストは、最も古い第1リストを最後尾として作成された順に並び、新規に作成された第1リストを追加する場合は、第1リストの並びの先頭に配置され、かつ、新規に作成された当該第1リストの各要素に含まれる属性に関するリンクが更新される、請求項1に記載のシステム。
  7. 前記対象データごとの前記第1リストは、最も古い第1リストを最後尾として作成された順に並び、最も古い第1リストを削除する場合は、最後尾の第1リストが削除され、かつ、削除された当該第1リストの各要素に含まれる属性に関するリンクが更新される、請求項1に記載のシステム。
  8. データを集計するシステムであって、
    集計処理の対象である対象データごとに当該対象データが有する属性を登録したリストを含むインデックスを記憶するインデックス記憶部と、
    前記属性ごとに当該属性を有する前記対象データを調べ、当該対象データとの関係が所定の基準を満たす属性を集計する第1手法、および、前記対象データごとに当該対象データが有する前記属性を調べ、当該対象データとの関係が所定の基準を満たす属性を集計する第2手法のどちらで集計処理を行うかを判定する判定部と、
    前記判定部による判定に応じて前記第1手法および前記第2手法の一方により集計処理を行う集計処理部と、を備え、
    前記インデックスは、相異なる前記対象データが有する同一の前記属性どうしを関連付けており、
    前記集計処理部は、前記第1手法により集計処理を行う場合に、前記インデックスにおける同一の前記属性どうしの関連に基づき、当該属性を有する前記対象データを調べる、システム。
  9. データを集計する方法であって、
    集計処理の対象である対象データの識別情報から当該対象データが有する属性のリストである第1リストを指定するインデックスであって、当該対象データごとの当該第1リストは所定の順序で並び、当該第1リストの各要素が当該属性の情報を含む、当該インデックスと、複数の当該対象データが有する属性のリストである第2リストと、前記第2リストの各属性に関して、前記対象データごとの前記第1リストの要素を順に辿るリンク構造と、を記憶するインデックス記憶部と、
    前記属性の集計処理を行う集計処理部と、を備えるシステムにおいて、
    前記集計処理部が、
    前記属性ごとに設定された前記リンクに基づき、当該属性を有する前記対象データの数を調べるステップと、
    前記属性を、調べた対象データの数が多い上位の所定数の属性を集計し、集計結果を出力するステップと、
    を含む、方法。
  10. データを集計する方法であって、
    集計処理の対象である対象データごとに当該対象データが有する属性を登録したリストを含むインデックスを記憶するインデックス記憶部と、
    前記属性の集計処理を行う集計処理部と、
    前記集計処理部により行われる集計処理の手法を判定する判定部と、を備えるシステムにおいて、
    前記判定部が、前記属性ごとに当該属性を有する前記対象データを調べ、当該対象データとの関係が所定の基準を満たす属性を集計する第1手法、および、前記対象データごとに当該対象データが有する前記属性を調べ、当該対象データとの関係が所定の基準を満たす属性を集計する第2手法のどちらで集計処理を行うかを判定するステップと、
    前記判定部が前記第1手法により集計処理を行うと判定した場合に、前記集計処理部が、相異なる前記対象データが有する同一の前記属性どうしを関連付けてなる前記インデックスにおける同一の前記属性どうしの関連に基づき、当該属性を有する前記対象データを調べ、当該対象データとの関係が所定の基準を満たす属性を集計するステップと、
    前記判定部が前記第2手法により集計処理を行うと判定した場合に、前記集計処理部が、前記インデックスに基づき、各対象データが有する前記属性を調べ、当該対象データとの関係が所定の基準を満たす属性を集計するステップと、
    を含む、方法。
  11. コンピュータを、
    集計処理の対象である対象データの識別情報から当該対象データが有する属性のリストである第1リストを指定するインデックスであって、当該対象データごとの当該第1リストは所定の順序で並び、当該第1リストの各要素が当該属性の情報を含む、当該インデックスと、複数の当該対象データが有する属性のリストである第2リストと、を記憶するインデックス記憶手段と、
    前記属性ごとに当該属性を有する前記対象データを調べ、当該対象データとの関係が所定の基準を満たす属性を集計する集計処理を行う集計処理手段として機能させ、
    前記第2リストの各属性に関して、前記対象データごとの前記第1リストの要素を順に辿るリンクが設定されており、
    前記集計処理手段の機能として、前記属性ごとに設定された前記リンクに基づき、当該属性を有する前記対象データを調べる、プログラム。
  12. コンピュータを、
    集計処理の対象である対象データごとに当該対象データが有する属性を登録したリストを含み、相異なる前記対象データが有する同一の前記属性どうしを関連付けてなるインデックスを記憶するインデックス記憶手段と、
    前記属性ごとに当該属性を有する前記対象データを調べ、当該対象データとの関係が所定の基準を満たす属性を集計する第1手法、および、前記対象データごとに当該対象データが有する前記属性を調べ、当該対象データとの関係が所定の基準を満たす属性を集計する第2手法のどちらで集計処理を行うかを判定する判定手段と、
    前記判定手段による判定に応じて前記第1手法および前記第2手法の一方により集計処理を行う集計処理手段として機能させ、
    前記集計処理手段の機能として、前記第1手法により集計処理を行う場合に、前記インデックスにおける同一の前記属性どうしの関連に基づき、当該属性を有する前記対象データを調べる、プログラム。
JP2014255623A 2014-12-17 2014-12-17 データを集計するシステム、方法およびプログラム Expired - Fee Related JP6376534B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014255623A JP6376534B2 (ja) 2014-12-17 2014-12-17 データを集計するシステム、方法およびプログラム
US14/970,741 US10733218B2 (en) 2014-12-17 2015-12-16 System, method, and program for aggregating data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014255623A JP6376534B2 (ja) 2014-12-17 2014-12-17 データを集計するシステム、方法およびプログラム

Publications (2)

Publication Number Publication Date
JP2016115288A true JP2016115288A (ja) 2016-06-23
JP6376534B2 JP6376534B2 (ja) 2018-08-22

Family

ID=56129711

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014255623A Expired - Fee Related JP6376534B2 (ja) 2014-12-17 2014-12-17 データを集計するシステム、方法およびプログラム

Country Status (2)

Country Link
US (1) US10733218B2 (ja)
JP (1) JP6376534B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10885009B1 (en) * 2016-06-14 2021-01-05 Amazon Technologies, Inc. Generating aggregate views for data indices
US11294961B2 (en) * 2017-05-19 2022-04-05 Kanagawa University Information search apparatus, search program, database update method, database update apparatus and database update program, for searching a specified search target item associated with specified relation item
US11632380B2 (en) * 2020-03-17 2023-04-18 International Business Machines Corporation Identifying large database transactions
US11327980B2 (en) * 2020-04-21 2022-05-10 International Business Machines Corporation Cached updatable top-k index

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06103307A (ja) * 1992-09-18 1994-04-15 Hitachi Software Eng Co Ltd 構造型データベースにおける検索高速化方法
JP2001022787A (ja) * 1999-07-13 2001-01-26 Nippon Telegr & Teleph Corp <Ntt> 多言語インタラクティブ情報検索システム及び多言語インタラクティブ情報検索プログラムを記録した記録媒体
JP2001222555A (ja) * 2000-02-10 2001-08-17 Nippon Telegr & Teleph Corp <Ntt> 文書検索システムおよび文書検索のためのデータ構造を格納する記録媒体
US20070136274A1 (en) * 2005-12-02 2007-06-14 Daisuke Takuma System of effectively searching text for keyword, and method thereof

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5431410A (en) 1977-08-13 1979-03-08 Sumitomo Electric Industries Highhhardness sintered body and method of making same
US8838648B2 (en) * 2006-08-17 2014-09-16 International Business Machines Corporation Efficient discovery of keys in a database
US8180774B2 (en) * 2008-10-03 2012-05-15 Seomoz, Inc. Web-scale data processing system and method
JP5483166B2 (ja) 2009-07-02 2014-05-07 日本電気株式会社 文書検索装置、文書検索方法、及びプログラム
US8554801B2 (en) * 2009-07-10 2013-10-08 Robert Mack Method and apparatus for converting heterogeneous databases into standardized homogeneous databases
US20140372412A1 (en) * 2013-06-14 2014-12-18 Microsoft Corporation Dynamic filtering search results using augmented indexes
JP6103307B2 (ja) 2013-09-30 2017-03-29 株式会社Gsユアサ アルカリ蓄電池及びアルカリ蓄電池の製造方法
US9087090B1 (en) * 2014-07-31 2015-07-21 Splunk Inc. Facilitating execution of conceptual queries containing qualitative search terms

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06103307A (ja) * 1992-09-18 1994-04-15 Hitachi Software Eng Co Ltd 構造型データベースにおける検索高速化方法
JP2001022787A (ja) * 1999-07-13 2001-01-26 Nippon Telegr & Teleph Corp <Ntt> 多言語インタラクティブ情報検索システム及び多言語インタラクティブ情報検索プログラムを記録した記録媒体
JP2001222555A (ja) * 2000-02-10 2001-08-17 Nippon Telegr & Teleph Corp <Ntt> 文書検索システムおよび文書検索のためのデータ構造を格納する記録媒体
US20070136274A1 (en) * 2005-12-02 2007-06-14 Daisuke Takuma System of effectively searching text for keyword, and method thereof
JP2007156739A (ja) * 2005-12-02 2007-06-21 Internatl Business Mach Corp <Ibm> テキストからキーワードを検索する効率的なシステム、および、その方法

Also Published As

Publication number Publication date
US10733218B2 (en) 2020-08-04
JP6376534B2 (ja) 2018-08-22
US20160179981A1 (en) 2016-06-23

Similar Documents

Publication Publication Date Title
US11243993B2 (en) Document relationship analysis system
US11341419B2 (en) Method of and system for generating a prediction model and determining an accuracy of a prediction model
CN106897350B (zh) 引导渐进搜索系统和方法
JP6376534B2 (ja) データを集計するシステム、方法およびプログラム
JP6365195B2 (ja) 命令履歴分析プログラム、命令履歴分析装置、および、命令履歴分析方法
CN114329201B (zh) 深度学习模型的训练方法、内容推荐方法和装置
JPWO2019167282A1 (ja) 応答処理プログラム、応答処理方法、応答処理装置および応答処理システム
US20220360458A1 (en) Control method, information processing apparatus, and non-transitory computer-readable storage medium for storing control program
WO2012081165A1 (ja) データベース管理装置及びデータベース管理方法
CN115982100A (zh) 一种项目工程文件数据管理方法、系统及电子设备
JP6549173B2 (ja) 計算機システム及び文章データの検索方法
US11036710B2 (en) Scalable selection management
JP2019105942A (ja) コンテンツの提示順位を制御する装置、方法、及び、プログラム
JP2018181121A (ja) 分析装置、分析プログラム及び分析方法
CN109885551B (zh) 电子装置、元数据处理方法和计算机可读存储介质
JP6852002B2 (ja) データ検索方法、データ検索装置及びプログラム
CN106776772B (zh) 一种数据检索的方法及装置
JP2021033695A (ja) 計算機システム及び業務の支援方法
US20120192011A1 (en) Data processing apparatus that performs test validation and computer-readable storage medium
JP2016057954A (ja) 検索プログラム、検索方法及び情報処理装置
JP6884172B2 (ja) 計算機システム及び文書の評価方法
US10942969B2 (en) Non-transitory computer-readable storage medium, search control method, and search control apparatus
CN116108134A (zh) 一种基于知识管理的内容推荐方法、存储介质及设备
JP2019164504A (ja) 計算機システム及び文章データ管理方法
CN118013054A (zh) 文本搜索提速方法、装置、设备及存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170822

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180615

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

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20180626

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180717

R150 Certificate of patent or registration of utility model

Ref document number: 6376534

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees