JP5818740B2 - テキストデータストリームに含まれるアイテムの中から出現頻度の高いアイテムを特定する方法、装置及びコンピュータプログラム - Google Patents

テキストデータストリームに含まれるアイテムの中から出現頻度の高いアイテムを特定する方法、装置及びコンピュータプログラム Download PDF

Info

Publication number
JP5818740B2
JP5818740B2 JP2012094026A JP2012094026A JP5818740B2 JP 5818740 B2 JP5818740 B2 JP 5818740B2 JP 2012094026 A JP2012094026 A JP 2012094026A JP 2012094026 A JP2012094026 A JP 2012094026A JP 5818740 B2 JP5818740 B2 JP 5818740B2
Authority
JP
Japan
Prior art keywords
memory
item
identification information
stored
count number
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2012094026A
Other languages
English (en)
Other versions
JP2013222337A (ja
Inventor
ルディー・レイモンド・ハリー・プテラ
小柳 光生
光生 小柳
貴行 恐神
貴行 恐神
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
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 JP2012094026A priority Critical patent/JP5818740B2/ja
Priority to US13/799,951 priority patent/US9292439B2/en
Priority to DE102013205819.5A priority patent/DE102013205819B4/de
Priority to CN201310132171.5A priority patent/CN103377147B/zh
Publication of JP2013222337A publication Critical patent/JP2013222337A/ja
Application granted granted Critical
Publication of JP5818740B2 publication Critical patent/JP5818740B2/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/18Complex mathematical operations for evaluating statistical data, e.g. average values, frequency distributions, probability functions, regression analysis
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/02Capturing of monitoring data
    • H04L43/022Capturing of monitoring data by sampling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/16Threshold monitoring

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Operations Research (AREA)
  • Probability & Statistics with Applications (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Algebra (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Debugging And Monitoring (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明は、大量のテキストデータストリームに含まれる多数のアイテムの中から出現頻度の高いアイテムを効率良く特定する方法、装置及びコンピュータプログラムに関する。
アイテムが継続的に入力されるデータストリームに含まれるアイテムの出現頻度を近似的に特定する場合、通常はアイテムごとに出現した数をカウントして記憶する必要が生じるため、必要となるメモリ容量が膨大となる。そこで、メモリ効率を高めるアルゴリズムとして、例えば出現頻度が高いアイテムとそれ以外のアイテムとでメモリを2段に分ける近似計算手法であるロッシーカウンティング(Lossy Counting:以下、LC)が良く知られている(非特許文献1乃至3参照)。
一方、特許文献1乃至3では、LCを応用して、データストリームに含まれるアイテムの出現頻度に応じてメモリを2段階に分け、一定の出現頻度以下のアイテムをカウント対象から除外することによりメモリ使用量を削減する例が開示されている。メモリ構造を多段とすることにより、出現頻度の高いアイテムを特定する場合にメモリを効率的に使用することができる。
特開2004−240985号公報 特開2008−159047号公報 特開2004−164611号公報
ジー・エス・マンク(G.S.Manku)、ラジーブ モツワニ(Rajeev Motwani)、「データストリーム中の近似頻度カウント(Approximate Frequency Counts over Data Streams)」、VLDB 2002 ロング他(Rong et al.)、「記憶ロッシーカウンティング:効果的かつ正確な、頻度の高いアイテムの同定アルゴリズム(Mnemonic Lossy Counting:An efficient and accurate heavy−hitters identification algorithms)」、IPCCC2010 ディミトロプーロス他(Dimitropoulos et al.)、「ロッシーカウンティングの可能性:頻度の高いアイテムを発見する効果的なアルゴリズム(Probabilistic Lossy Counting:An efficient algorithm for finding heavy hitters)」、ACM SIGCOMM 2008
しかし、データストリームのデータ量が膨大であり、出現頻度が高いアイテムの個数も膨大である場合、メモリ使用量がアイテムのデータ長に対して対数的に増加するLCの手法を用いる場合には、メモリ容量が不足する等、高い精度で出現頻度の高いアイテムを特定することができないおそれがあるという問題点があった。また、メモリ容量及びアクセス時間の相違する多段キャッシュメモリ等を用いることも考えられるが、LCの手法を用いる場合、1度の計算で2段階にしか分割することができない。したがって、多段キャッシュメモリを用いた場合であっても、それほど出現頻度の計数効率が高くなるわけではなく、多段キャッシュメモリの性能を100%発揮することができない。
本発明は斯かる事情に鑑みてなされたものであり、大量のテキストデータストリームに含まれるアイテムの中から出現頻度の高いアイテムを効率的に特定することができる方法、装置及びコンピュータプログラムを提供することを目的とする。
上記目的を達成するために第1発明に係る方法は、複数階層のメモリを有するコンピュータ・システムによりテキストデータストリームに含まれるアイテムの中から出現頻度の高いアイテムを特定する方法であって、前記コンピュータ・システムは、前記複数階層のメモリのうち上位階層のメモリに、アイテムを識別する識別情報、及び該アイテムのカウント数を記憶し、前記複数階層のメモリのうち前記上位階層のメモリよりも下位階層のメモリに、前記識別情報のみを記憶し、前記方法は、テキストデータストリームの入力を受け付けるステップと、入力を受け付けたテキストデータストリームを分割したバケットに含まれるアイテムの識別情報が前記上位階層のメモリに記憶されていることに応答して、該アイテムのカウント数をインクリメントし、前記下位階層のメモリに記憶されていることに応答して、該アイテムの識別情報を初期カウント数とともに前記上位階層のメモリへ移動させ、どちらにも記憶されていないことに応答して、該アイテムの識別情報を初期カウント数とともに新たに前記上位階層のメモリに記憶するステップとを含む。
また、第2発明に係る方法は、第1発明において、前記上位階層のメモリに、前記識別情報に対応付けてカウント数の誤差を記憶し、前記上位階層のメモリに記憶されたカウント数及び誤差に基づいて、前記上位階層のメモリに記憶されている識別情報に対応するアイテムごとの単位バケット当たりのカウント数を算出するステップと、算出した単位バケット当たりのカウント数が第一の閾値より小さいことに応答して、該アイテムの識別情報を前記下位階層のメモリへ移動させるステップとをさらに含む。
また、第3発明に係る方法は、第2発明において、前記第一の閾値は、前記アイテムの出現頻度を現在カウントしているバケット番号である。
また、第4発明に係る方法は、第1乃至第3発明のいずれか1つにおいて、前記アイテムのカウント数が第二の閾値より小さいことに応答して、該アイテムの識別情報を、前記上位階層のメモリ及び前記下位階層のメモリから削除するステップを含む。
また、第5発明に係る方法は、第1乃至第4発明のいずれか1つにおいて、前記上位階層のメモリは、前記複数階層のメモリのうち最上位階層のメモリである。
次に、上記目的を達成するために第6発明に係る装置は、テキストデータストリームに含まれるアイテムの中から出現頻度の高いアイテムを特定する装置であって、複数階層のメモリを備え、該複数階層のメモリのうち上位階層のメモリに、アイテムを識別する識別情報、及び該アイテムのカウント数を記憶し、前記複数階層のメモリのうち前記上位階層のメモリよりも下位階層のメモリに、前記識別情報のみを記憶するデータ構造を有し、テキストデータストリームの入力を受け付ける入力受付手段と、入力を受け付けたテキストデータストリームを分割したバケットに含まれるアイテムの識別情報が前記上位階層のメモリに記憶されていることに応答して、該アイテムのカウント数をインクリメントし、前記下位階層のメモリに記憶されていることに応答して、該アイテムの識別情報を初期カウント数とともに前記上位階層のメモリへ移動させ、どちらにも記憶されていないことに応答して、該アイテムの識別情報を初期カウント数とともに新たに前記上位階層のメモリに記憶する記憶メモリ制御手段とを備える。
また、第7発明に係る装置は、第6発明において、前記上位階層のメモリに、前記識別情報に対応付けてカウント数の誤差を記憶しておき、前記上位階層のメモリに記憶されたカウント数及び誤差に基づいて、前記上位階層のメモリに記憶されている識別情報に対応するアイテムごとの単位バケット当たりのカウント数を算出する算出手段と、算出した単位バケット当たりのカウント数が第一の閾値より小さいことに応答して、該アイテムの識別情報を前記下位階層のメモリへ移動させるメモリ間移動手段とを備える。
また、第8発明に係る装置は、第7発明において、前記第一の閾値は、前記アイテムの出現頻度を現在カウントしているバケット番号である。
また、第9発明に係る装置は、第6乃至第8発明のいずれか1つにおいて、前記アイテムのカウント数が第二の閾値より小さいことに応答して、該アイテムの識別情報を、前記上位階層のメモリ及び前記下位階層のメモリから削除する削除手段を備える。
また、第10発明に係る装置は、第6乃至第9発明のいずれか1つにおいて、前記上位階層のメモリは、前記複数階層のメモリのうち最上位階層のメモリである。
次に、上記目的を達成するために第11発明に係るコンピュータプログラムは、テキストデータストリームに含まれるアイテムの中から出現頻度の高いアイテムを特定する装置で実行することが可能なコンピュータプログラムであって、前記装置は、複数階層のメモリを備え、該複数階層のメモリのうち上位階層のメモリに、アイテムを識別する識別情報、及び該アイテムのカウント数を記憶し、前記複数階層のメモリのうち前記上位階層のメモリよりも下位階層のメモリに、前記識別情報のみを記憶するデータ構造を有し、前記装置を、テキストデータストリームの入力を受け付ける入力受付手段、及び入力を受け付けたテキストデータストリームを分割したバケットに含まれるアイテムの識別情報が前記上位階層のメモリに記憶されていることに応答して、該アイテムのカウント数をインクリメントし、前記下位階層のメモリに記憶されていることに応答して、該アイテムの識別情報を初期カウント数とともに前記上位階層のメモリへ移動させ、どちらにも記憶されていないことに応答して、該アイテムの識別情報を初期カウント数とともに新たに前記上位階層のメモリに記憶する記憶メモリ制御手段として機能させる。
また、第12発明に係るコンピュータプログラムは、第11発明において、前記上位階層のメモリに、前記識別情報に対応付けてカウント数の誤差を記憶しておき、前記装置を、前記上位階層のメモリに記憶されたカウント数及び誤差に基づいて、前記上位階層のメモリに記憶されている識別情報に対応するアイテムごとの単位バケット当たりのカウント数を算出する算出手段、及び算出した単位バケット当たりのカウント数が第一の閾値より小さいことに応答して、該アイテムの識別情報を前記下位階層のメモリへ移動させるメモリ間移動手段として機能させる。
また、第13発明に係るコンピュータプログラムは、第12発明において、前記第一の閾値は、前記アイテムの出現頻度を現在カウントしているバケット番号である。
また、第14発明に係るコンピュータプログラムは、第11乃至第13発明のいずれか1つにおいて、前記装置を、前記アイテムのカウント数が第二の閾値より小さいことに応答して、該アイテムの識別情報を、前記上位階層のメモリ及び前記下位階層のメモリから削除する手段として機能させる。
また、第15発明に係るコンピュータプログラムは、第11乃至第14発明のいずれか1つにおいて、前記上位階層のメモリは、前記複数階層のメモリのうち最上位階層のメモリである。
本発明によれば、メモリに全てのデータを記憶することができない大量のテキストデータストリームを、所定のサイズのバケットに分割し、分割された各バケットに含まれるアイテムごとの出現回数を順次計数するとともに、出現頻度の低いアイテムについては識別情報のみを記憶するよう制御することで、出現頻度の高いアイテムを高い精度で特定することができ、全体としてメモリ使用量を大幅に削減することが可能となる。
本発明の実施の形態に係る出現アイテム計数装置の構成を模式的に示すブロック図である。 本発明の実施の形態に係る出現アイテム計数装置のメモリの構成を示すブロック図である。 本発明の実施の形態に係る出現アイテム計数装置の機能ブロック図である。 本発明の実施の形態に係る出現アイテム計数装置のCPUのアイテムの記憶処理の手順を示すフローチャートである。 本発明の実施の形態に係る出現アイテム計数装置の記憶メモリ制御部の機能ブロック図である。 最上位階層のメモリから下位階層のメモリへアイテムを移動するか否かを判断する処理の例示図である。 本発明の実施の形態に係る出現アイテム計数装置の記憶メモリ制御部のメモリ間移動処理の手順を示すフローチャートである。
以下、本発明の実施の形態に係る、テキストデータストリームに含まれるアイテムの中から、出現頻度の高いアイテムを特定することができる出現アイテム計数装置について、図面に基づいて具体的に説明する。以下の実施の形態は、特許請求の範囲に記載された発明を限定するものではなく、実施の形態の中で説明されている特徴的事項の組み合わせの全てが解決手段の必須事項であるとは限らないことは言うまでもない。
また、本発明は多くの異なる態様にて実施することが可能であり、実施の形態の記載内容に限定して解釈されるべきものではない。実施の形態を通じて同じ要素には同一の符号を付している。
以下の実施の形態では、コンピュータ・システムにコンピュータプログラムを導入した装置について説明するが、当業者であれば明らかな通り、本発明はその一部をコンピュータで実行することが可能なコンピュータプログラムとして実施することができる。したがって、本発明は、テキストデータストリームに含まれるアイテムの中から、出現頻度の高いアイテムを特定することができる出現アイテム計数装置というハードウェアとしての実施の形態、ソフトウェアとしての実施の形態、又はソフトウェアとハードウェアとの組み合わせの実施の形態をとることができる。コンピュータプログラムは、ハードディスク、DVD、CD、光記憶装置、磁気記憶装置等の任意のコンピュータで読み取ることが可能な記録媒体に記録することができる。
本発明の実施の形態によれば、メモリに全てのデータを記憶することができない大量のテキストデータストリームを、所定のサイズのバケットに分割し、分割された各バケットに含まれるアイテムごとの出現回数を順次計数するとともに、出現頻度の低いアイテムについては識別情報のみを記憶するよう制御することで、出現頻度の高いアイテムを高い精度で特定することができ、全体としてメモリ使用量を大幅に削減することが可能となる。
図1は、本発明の実施の形態に係る出現アイテム計数装置の構成を模式的に示すブロック図である。本発明の実施の形態に係る出現アイテム計数装置1は、少なくともCPU(中央演算装置)11、メモリ12、記憶装置13、I/Oインタフェース14、ビデオインタフェース15、可搬型ディスクドライブ16、通信インタフェース17及び上述したハードウェアを接続する内部バス18で構成されている。
CPU11は、内部バス18を介して出現アイテム計数装置1の上述したようなハードウェア各部と接続されており、上述したハードウェア各部の動作を制御するとともに、記憶装置13に記憶されたコンピュータプログラム100に従って、種々のソフトウェア的機能を実行する。メモリ12は、SRAM、SDRAM等の揮発性メモリで構成され、コンピュータプログラム100の実行時にロードモジュールが展開され、コンピュータプログラム100の実行時に発生する一時的なデータ等を記憶する。
本実施の形態では、メモリ12は多段メモリ構造を有しており、少なくとも2段のメモリ構造を有している。図2は、本発明の実施の形態に係る出現アイテム計数装置1のメモリ12の構成を示すブロック図である。
図2に示すように、メモリ12は、最上位階層のメモリHと、複数の下位階層のメモリM1、M2、・・・、Mb(bは自然数)とで構成されている。最上位階層のメモリHには、データストリームから読み出したアイテムを識別する識別情報h、アイテムのカウント数(出現回数の累積値)fh 、及びカウント数の誤差Δh を記憶する。アイテムのカウント数fh 、及びカウント数の誤差Δh に基づいて、後述するようにアイテムを最上位階層のメモリHに記憶するか、下位階層のメモリM1、M2、・・・のいずれかに記憶するかが制御される。
下位階層のメモリM1、M2、・・・には、アイテムを識別する識別情報hのみを記憶する。これにより、テキストデータストリームからアイテムを読み出して計数するメモリ使用量を大きく削減することができる。
下位階層のメモリM1、M2、・・・のどこに記憶するかは、そのアイテムのカウント数fh 及びカウント数の誤差Δhによる。すなわち下位階層のメモリM1、M2、・・・に移動させるアイテムの数を調整するパラメータθを用いて、(式1)により下位階層のメモリM1、M2、・・・のどこに記憶するかが決定される。
(b−1)θ<fh +Δh≦bθ ・・・ (式1)
なお、(式1)において、fh は識別情報hのアイテムのカウント数、Δhはそのカウント数の誤差であり、出現頻度に応じてどのメモリに記憶するかを振り分ける。
図1に戻って、記憶装置13は、内蔵される固定型記憶装置(ハードディスク)、ROM等で構成されている。記憶装置13に記憶されたコンピュータプログラム100は、プログラム及びデータ等の情報を記録したDVD、CD−ROM等の可搬型記録媒体90から、可搬型ディスクドライブ16によりダウンロードされ、実行時には記憶装置13からメモリ12へ展開して実行される。もちろん、通信インタフェース17を介して接続されている外部コンピュータからダウンロードされたコンピュータプログラムであっても良い。
通信インタフェース17は内部バス18に接続されており、インターネット、LAN、WAN等の外部のネットワークに接続されることにより、外部コンピュータ等とデータ送受信を行うことが可能となっている。
I/Oインタフェース14は、キーボード21、マウス22等の入力装置と接続され、データの入力を受け付ける。ビデオインタフェース15は、CRTディスプレイ、液晶ディスプレイ等の表示装置23と接続され、表示装置23には、例えば出現頻度の高い順にアイテムを列挙して表示する。
図3は、本発明の実施の形態に係る出現アイテム計数装置1の機能ブロック図である。図3において、出現アイテム計数装置1のテキストデータストリーム入力受付部(入力受付手段)301は、大量のアイテムが含まれたテキストデータストリームの入力を受け付ける。効率的にアイテムごとの出現回数を計数するために、所定のサイズのバケットに分割して、各バケットに含まれるアイテムを読み出し、その出現回数を計数する。
すなわち、バケット読出部302は、入力を受け付けたテキストデータストリームを所定のサイズのバケットに分割して、各バケットに含まれるアイテムを読み出す。アイテム計数部303は、読み出されたアイテムごとの出現回数を計数する。
記憶メモリ制御部(記憶メモリ制御手段)304は、テキストデータストリームから読み出したアイテムの識別情報hが、現在最上位階層のメモリHに記憶されているか、下位階層のメモリM1、M2、・・・のいずれかに記憶されているかに応じて、メモリへの記憶形態を制御する。すなわち、読み出したアイテムの識別情報hが最上位階層のメモリHに既に記憶されている場合、該アイテムは出現頻度の高いアイテムである、又は直近で出現したアイテムであると既に認識されていると判断することができる。したがって、最上位階層のメモリHに記憶されている該アイテムの識別情報hに対応付けられているカウント数fh を‘1’インクリメントするよう、最上位階層のメモリHを更新する。
一方、読み出したアイテムの識別情報hが下位階層のメモリM1、M2、・・・のいずれかに記憶されている場合、該アイテムが下位階層のどのメモリに記憶されているかを特定して、特定された下位階層のメモリからアイテムの識別情報hを削除するとともに、初期カウント数を‘1’として、該アイテムの識別情報hを初期カウント数‘1’とともに最上位階層のメモリHへ移動させる。
この場合、カウント数の誤差Δh は、下位階層のどのメモリに記憶されているかによって算出される。すなわち、読み出したアイテムの識別情報hがb番目の下位階層のメモリMbに記憶されている場合、カウント数の誤差Δh は(式2)のように算出される。
Δh = (b−1/2)θ ・・・ (式2)
したがって、最上位階層のメモリHには、(式3)のようなデータ構造でアイテムが記憶される。
H ←(h、1、(b−1/2)θ) ・・・ (式3)
また、最上位階層のメモリHにも、下位階層のメモリM1、M2、・・・にも、読み出したアイテムの識別情報hが記憶されていない場合、すなわち初出のアイテムである場合には、該アイテムの識別情報hを初期カウント数‘1’及びカウント数の誤差‘0’とともに、新たに最上位階層のメモリHに記憶する。
図4は、本発明の実施の形態に係る出現アイテム計数装置1のCPU11のアイテムの記憶処理の手順を示すフローチャートである。図4において、出現アイテム計数装置1のCPU11は、大量のアイテムが含まれているテキストデータストリームの入力を受け付ける(ステップS401)。CPU11は、効率的にアイテムごとの出現回数を計数するために、所定のサイズのバケットに分割して、各バケットに含まれるアイテムごとの出現回数を計数する(ステップS402)。
CPU11は、読み出したアイテム(正確には識別情報hであるが、以下、アイテムと略す)が最上位階層のメモリHに記憶されているか否かを判断する(ステップS403)。CPU11が、最上位階層のメモリHに記憶されていると判断した場合(ステップS403:YES)、CPU11は、最上位階層のメモリHに記憶されている該アイテムに対応付けられているカウント数fh を‘1’インクリメントする(ステップS404)。
CPU11が、最上位階層のメモリHに記憶されていないと判断した場合(ステップS403:NO)、CPU11は、読み出したアイテムが下位階層のメモリM1、M2、・・・のいずれかに記憶されているか否かを判断する(ステップS405)。CPU11が、下位階層のメモリM1、M2、・・・のいずれかに記憶されていると判断した場合(ステップS405:YES)、CPU11は、読み出したアイテムが下位階層のメモリM1、M2、・・・のどのメモリに記憶されているかを特定する(ステップS406)。
CPU11は、特定された下位階層のメモリに基づいて、カウント数の誤差Δh を算出し(ステップS407)、算出したカウント数の誤差Δh 、該アイテムの識別情報h、及び初期カウント数‘1’を該アイテムに関する一組のデータとして最上位階層のメモリHへ記憶する(ステップS408)。CPU11は、下位階層のメモリM1、M2、・・・から該アイテムを削除する(ステップS409)。
CPU11が、下位階層のメモリM1、M2、・・・のいずれにも記憶されていないと判断した場合(ステップS405:NO)、CPU11は、該アイテムを、新しいアイテムとして初期カウント数‘1’とともに、最上位階層のメモリHに記憶する(ステップS410)。
このようにすることで、複数の階層を有するメモリに記憶されている場合であっても、テキストデータストリームに含まれるアイテムの出現回数を確実に計数することができる。特に下位階層のメモリM1、M2、・・・にはアイテムの識別情報hしか記憶されていないものの、どのメモリに記憶されているかに応じてカウント数fh が一定範囲内であると容易に推定することができる。
なお、上述した処理を繰り返した場合、最上位階層のメモリHにアイテムが増加する。そこで、一定数のアイテムを処理した時点で、出現回数の小さいアイテムについては下位階層のメモリM1、M2、・・・へ移動させる移動処理が必要となる。図5は、本発明の実施の形態に係る出現アイテム計数装置1の記憶メモリ制御部304の機能ブロック図である。図5において、出現アイテム計数装置1の記憶メモリ制御部304は、単位バケット当たりカウント数算出部(算出手段)501、移動先メモリ特定部502、メモリ間移動部(メモリ間移動手段)532を備えている。
単位バケット当たりカウント数算出部501は、最上位階層のメモリHに記憶されている一のアイテムの識別情報hを読み出し、対応付けて記憶されているカウント数fh及びカウント数の誤差Δhに基づいて、単位バケット当たりのカウント数を算出する。具体的には、一のアイテムについて、記憶されている一組のデータ(h、fh 、Δh )を読み出す。
次に、単位バケット当たりのカウント数bを(式4)により算出する。(式4)では、パラメータθにより、下位階層のメモリM1、M2、・・・に移動させるアイテムの数を調整することができる。
b=(fh +Δh )/θ ・・・ (式4)
移動先メモリ特定部502は、算出した単位バケット当たりのカウント数が第一の閾値より小さいか否かを判断し、小さい場合には該アイテムを移動させる下位階層のメモリを特定する。すなわち、算出した単位バケット当たりのカウント数bに基づいて、下位階層のメモリM1、M2、・・・のいずれかへ移動させる。下位階層のメモリM1、M2、・・・では、アイテムの識別情報hのみを記憶しているが、単位バケット当たりのカウント数bに応じてどこに記憶するかを特定することにより、どのメモリに記憶されているかに応じてアイテムの出現頻度を推定することができるようにしている。
下位階層のメモリMbに記憶するアイテムのカウント数fh は、(式1)に示すように(b−1)θより大きくbθ以下であれば良い。したがって、最上位階層のメモリHに記憶されていたアイテムの単位バケット数当たりのカウント数bによって、移動先の下位階層のメモリを一義的に特定することができる。
メモリ間移動部503は、特定された下位階層のメモリに、アイテムの識別情報hを記憶し、最上位階層のメモリHから該アイテムの識別情報hを削除する。これにより、下位階層のメモリにアイテムを移動させることができる。
図6は、最上位階層のメモリHから下位階層のメモリM1、M2、・・・へアイテムを移動するか否かを判断する処理の例示図である。図6では、現在のバケット番号bcurrを‘500’とし、各バケットの長さを‘1000’、θを‘20’とする。この場合、現在のバケットに含まれるアイテムを読み出して出現回数を計数するまでに、500000(=500×1000)個のアイテムを処理していることになる。
まずは、最上位階層のメモリHに記憶されているアイテムごとにカウント数fh と誤差Δh との和を算出する。図6(a)の場合、(fh +Δh )を‘1000’としているので、単位バケット当たりのカウント数bは、‘50’(=1000/20)となる。
ここで、例えば単位バケット当たりに、少なくとも現在のバケット番号bcurrと同数よりも多くアイテムが含まれる場合に出現頻度が高いと判断するよう設定した場合、単位バケット当たりのカウント数bが現在のバケット番号bcurrよりも小さいか否かで下位階層のメモリM1、M2、・・・へ移動するか否かを判断すれば良い。すなわち、単位バケット当たりのカウント数bが現在のバケット番号bcurr以上である場合には、出現頻度が高いと判断してアイテムの識別情報を最上位階層のメモリHに記憶しておくが、単位バケット当たりのカウント数bが現在のバケット番号bcurrよりも小さい場合には、出現頻度が低いと判断してアイテムの識別情報を下位階層のメモリM1、M2、・・・へと移動する。
図6(a)の場合、算出した単位バケット当たりのカウント数bが‘50’であり、現在のバケット番号bcurr(=500)よりも小さいので、出現頻度が低いと判断して、該アイテムの識別情報hを下位階層のメモリM1、M2、・・・へと移動する。図6(b)の場合、(fh +Δh )を‘100000’としているので、単位バケット当たりのカウント数bは、‘5000’(=100000/20)であり、現在のバケット番号bcurr(=500)以上であることから出現頻度が高いと判断して、該アイテムの識別情報hは最上位階層のメモリHに記憶したままにしておく。
図7は、本発明の実施の形態に係る出現アイテム計数装置1の記憶メモリ制御部304のメモリ間移動処理の手順を示すフローチャートである。図7において、出現アイテム計数装置1のCPU11は、処理したアイテムの数を計数するカウンタを初期値である‘1’に設定し(ステップS701)、図4に示す処理を実行する(ステップS702)。CPU11は、カウンタが第一の閾値以上であるか否かを判断する(ステップS703)。第一の閾値の大きさによって、下位階層のメモリに記憶するべきアイテムの記憶容量が決まる。
CPU11が、カウンタが第一の閾値より小さいと判断した場合(ステップS703:NO)、CPU11は、カウンタを‘1’インクリメントし(ステップS704)、処理をステップS702へ戻して上述した処理を繰り返す。CPU11が、カウンタが第一の閾値以上であると判断した場合(ステップS703:YES)、CPU11は、最上位階層のメモリHに記憶されている一のアイテムを読み出す(ステップS705)。具体的には、記憶されている一のアイテムの一組の記憶データ(h、fh 、Δh )を読み出す。
CPU11は、アイテム(正確には識別情報hであるが、図4と同様に、以下、アイテムと略す)に対応付けて記憶されているカウント数fh 、及びカウント数の誤差Δh に基づいて、単位バケット当たりのカウント数bを(式4)により算出する(ステップS706)。CPU11は、算出した単位バケット当たりのカウント数bが現在のバケット番号bcurrより小さいか否かを判断し(ステップS707)、CPU11が、算出した単位バケット当たりのカウント数bが現在のバケット番号bcurrより小さいと判断した場合(ステップS707:YES)、CPU11は、該アイテムを下位階層のメモリM1、M2、・・・のいずれかに記憶し(ステップS708)、最上位階層のメモリHから該アイテムの一組の記憶データ(h、fh 、Δh )を削除する(ステップS709)。
CPU11が、算出した単位バケット当たりのカウント数bが現在のバケット番号bcurr以上であると判断した場合(ステップS707:NO)、CPU11は、ステップS708、ステップS709の処理をスキップし、最上位階層のメモリHに記憶されているすべてのアイテムを読み出したか否かを判断する(ステップS710)。
CPU11が、まだ読み出していないアイテムが存在すると判断した場合(ステップS710:NO)、CPU11は、次のアイテムを最上位階層のメモリHから読み出し(ステップS711)、処理をステップS706に戻して上述した処理を繰り返す。CPU11が、すべてのアイテムを読み出したと判断した場合(ステップS710:YES)、CPU11は、処理を終了する。
このように、処理したアイテムの数を計数しながら、一定間隔ごとに最上位階層のメモリHに記憶されているアイテムを出現頻度に応じて下位階層のメモリM1、M2、・・・に移動させることにより、最上位階層のメモリHに記憶するアイテムの数を一定数を超えないように制御することができ、メモリ使用量を大幅に削減することが可能となる。
また、出現回数が所定数よりも少ない場合、該アイテムは記憶しておく意味がないと考えることもできる。(fh h)/θが第二の閾値、例えば現在のバケット番号bcurrの1/4より小さい場合には、該アイテムの識別情報hを最上位階層のメモリHからも、下位階層のメモリM1、M2、・・・からも、削除するようにしても良い。これにより、不要なアイテムの識別情報を記憶する必要がなくなるので、よりメモリ容量に余裕ができる。
以上のように本実施の形態によれば、メモリに全てのデータを記憶することができない大量のテキストデータストリームを、所定のサイズのバケットに分割し、分割された各バケットに含まれるアイテムごとの出現回数を順次計数するとともに、出現頻度の低いアイテムについては識別情報のみを記憶するよう制御することで、出現頻度の高いアイテムを高い精度で特定することができ、全体としてメモリ使用量を大幅に削減することが可能となる。
なお、最上位階層のメモリHと下位階層のメモリM1、M2、・・・との2段のメモリ構造に限定されるものではなく、さらに下位の階層のメモリを備えておき、出現回数が極端に少ないアイテムについては、削除するのではなく最下位階層のメモリに記憶するようにしても良い。最上位階層のメモリHとしては比較的高速にアクセスすることが可能なハッシュマップ構造のメモリを、下位階層のメモリM1、M2、・・・としてはダブルアレイ構造のメモリを、それぞれ採用することが好ましい。これにより、全体としてのアクセス速度を高めることができるからである。また、最下位階層のメモリには、LOUDSのような木構造を有するメモリを採用しても良い。最下位階層のメモリであれば、アクセス速度が問題とはならないからである。
また、本発明は上記実施例に限定されるものではなく、本発明の趣旨の範囲内であれば多種の変更、改良等が可能である。例えば上述した実施例では、最上位階層のメモリにアイテムを識別する識別情報、及び該アイテムのカウント数を記憶しているが、上位階層と下位階層とが区別できる複数階層のメモリ構造であれば、最上位階層のメモリに限定されるものではない。
1 出現アイテム計数装置
11 CPU
12 メモリ
13 記憶装置
14 I/Oインタフェース
15 ビデオインタフェース
16 可搬型ディスクドライブ
17 通信インタフェース
18 内部バス
90 可搬型記録媒体
100 コンピュータプログラム

Claims (15)

  1. 複数階層のメモリを有するコンピュータ・システムによりテキストデータストリームに含まれるアイテムの中から出現頻度の高いアイテムを特定する方法であって、
    前記コンピュータ・システムは、
    前記複数階層のメモリのうち上位階層のメモリに、アイテムを識別する識別情報、及び該アイテムのカウント数を記憶し、
    前記複数階層のメモリのうち前記上位階層のメモリよりも下位階層のメモリに、前記識別情報のみを記憶し、
    前記方法は、
    テキストデータストリームの入力を受け付けるステップと、
    入力を受け付けたテキストデータストリームを分割したバケットに含まれるアイテムの識別情報が前記上位階層のメモリに記憶されていることに応答して、該アイテムのカウント数をインクリメントし、前記下位階層のメモリに記憶されていることに応答して、該アイテムの識別情報を初期カウント数とともに前記上位階層のメモリへ移動させ、どちらにも記憶されていないことに応答して、該アイテムの識別情報を初期カウント数とともに新たに前記上位階層のメモリに記憶するステップと
    を含む方法。
  2. 前記上位階層のメモリに、前記識別情報に対応付けてカウント数の誤差を記憶し、
    前記上位階層のメモリに記憶されたカウント数及び誤差に基づいて、前記上位階層のメモリに記憶されている識別情報に対応するアイテムごとの単位バケット当たりのカウント数を算出するステップと、
    算出した単位バケット当たりのカウント数が第一の閾値より小さいことに応答して、該アイテムの識別情報を前記下位階層のメモリへ移動させるステップとをさらに含む請求項1に記載の方法。
  3. 前記第一の閾値は、前記アイテムの出現頻度を現在カウントしているバケット番号である請求項2に記載の方法。
  4. 前記アイテムのカウント数が第二の閾値より小さいことに応答して、該アイテムの識別情報を、前記上位階層のメモリ及び前記下位階層のメモリから削除するステップを含む請求項1乃至3のいずれか一項に記載の方法。
  5. 前記上位階層のメモリは、前記複数階層のメモリのうち最上位階層のメモリである請求項1乃至4のいずれか一項に記載の方法。
  6. テキストデータストリームに含まれるアイテムの中から出現頻度の高いアイテムを特定する装置であって、
    複数階層のメモリを備え、
    該複数階層のメモリのうち上位階層のメモリに、アイテムを識別する識別情報、及び該アイテムのカウント数を記憶し、
    前記複数階層のメモリのうち前記上位階層のメモリよりも下位階層のメモリに、前記識別情報のみを記憶するデータ構造を有し、
    テキストデータストリームの入力を受け付ける入力受付手段と、
    入力を受け付けたテキストデータストリームを分割したバケットに含まれるアイテムの識別情報が前記上位階層のメモリに記憶されていることに応答して、該アイテムのカウント数をインクリメントし、前記下位階層のメモリに記憶されていることに応答して、該アイテムの識別情報を初期カウント数とともに前記上位階層のメモリへ移動させ、どちらにも記憶されていないことに応答して、該アイテムの識別情報を初期カウント数とともに新たに前記上位階層のメモリに記憶する記憶メモリ制御手段と
    を備える装置。
  7. 前記上位階層のメモリに、前記識別情報に対応付けてカウント数の誤差を記憶しておき、
    前記上位階層のメモリに記憶されたカウント数及び誤差に基づいて、前記上位階層のメモリに記憶されている識別情報に対応するアイテムごとの単位バケット当たりのカウント数を算出する算出手段と、
    算出した単位バケット当たりのカウント数が第一の閾値より小さいことに応答して、該アイテムの識別情報を前記下位階層のメモリへ移動させるメモリ間移動手段と
    を備える請求項6に記載の装置。
  8. 前記第一の閾値は、前記アイテムの出現頻度を現在カウントしているバケット番号である請求項7に記載の装置。
  9. 前記アイテムのカウント数が第二の閾値より小さいことに応答して、該アイテムの識別情報を、前記上位階層のメモリ及び前記下位階層のメモリから削除する削除手段を備える請求項6乃至8のいずれか一項に記載の装置。
  10. 前記上位階層のメモリは、前記複数階層のメモリのうち最上位階層のメモリである請求項6乃至9のいずれか一項に記載の装置。
  11. テキストデータストリームに含まれるアイテムの中から出現頻度の高いアイテムを特定する装置で実行することが可能なコンピュータプログラムであって、
    前記装置は、複数階層のメモリを備え、
    該複数階層のメモリのうち上位階層のメモリに、アイテムを識別する識別情報、及び該アイテムのカウント数を記憶し、
    前記複数階層のメモリのうち前記上位階層のメモリよりも下位階層のメモリに、前記識別情報のみを記憶するデータ構造を有し、
    前記装置を、
    テキストデータストリームの入力を受け付ける入力受付手段、及び
    入力を受け付けたテキストデータストリームを分割したバケットに含まれるアイテムの識別情報が前記上位階層のメモリに記憶されていることに応答して、該アイテムのカウント数をインクリメントし、前記下位階層のメモリに記憶されていることに応答して、該アイテムの識別情報を初期カウント数とともに前記上位階層のメモリへ移動させ、どちらにも記憶されていないことに応答して、該アイテムの識別情報を初期カウント数とともに新たに前記上位階層のメモリに記憶する記憶メモリ制御手段
    として機能させるコンピュータプログラム。
  12. 前記上位階層のメモリに、前記識別情報に対応付けてカウント数の誤差を記憶しておき、
    前記装置を、
    前記上位階層のメモリに記憶されたカウント数及び誤差に基づいて、前記上位階層のメモリに記憶されている識別情報に対応するアイテムごとの単位バケット当たりのカウント数を算出する算出手段、及び
    算出した単位バケット当たりのカウント数が第一の閾値より小さいことに応答して、該アイテムの識別情報を前記下位階層のメモリへ移動させるメモリ間移動手段
    として機能させる請求項11に記載のコンピュータプログラム。
  13. 前記第一の閾値は、前記アイテムの出現頻度を現在カウントしているバケット番号である請求項12に記載のコンピュータプログラム。
  14. 前記装置を、
    前記アイテムのカウント数が第二の閾値より小さいことに応答して、該アイテムの識別情報を、前記上位階層のメモリ及び前記下位階層のメモリから削除する手段
    として機能させる請求項11乃至13のいずれか一項に記載のコンピュータプログラム。
  15. 前記上位階層のメモリは、前記複数階層のメモリのうち最上位階層のメモリである請求項11乃至14のいずれか一項に記載のコンピュータプログラム。
JP2012094026A 2012-04-17 2012-04-17 テキストデータストリームに含まれるアイテムの中から出現頻度の高いアイテムを特定する方法、装置及びコンピュータプログラム Expired - Fee Related JP5818740B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2012094026A JP5818740B2 (ja) 2012-04-17 2012-04-17 テキストデータストリームに含まれるアイテムの中から出現頻度の高いアイテムを特定する方法、装置及びコンピュータプログラム
US13/799,951 US9292439B2 (en) 2012-04-17 2013-03-13 Method, device and computer program for identifying items having high frequency of occurrence among items included in a text data stream
DE102013205819.5A DE102013205819B4 (de) 2012-04-17 2013-04-03 Verfahren, Einheit und Computerprogramm zum Identifizieren von Elementen mit einer hohen Auftrittshäufigkeit bei Elementen, die in einem Textdatenstrom enthalten sind
CN201310132171.5A CN103377147B (zh) 2012-04-17 2013-04-16 用于标识具有最高出现频率的项目的方法和设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012094026A JP5818740B2 (ja) 2012-04-17 2012-04-17 テキストデータストリームに含まれるアイテムの中から出現頻度の高いアイテムを特定する方法、装置及びコンピュータプログラム

Publications (2)

Publication Number Publication Date
JP2013222337A JP2013222337A (ja) 2013-10-28
JP5818740B2 true JP5818740B2 (ja) 2015-11-18

Family

ID=49232362

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012094026A Expired - Fee Related JP5818740B2 (ja) 2012-04-17 2012-04-17 テキストデータストリームに含まれるアイテムの中から出現頻度の高いアイテムを特定する方法、装置及びコンピュータプログラム

Country Status (4)

Country Link
US (1) US9292439B2 (ja)
JP (1) JP5818740B2 (ja)
CN (1) CN103377147B (ja)
DE (1) DE102013205819B4 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10922347B2 (en) * 2016-01-28 2021-02-16 Hyland Switzerland Sàrl Hierarchical dictionary with statistical filtering based on word frequency
US11860780B2 (en) 2022-01-28 2024-01-02 Pure Storage, Inc. Storage cache management

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9606927D0 (en) 1996-04-02 1996-06-05 Memory Corp Plc Data storage devices
JP3409986B2 (ja) * 1997-01-31 2003-05-26 株式会社東芝 多値メモリ
JPH10260881A (ja) 1997-03-19 1998-09-29 Toshiba Corp キャッシュ装置および同装置に適用されるエントリ管理方法
US6732237B1 (en) 2000-08-29 2004-05-04 Oracle International Corporation Multi-tier caching system
US20040088432A1 (en) 2002-10-31 2004-05-06 Hubbard Eric D. Management of attribute data
JP4513878B2 (ja) 2008-03-04 2010-07-28 沖電気工業株式会社 統計処理方法及び装置並びに統計処理方法のプログラム
US20090183037A1 (en) 2008-01-16 2009-07-16 Oki Electric Industry Co., Ltd. Statistical processing apparatus capable of reducing storage space for storing statistical occurrence frequency data and a processing method therefor
US7937388B2 (en) * 2008-08-20 2011-05-03 International Business Machines Corporation Probabilistic lossy counting
US20110107042A1 (en) * 2009-11-03 2011-05-05 Andrew Herron Formatting data storage according to data classification
US8931088B2 (en) * 2010-03-26 2015-01-06 Alcatel Lucent Adaptive distinct counting for network-traffic monitoring and other applications
US8386717B1 (en) * 2010-09-08 2013-02-26 Symantec Corporation Method and apparatus to free up cache memory space with a pseudo least recently used scheme
US8725779B1 (en) * 2011-05-06 2014-05-13 Aggregate Knowledge, Inc. System and method for counting and storing events as scalar quantities in skewed counting environments
US8682864B1 (en) * 2012-06-20 2014-03-25 Google Inc. Analyzing frequently occurring data items

Also Published As

Publication number Publication date
CN103377147A (zh) 2013-10-30
CN103377147B (zh) 2016-03-30
US9292439B2 (en) 2016-03-22
US20130275677A1 (en) 2013-10-17
DE102013205819A1 (de) 2013-10-17
JP2013222337A (ja) 2013-10-28
DE102013205819B4 (de) 2020-04-02

Similar Documents

Publication Publication Date Title
JP6362316B2 (ja) バッファ・プールをメモリ常駐型データのための常在インメモリ・ストレージとして用いた、ハイブリッド・テーブル実装のための方法、システム、およびコンピュータ・プログラム製品
JP5088668B2 (ja) 計算機負荷見積システム、計算機負荷見積方法、計算機負荷見積プログラム
US11216434B2 (en) Systems and methods for performing tree-structured dataset operations
US9971698B2 (en) Using access-frequency hierarchy for selection of eviction destination
US7730171B2 (en) Decoupled logical and physical data storage within a database management system
WO2012176923A1 (ja) 匿名化指標決定装置及び方法、並びに匿名化処理実行システム及び方法
CN110795363B (zh) 一种存储介质的热页预测方法和页面调度方法
CN105989015B (zh) 一种数据库扩容方法和装置以及访问数据库的方法和装置
JP5818740B2 (ja) テキストデータストリームに含まれるアイテムの中から出現頻度の高いアイテムを特定する方法、装置及びコンピュータプログラム
JP5790755B2 (ja) データベース管理装置及びデータベース管理方法
US9552298B2 (en) Smart pre-fetch for sequential access on BTree
Lee et al. SFM: Mitigating read/write amplification problem of LSM-tree-based key-value stores
US11914740B2 (en) Data generalization apparatus, data generalization method, and program
CN113094336A (zh) 基于Cuckoo哈希的文件***目录管理方法及***
KR101699779B1 (ko) 플래시 메모리의 색인 방법
US7360043B1 (en) Method and apparatus for efficiently determining rank in an LRU list
US20130246842A1 (en) Information processing apparatus, program, and data allocation method
US11461299B2 (en) Key-value index with node buffers
KR101543855B1 (ko) 중복된 자료 개수의 근사치를 추정하는 방법 및 시스템
US20190227734A1 (en) Tracking information related to free space of containers
Jabarov et al. R-Tree for phase change memory
JP5953262B2 (ja) データ索引装置、データ索引方法及びプログラム
KR101993555B1 (ko) Rcc와 쿠쿠 해시 테이블을 이용한 lrfu 기반의 캐시 교체 방법 및 시스템
JP6926540B2 (ja) 情報処理装置、コンポーネント配置方法及びコンポーネント配置プログラム
JP5953277B2 (ja) データ索引装置、データ索引方法及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20141001

TRDD Decision of grant or rejection written
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150831

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20150908

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150908

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150929

R150 Certificate of patent or registration of utility model

Ref document number: 5818740

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees