JP5346156B2 - プログラム、転置インデックスの格納方法及び検索方法 - Google Patents

プログラム、転置インデックスの格納方法及び検索方法 Download PDF

Info

Publication number
JP5346156B2
JP5346156B2 JP2007070697A JP2007070697A JP5346156B2 JP 5346156 B2 JP5346156 B2 JP 5346156B2 JP 2007070697 A JP2007070697 A JP 2007070697A JP 2007070697 A JP2007070697 A JP 2007070697A JP 5346156 B2 JP5346156 B2 JP 5346156B2
Authority
JP
Japan
Prior art keywords
byte
posting
document
identification number
index
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
Application number
JP2007070697A
Other languages
English (en)
Other versions
JP2008140357A5 (ja
JP2008140357A (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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2007070697A priority Critical patent/JP5346156B2/ja
Priority to US11/936,277 priority patent/US8321485B2/en
Publication of JP2008140357A publication Critical patent/JP2008140357A/ja
Publication of JP2008140357A5 publication Critical patent/JP2008140357A5/ja
Application granted granted Critical
Publication of JP5346156B2 publication Critical patent/JP5346156B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、大規模文書集合を対象に、高速な全文検索をするための、転置インデックスの圧縮方法、及びその転置インデックスを用いた検索方法に関する。
現代社会では、膨大な量の電子文書が日々作成され、その量はますます増え続けている。オフィスでは文書作成やプレゼンテーションに、電子文書は不可欠なものとなっている。インターネットの拡大も、爆発的な数の電子文書が生み出される要因となっている。電子文書の量の増大とともに、多数の膨大な文書から、必要な情報が記された文書を、短時間で検索し出力できる文書検索技術が必須となっており、技術開発も進んでいる。
図1は、検索対象となる文書集合と、それに基づき構築される転置インデックスの概略図である。文書検索の典型的なスタイルは、与えられた文書集合101から、指定された単語を含む文書を、極力短時間で出力するというものである。この目的のために、転置インデックス102と呼ばれるデータ構造が使用される。ある単語103がある文書104に出現するとき、その文書の識別番号105、その文書中の当該単語の出現回数106から構成される情報をポスティング107と呼ぶ。検索対象文書の全単語について、全ポスティングのリストを格納したデータ構造が、転置インデックス102である。
ポスティングにおいて、当該単語の出現回数は用途により省略される場合があるが、本明細書では出現回数も格納する転置インデックスを扱う。なぜなら、出現回数は、検索された文書の重要度を計算する際に必要となる場合が多いためである。一方、ポスティングは当該単語の位置情報を含む場合もあるが、本明細書の技術は、文書識別番号と出現回数から成る部分の処理に適用される。
英語、フランス語、スペイン語のような単語がスペースで区切られている言語と異なり、日本語、韓国語や中国語では、文書を正確に単語に分割することが困難である。そこでn-gramと呼ばれる、連続するn文字からなる、文書中の任意の部分文字列を単語の代わりに用いて、転置インデックスを構築する場合があり、実用上有用であることが知られている(情報検索アルゴリズム、北研二他著、共立出版)。nは、主に1〜10の整数である。本明細書では、単語及び長さnの部分文字列を、索引語と表記する。
ポスティングを構成する文書識別番号及び出現回数は、いずれも整数値である。整数値を圧縮せず固定長のバイト列で表現する場合、数値を32ビットで表現するなら1つの整数を表現するために4バイトが必要であるが、数値を32ビットよりも小さいビット数で表現する複数の公知技術が存在する。Eliasγ符号(非特許文献1)は、小さな数値を少ないビット数で表現できる数値圧縮法であり、索引語の出現回数の圧縮に適している。Eliasγ符号は文書の識別番号を圧縮するためにも利用できるが、識別番号は出現回数ほどには小さい数値に集中しないため、Eliasδ符号(非特許文献1)が適している。Golomb符号(非特許文献2)、Rice符号(非特許文献3)は、整数値を可変長ビット列で圧縮するものの、Eliasγ、δ符号よりも高速に処理できる上に、圧縮率も高いと言われている。
整数値を可変長のバイト列で表現する方法も知られている。Variable byte法(非特許文献3、4)では、数値を2進数表現し、7ビットずつ可変長バイト列202に格納していく。図2は、variable byte法により圧縮された整数値の例を示す図である。最上位ビット201は、それを含む1バイトがバイト列の終端か否かを判別するために用いられる。最上位ビット201が1のバイトは、バイト列202の終端以外のバイトであり、最上位ビット201が0のバイトは、バイト列202の終端である。最上位ビット201の0と1の意味は、逆であっても構わない。図2の例は、整数123456(2進数表記では0000111 1000100 1000000)をvariable byte法で圧縮した場合を示している。この場合は3バイトで表現可能なので、もとの整数123456が32ビットで記録されていれば3/4=75%の圧縮ができたことになる。図2では、上位ビットから順に符号化しているが、下位ビットからでも構わない。Variable byte法の長所は、復号処理が簡便なため高速処理が可能なことである。
バイト列のみならず、32ビット又は64ビット計算機ワードごとに複数のポスティングをまとめて符号化する技術も知られている(非特許文献5)。非特許文献5の技術を拡張し、計算機ワードの境界を跨った符号化を行なう技術も提案されている(非特許文献6)。これらの他に、全文検索用の転置インデックスをコンパクトに表現する技術としては、特許文献1、特許文献2の技術が知られている。また、非特許文献7には、単語毎に用意されたポスティングのリスト、すなわち転置リスト108(図23)を大きさの等しい複数のブロックに分割して2分探索を行なうことにより、転置リスト中で特定の文書に関するポスティングを高速に探索する技術が記載されている。
特開2001-312517号公報 特開平6-243009号公報 P. Elias, Universal codeword sets and representations of the integers, IEEE Transactions on Information Theory, IT-21(2):194-203, 1975. S. Golomb, Run-length encodings, IEEE Transactions on Information Theory, IT-12(3):399-401, 1966. F. Scholer, H.E. Williams, J. Zobel, Compression of Inverted Indexes for Fast Query Evaluation, Proc. 25th Ann. Int’l ACM SIGIR Conf. Research and Development in Information Retrieval, pp.222-229, 2002. H. Williams and J. Zobel, Compressing integers for fast file access, Computer Journal, 42(3):193-201, 1999. V.N. Anh and A. Moffat, Inverted Index Compression Using Word-Aligned Binary Codes, Information Retrieval, 8(1):151-166, 2005. V.N. Anh and A. Moffat, Improved Word-Aligned Binary Compression For Text Indexing, IEEE Transactions on Knowledge and data engineering, 18(6):857-861, 2006. I.H.Witten, A. Moffat, and T.C.Bell, Managing Gigabytes: Compressing and Indexing Documents and Images, second ed. San Francisco: Morgan Kaufmann, 1999.
転置インデックスのデータ構造は、高速な文書検索を実現するために、2つの相反する要求に答えなくてはならない。まず、転置インデックスのデータ構造は、高速なアクセスを実現するために、単純なものがよい。転置インデックスを計算機メモリに配置する場合に、簡明なデータ構造とすることで転置インデックスの読取時間を短縮できる。その一方で、転置インデックスは、可能な限り圧縮しデータサイズを小さく抑えることが望ましい。大規模な文書集合を扱うときは、転置インデックスがハードディスクを始めとする補助記憶装置上に配置されることが多いが、データサイズを小さくすればオンメモリ処理が可能となり、検索速度を大きく向上させることができる。転置インデックス全体をメモリに載せることが不可能でも、頻繁にアクセスされる部分をオンメモリ化するだけで大幅な高速化が期待される。また、補助記憶装置上で転置インデックスが占有する領域を抑制できれば、文書検索システムを小規模なストレージで稼動させることができる。
転置インデックスの圧縮方法の性能は、その大部分を占めるポスティングの圧縮方法に大きく依存する。前述したように、ポスティングは文書の識別番号と索引語の出現回数から成る。これらの数値データを、検索の高速性及びデータサイズの観点から、適切な方法で圧縮する必要がある。また、検索対象により、文書集合の文書が頻繁に追加・更新されることがある。これに対応するために、文書識別番号の分布について、事前情報無しに使用できる圧縮方法が望ましい。
更に、ブーリアン検索やフレーズ検索といった高度な検索を2分探索(アルゴリズムとデータ構造、平田富夫、森北出版)により高速化できるよう、転置リスト108の途中から、ポスティングを読み取ることができるデータ構造とすることが望ましく、そのために付加しなければならないデータの量を抑制する必要がある。
Eliasγ、δ符号による圧縮方法は、整数値を可変長ビット列で表現するため、圧縮率は高いが復号化に時間が掛かる。Golomb符号、Rice符号は、文書識別番号の分布に依存するパラメータが事前に適切に与えられなければ、その性能を発揮することはできない。
variable byte法は、小さい値であっても最低1バイトが必要な短所があり、可変長ビット列で整数を表現する方法に比べ、索引語の出現回数の圧縮には不向きである。
非特許文献5の技術は、圧縮対象とする文書識別番号の分布が前もってわからなければ、最適な符号化ができない。また、この技術は、各文書における単語の出現回数の圧縮を考慮していない。非特許文献6の技術でも、非特許文献5の技術の上記の問題は解決されていない。特許文献1は文書識別番号のみの圧縮をしており、索引語出現頻度は考慮されていない。また、特許文献2は文書の識別番号と文書中の単語出現位置の圧縮に関する技術であり、文書の識別番号と出現回数から成るポスティングを圧縮する技術ではない。また、非特許文献7に記載の方法は、ポスティングを複数のブロックに分割する際に未使用領域ができ、記憶領域を浪費してしまうほか、ブロックの大きさより狭い範囲の2分探索ができないという問題がある。
本発明の目的は、高速な文書検索のために、高速に復号可能な符号化により、可変長ビットを用いた数値圧縮法に比肩しうるポスティングの圧縮率を実現することにある。また本発明は、転置リストを途中から読んでもポスティングの境界がわかるようにする手段も提供する。
本発明は、variable byte法を拡張し、ポスティングをバイト列で表現しつつ、索引語の出現回数を少ないビット数で格納する。Variable byte法で単純に出現回数を圧縮すれば、最低でも1バイトが必要である。しかし、特定の索引語の1文書中での出現回数は多くの場合3以下であり、2ビットあれば表現できる。そこで、本発明では文書識別番号を表現するバイト列の中に、図3に示すように、出現回数を表現するための長さwビットのビットフィールド301(以下、出現回数フィールド)を設ける。ここに、wはパラメータである。wは、1バイトの中に収めるために高々8とすることが好ましく、圧縮効率を上げるために極力小さな値とするべきである。3以下の出現回数を表現できるようw=2とすることが好ましいが、出現回数1の場合が多ければ、w=1としてもよい。これにより、出現回数が2のw乗から1を減じた値までの場合、文書識別番号を表現するバイト列に埋め込んで符号化できる。2のw乗から1を減じた値より大きな出現回数を表現するときは、前記長さwビットのビットフィールドに特殊な値を書き込み、出現回数のvariable byte表現を後置する。
ポスティングには、文書識別番号や索引語出現回数以外の属性情報を記録する必要が生じる場合がある。想定される例として、検索対象文書から特定の文書が外れたときに、転置インデックス内の当該文書に対応するポスティングが無効になったことを示すフラグがある。そこで本発明では、図4に示すように、文書識別番号を表現するバイト列の中に、出現回数を表現するためのビットフィールド301に加え、さらに長さxビットのビットフィールド401(以下、属性フィールド)を確保し、ポスティングの属性情報を書き込めるようにする。ここに、xはパラメータである。
出現回数フィールド及び属性フィールドは、1バイトで表現できるよう1≦x+w≦8を満たすことが好ましい。x+w≧8の場合には、図13に示すように、文書識別番号及び出現回数・属性フィールドの一部のビットを格納する可変長バイト列の後に、出現回数・属性フィールドの残りの部分を格納した固定長バイト列を加えてポスティングを表現することが好ましい。この場合も、可変長バイト列部分の終端を、最上位ビット201を用いて表現すればよい。
なお、出現回数及び属性情報用のビットフィールドを設けることにより、文書識別番号を表現するためのビットが不足し、x+w<8でも、追加の1バイトが必要になる場合がある。その場合でも、出現回数及び属性情報を表現するための専用の1バイトを追加する場合に比べれば、データサイズは増加しない。
また、転置インデックスを先頭から読まなくても、途中から読んでポスティングの境界がわかるようにすることもできる。例えば図16に示すように、出現回数を表すバイト列1603において、各バイトの最上位ビット1601を1に固定して文書識別番号を表すバイト列と混同されることを防ぎつつ、その次のビット1602を用いて出現回数を表すバイト列の最後の1バイトかどうかを表現すればよい。
本発明により、特徴語の特定文書中の出現回数を、多くの場合に1バイト未満の少ないビット数で表現しつつも、バイト単位の符号により高速アクセスが可能な転置インデックスのデータ構造が提供される。また、転置インデックスを先頭から読まずに、途中から読んでもポスティングの境界がわかる手段を提供し、2分探索を可能とする。これにより、各索引語の転置リストにおいて特定の文書に対応するポスティングを探索する際、該文書に対応するポスティングが存在すれば該ポスティングに短時間で到達でき、該文書に対応するポスティングが存在しなければ存在しないことを短時間で判別できる。
本発明の方法による、ポスティングの圧縮形態の一例を説明する。
[実施例1]
図4に示すように、variable byte法における文書識別番号の表現において、最後の1バイトの下位wビット301を出現回数の記録に使用し、その左側(上位側)のxビット401を属性情報の記録に使用する。この図は、w=2,x=1の場合の例であるが、本発明ではw,xの値は2,1に限定されない。出現回数が2のw乗から1を減じた値以下の場合には、wビットの出現回数フィールドが、そのまま出現回数の2進数表現となる。それ以上の出現回数を記録する場合は、図5に示すように、出現回数フィールド301の全てのビットに0を書き込んでwビットでは表現できない出現回数であることを表現した上で、variable byte法で表現した出現回数を表すバイト列501を後置する。図5は、文書識別番号1234(2進数で100110 10010)、出現回数4321(2進数で0100001 1100001)のポスティングを符号化した例を示す。
次に、本発明の方法によって圧縮された転置インデックスを作成する装置の一形態を説明する。装置全体の概観を図6に示す。中央演算装置(CPU)601に、主記憶602が接続されている。必要に応じ、補助記憶603、CD−ROM・DVD等のリムーバブルメディア604、ネットワーク605、ユーザ端末606が接続される。本実施形態の装置は、CPU 601により実行される主記憶602上のプログラムとして索引語切り出し手段S701、索引語出現回数取得手段S702、文書識別番号割り当て手段S703、ポスティング圧縮手段S704を備える。
本装置におけるデータ及び処理の流れを、図7に示す。まず、入力として検索対象文書104を、CPU 601が必要に応じ主記憶602、補助記憶603、リムーバブルメディア604、ネットワーク605に配置された検索対象文書集合101から取得する。各々の検索対象文書104に、2通りの処理が行なわれる。まず、索引語切り出し手段S701により、文書中の索引語が切り出される。前述のように、切り出し手段として、公知の形態素解析方法又はn-gramが使用できる(情報検索アルゴリズム、北研二他著、共立出版)。さらに、それぞれの索引語が、検索対象となる文書104において出現する回数が、出現回数取得手段S702により取得される。出現回数を取得するためには、単純に索引語ごとに整数変数をひとつ用意して0に初期化した後、文書中に当該索引語の出現が検出される度に1ずつ増加させればよい。さらに文書識別番号割り当て手段S703により、検索対象文書毎に文書識別番号を割り当てる。この手段の好ましい実施形態の1つは、1に初期化された整数変数を1つ保持し、新しい文書識別番号が必要な際にこの変数の値を割り当て、その直後に前記変数の値を1増やすことである。S701、S702、S703により、各々の索引語について、文書識別番号105及び索引語出現回数106からなるポスティング107が得られる。このポスティングを、ポスティング圧縮手段S704を用いて圧縮し、得られたバイト列402を、必要に応じ主記憶602、補助記憶603、リムーバブルメディア604、ネットワーク605に配置される圧縮転置インデックス607へ出力する。
ポスティング圧縮手段S704が実行する処理のフローを、図8に示す。入力として、ポスティングの文書識別番号d 105と、索引語出現回数f 106が与えられ、パラメータである整数x,wも与えられる。まず、ポスティング圧縮手段S704は、出力するバイト列402の出現回数フィールド301に格納する値f’を決定する。ステップS801において、fがwビットで表現できるか判定し、表現できればf’=f、表現できなければf’=0とする。次に、ステップS802において、dとf’を合成した整数d’を構築する。この整数d’は、下位wビットがf’に等しく、下位x+wビットを除いた値がdに等しい。ステップS803において、この整数d’のvariable byte表現を出力する。variable byte表現の出力方法は、後述する。fがwビットで表現可能か否かを、ステップS804でf’=0か否かにより判定する。f’≠0ならば表現可能で、圧縮処理は終了である。f’=0ならばfはwビットで表現できないことを意味し、fの値をステップS805においてvariable byte表現で出力する。
図9を用いて、整数Aのvariable byte表現の出力方法の一形態を説明する。まず、ステップS901-S903において、変数Lを、2の7×n乗がAより大きい最小の自然数nにセットする。次に、S904-S905のループで、Aの下位7ビット以外のAの値を、7ビットずつ上位ビットから出力する。このとき、Aを右へL×7ビットシフトした後、127と論理積をとることにより下位7ビット以外のビットを0とし、128を加えることで下位から8ビット目を1とする。最後に、Aの下位7ビットをステップS906で出力する。ステップS906では、127と論理積を取ることで、下位7ビット以外のビットを0とする。
なお、本装置に検索対象文書ではなくポスティングが直接与えられる場合には、ステップS701からS703を省略して、ポスティング圧縮手段S704だけを実行すれば圧縮された転置インデックスを構築できる。
本発明の方法で、図1の転置インデックス102を圧縮した形態の1つを、図14に示す。この図は、x=0,w=2の場合の例である。索引語103ごとにその索引語が出現する文書の識別番号と当該文書中の出現回数が複数記録されている。この例では、文書数が高々4であるため、文書識別番号は全て、最終バイト中の文書識別番号に割り当てられたビット領域203内で表現されている。出現回数も高々2でw=2ビットで表現可能なため、全てのポスティングが1バイトで表現可能である。このため、バイト列の終端か否かを表す最上位ビット201は、全て0となっている。なお、転置インデックスには、各索引語に対するポスティングの列の終端を表す情報が必要である。図14では、存在しない文書の文書識別番号0を表現するバイト1401をリストの終端の印として用いている。このような1バイトをリストの終端に置く代わりに、各索引語のポスティングの数あるいはポスティングの総バイト数を記録し、ポスティングの終端を認識させてもよい。
当業者には、本発明のポスティング圧縮方法に様々なバリエーションがあることが明らかであろう。図4の例では、文書識別番号の最上位ビットが先頭のバイトで最下位ビットが最終バイトに格納されているが、バイトの並び順を変更し、例えば図10に示すように逆順としてもよい。最上位ビットによりバイト列の終端か否かを表現していたが、最下位ビットを用いてもよい(図11)。出現回数フィールドと属性フィールドを最終バイトの下位ビットとしたが、上位ビットに配置してもよい(図12)。また、出現回数フィールドと属性フィールドを先頭・末尾以外のバイトに格納してもよい。整数のvariable byte表現において、最下位から7ビット以外が出力される場合には、前記整数を右に7ビットシフトして得られる整数は常に1以上である。このように1以上の値を扱うとわかっている場合には、出力する前に1を減じ、復号する際に1を加えて、前記整数を表現するビット数の削減を試みても良い(F. Scholer, H.E. Williams, J. Zobel, Compression of Inverted Indexes for Fast Query Evaluation, Proc. 25th Ann. Int’l ACM SIGIR Conf. Research and Development in Information Retrieval, pp.222-229, 2002.)。上記のバリエーションを、組み合わせて使用してもよい。さらに、文書識別番号を昇順にソートし差分を取ることにより、圧縮率の向上を図っても良い(I.H.Witten, A. Moffat, and T.C.Bell, Managing Gigabytes: Compressing and Indexing Documents and Images, second ed. San Francisco: Morgan Kaufmann, 1999)。
本発明の方法で圧縮した転置インデックスの大きさ及び転置インデックスの読込速度を他の方式と実験により比較した。実験の対象としたのは、以下の各方式である。
(A) 本発明の方法。
(B) 文書識別番号、出現回数ともに圧縮なし。
(C) 文書識別番号、出現回数ともにvariable byte法。
(D) 文書識別番号、出現回数ともにEliasγ符号。
(E) 文書識別番号はEliasδ符号、出現回数はEliasγ符号。
実験に用いたデータは、日経新聞3年分の文書で、索引語は形態素解析で得られた単語とした。メインメモリ1GB、CPUがPentiumIV 1.7GHzのLinuxをOSとする計算機を使用した。処理の実装には、C++言語を使用した。転置インデックス全体の圧縮には、各索引語のポスティングのリストの終端を表現する手段が必要である。本発明の方法及び圧縮なしの場合には、文書識別番号が0の場合をポスティングの終端とした。その他の方式では、出現回数が4の場合に終端とし、4以上の出現回数nはn+1で表現することとした。実験では、文書識別番号を昇順にソートし差分を取った上で、各種圧縮法で実際に全てのポスティングを圧縮し、圧縮後のポスティング全体の大きさを計測した。さらに、全ポスティングを読み取る時間を測定し、読取速度を計算した。時間測定では、10回測定を行ない、平均値を使用した。実験結果を表1に示す。
Figure 0005346156
圧縮しない場合(B)にほぼ400MBにも達する転置インデックスの大きさは、(B)以外のどの方式でも圧縮前の1/3以下となった。文書識別番号の圧縮にEliasδ符号を使用したとき(E)に最大の圧縮率が得られ、Eliasγ符号の場合(D)がこれに続いた。Eliasδ符号は、Eliasγ符号に比べ大きな整数の圧縮に適しており、これが圧縮率向上つながっている。一方、圧縮されたポスティングの展開速度については、Eliasδ符号、Eliasγ符号では、圧縮率の高さと引き換えに復号処理の速度が遅くなっているが、variable byte法(C)は大幅に速いという結果が得られた。
これらの方式と比較した場合、本発明の方法(A)の第一の特徴は、圧縮されたポスティングの復号速度にある。今回の実験では、他の全ての圧縮方法を上回る処理速度が得られた。第二の特徴は、圧縮率の高さである。最も圧縮率が高かった(E)の方法に比べ、インデックスサイズの増加は84.70/68.55=1.23倍に止まり、(C)の方法のサイズに対して84.70/114.16=74.2%にまで圧縮できた。
各方式の、圧縮後の転置インデックスの大きさと、圧縮転置インデックス全体を読み取るために要した時間の、2次元プロットを図15に示す。この図において原点に近いほど、圧縮率及び復号速度が優れていることを表す。圧縮率では「*」で表される(E)の方法、処理速度では「■」で表される(B)すなわち圧縮無しの場合が最も優れていたが、現実の応用では、圧縮率と復号速度の両方が優れていなければならない。図15において「◆」で表される本発明の方法(A)は、圧縮率及び処理速度のいずれにおいても、最善ではないものの他のほとんどの手法よりも優れた結果を示しており、応用上有用な技術といえる。
[実施例2]
次に、転置リスト108を先頭から読まずに途中から読んでも、ポスティングの境界がわかるようにする実施例について説明する。図22は、本実施例の方法によって圧縮される転置インデックスを作成し、それを用いて検索を行う装置の概略図である。本装置は、中央演算装置(CPU)601に、主記憶602が接続されている。必要に応じ、補助記憶603、CD−ROM・DVD等のリムーバブルメディア604、ネットワーク605、ユーザ端末606が接続される。本装置は、CPU 601により実行される主記憶602上のプログラムとして索引語切り出し手段S701、索引語出現回数取得手段S702、文書識別番号割り当て手段S703、ポスティング圧縮手段S704を備える。また、作成された圧縮転置インデックス607を用いて検索を実行する検索手段S705を備える。検索質問は主としてユーザ端末606から入力され、検索手段S705に渡される。
本実施例では、図5にて説明したポスティングの圧縮形式を図16に示すように一部変更する。すなわち、出現回数を表すバイト列1603の最上位ビット1601にはいずれも1を書き込み、その次のビット1602が1か0かによって前記バイト列1603の終端バイトかどうかを表現する。本実施例では、最上位ビット1601の次のビット1602が0であるとき、そのバイトは、出現回数を表すバイト列1603の最後の1バイトであるとする。出現回数自体は、variable byte法で各バイト中の7ビットを用いて表現したように、上位2ビット(1601, 1602)を除いた6ビットを用いて表現する。こうすることにより、1つのポスティングを表すバイト列中で最上位ビットが0であるバイトは、文書識別番号を格納する可変長バイト列の末尾の1バイトのみになる。図16は、文書識別番号1234(2進数で100110 10010)、出現回数4321(2進数で1 000011 10001)のポスティングを圧縮した例である。
転置リストを途中から読めるようにしたポスティング圧縮手段の処理フローを図18に示す。この処理は、図8に示したフローとほぼ同様であるが、fを表すバイト列を出力するステップS1801のみが異なる。このステップの処理内容を、図19を用いて説明する。まず、ステップS1901-S1903において、変数Aをfに、変数Lを2の6×n乗がAより大きい最小の自然数nにセットする。次にL≧2の間、S1904-S1905のループで、Aの下位6ビット以外のAの値を、6ビットずつ上位ビットから出力する。このとき、Aを右へL×6ビットシフトした後、63(2進数で111111)と論理積を取ることにより下位6ビット以外のビットを0とし、192(2進数で11000000)を加えることで下位から8ビット目および7ビット目を1とする。最後にステップS1906で、Aの下位6ビットを出力する。このとき、63と論理積を取った上で128(2進数で10000000)を加えることで、下位から8ビット目を1、7ビット目を0とする。
文書検索にあたっては、例えば「(半導体 AND 電力)OR 磁気」のように単語の組み合わせを論理式で指定して検索するブーリアン検索、あるいは例えば「情報技術の未来」のように複数の単語が連続するフレーズを含む文書を検索するフレーズ検索が頻繁に用いられるため、これらの検索を高速に実行する必要がある。このような複数の索引語を含む文書の検索要求、例えば「索引語Aと索引語Bを同時に含む文書」という検索質問に対しては、もし索引語Aが少数の文書にしか出現しないのであれば、索引語Aが出現する文書に索引語Bが現れるかどうかをチェックするだけで、検索処理を実行できるようになる。すなわち、索引語Aの転置リストから、索引語Aが含まれる文書の文書識別番号を抽出し、それらの文書識別番号が索引語Bの転置リストに存在するかどうかをチェックすればよい。索引語Bの転置リストが文書識別番号の順に配列され、かつ、転置リストの途中からポスティングを読むことができれば、このチェックを2分探索によって高速化できる。
本実施例における、転置リストを対象とする2分探索の方法を説明する。本実施例によって圧縮されたポスティングでは、出現頻度が2のw乗から1を減じた値以下のとき「最上位ビットが1ならばポスティングの途中、0ならばポスティングの終端」という条件が成立する。出現頻度が2のw乗以上のときには、出現頻度を表すバイト列1603が存在するために最上位ビットが0のバイトがポスティングの終点にはならないが、最上位ビットが0であるバイトは1つのポスティングを構成するバイト列にただ一つだけである。これらのことを利用してポスティング内の情報を読み取り、2分探索を行う。
図20は、2分探索にあたって、所望の索引語に対する転置リストの途中の読みたい位置の周辺で、ポスティングの先頭を探索する処理の概略図である。図21は、ポスティングの先頭検出処理の流れを示したフローチャートである。これらの図を用いて、ポスティングの先頭検出処理を説明する。
(1) 最初に、転置リスト中の、2分探索で読みたい途中位置に移動する(S2101)。2分探索の最初における移動であれば、このステップで転置リストの中央位置に移動する。2回目以降の移動であれば、このステップS1701では未探索範囲の中央の位置に移動する。
(2) 次に、その位置またはその位置の上流側のなるべく近いバイトで、最上位ビットが0のバイトを探す。そのためには、まず、ステップS2101で移動したバイトの最上位ビットが0かどうかを判定する(S2102)。ステップS2102の判定で、最上位ビットが0であれば、次の処理S2104に移る。最上位ビットが0でない場合には、リストの先頭方向に遡って1バイトずつ読み込み、最上位ビットが0であるバイトを探す(S2102,S2103)。
(3) 最上位ビットが0であるバイトが見つかると、そのバイトを含むポスティングの終端バイトを探す。ポスティングの終端バイトを見つけるにあたっては、ステップS2102で見つけた最上位ビットが0であるバイト中の出現回数フィールド301を読み取る。ステップS2104の判定で、そこに書き込まれているのが0以外であれば、そのバイトがポスティングの終端である。出現回数フィールドの全てのビットに0が書き込まれている場合は、その後に出現回数を表すバイト列1603が続いている。その場合、最上位ビット1601に隣接するビット1602が0であるバイトが見つかるまで1バイト下流に移動することを繰り返す(S2105,S2106)。最上位ビット1601の次のビット1602が0であるバイトが見つかれば、そのバイトがポスティングを表現するバイト列の終端である。ポスティングの終端バイトが分かれば、その次の1バイトは新しいポスティングの先頭の1バイトであるため、1バイト下流に移動してから(S2107)、ポスティングの読み取りを開始する(S2108)。
このようにして、本実施例の方法によって圧縮されたポスティングを含む転置リストは、先頭から読むことなく途中から読めるようになり、2分探索が可能になる。その結果、転置インデックスを先頭から順に読まなくても、特定の文書に対応するポスティングに素早くアクセスできるようになる。ある索引語の転置リストの長さをLとするとき、特定の文書に対応するポスティングに到達するために、先頭から順に読み場合には平均L/2個のポスティングを読む必要があるが、上記の2分探索を行なえば読む必要のあるポスティングの数はlog(L)のオーダーに減少し、検索処理の高速化が図れる。
図22に示した装置のユーザ端末606から複数の検索語を論理式で結合したブーリアン検索式あるいは複数の索引語が連続するフレーズが検索式として入力されたとき、2分探索は次のようにして行われる。いま、例えば検索式「(索引語A)and(索引語B)」がユーザ端末606から入力されたとする。すると、検索手段S705は、ANDで結合された索引語Aと索引語Bに対応する転置リストのうち、ポスティングの数が少ないもの(仮に、索引語Aとする)を選択し、索引語Aの転置リストから、索引語Aが含まれる文書識別番号d1,d2,d3,…を抽出する。次に、検索手段S705は、索引語Bの転置リスト中に先に取得した文書識別番号d1,d2,d3,…のそれぞれが存在するかどうかを2分探索によって探索する。その際、図20及び図21にて説明したポスティングの先頭位置検出処理を実行してポスティングを読み取りながら、探索中の文書識別番号が索引語Bの転置リスト中に含まれているか否かを判断する。具体的には、文書識別番号d1については、最初、図21に示した方法により索引語Bの転置リストの中央位置のポスティングの文書識別番号d’を読み取る。d’がd1より大きいとき、もし、索引語Bの転置リストに文書識別番号d1が含まれているとすれば、それは今読み取ったポスティングより前にあるはずなので、中央より前で同様に2分探索を行う。逆にd’がd1より小さければ、中央より後の配列で同様に2分探索を行う。この操作を反復することにより、文書識別番号d1が索引語Bの転置リストに存在するかどうか探索する。文書識別番号d2,d3が索引語Bの転置リストに存在するかどうかも、同様に2分探索で探索することができる。索引語Aの転置リストに含まれる文書識別番号(d1,d2,d3 等)のうち、索引語Bの転置リストに含まれる文書識別番号の文書は検索式「(索引語A)and(索引語B)」を満たす文書であるので、検索手段S705は、それらの文書の識別番号またはそれらの文書そのものをユーザ端末606に出力して検索が完了する。
当業者には、実施例1と同様に、本実施例のポスティング圧縮方法にも様々なバリエーションがあることが明らかであろう。文書識別番号の最上位ビットを先頭のバイトに格納し最下位ビットを最終バイトに格納するのに代えて、バイトの並び順を変更し、逆順としてもよい。最上位ビットにより文書識別番号を表現する可変長バイト列の終端か否かを表現するのに代えて、最下位ビットを用いてもよい。この場合、図17に示すように、出現回数を表す追加のバイト列1703は、最下位ビット1702には常に1を書き込み、それに隣接する次のビット1701によって追加のバイト列の終端かどうかを示せばよい。整数のvariable byte表現において、最下位から7ビット以外が出力される場合には、前記整数を右に7ビットシフトして得られる整数は常に1以上である。このように1以上の値を扱うとわかっている場合には、出力する前に1を減じ、復号する際に1を加えて、前記整数を表現するビット数の削減を試みても良い(F. Scholer, H.E. Williams, J. Zobel, Compression of Inverted Indexes for Fast Query Evaluation, Proc. 25th Ann. Int’l ACM SIGIR Conf. Research and Development in Information Retrieval, pp.222-229, 2002.)。同様の技術が、出現回数を6ビットずつ出力する処理S1801でも使用できる。さらに、文書識別番号を昇順にソートし差分を取ることにより、圧縮率の向上を図っても良い(I.H.Witten, A. Moffat, and T.C.Bell, Managing Gigabytes: Compressing and Indexing Documents and Images, second ed. San Francisco: Morgan Kaufmann, 1999)。上記のバリエーションを、組み合わせて使用してもよい。 なお、転置リストは、ひとつながりのメモリ領域ではなく、不連続な複数の領域に格納されることがある。前述の通り、ポスティング中の文書識別番号は1つ前のポスティングの文書識別番号との差分を記録することで圧縮率を向上できるが、前記不連続な領域の個々の連続領域内で2分探索を可能とするためには、文書識別番号を差分をとらずにそのまま記録するか、または、ブロックの先頭の文書識別番号のみ差分を取らずに直接記録し、先頭以外の文書識別番号についてはブロックの先頭の文書識別番号との差分を書く、といった修正が必要である。
2分探索において、ある程度範囲を絞り込んだら、線形探索(ポスティングを順番に読んで特定の文書に対応するポスティングを探す方法)に切り替えることが好ましい。本実施例の2分探索はポスティングの先頭位置検出処理が必要なため、探索範囲が小さいとき(例えば、10バイト程度)は線形探索の方が速くなると考えられるからである。
本発明は、高速な文書全文検索を実現するための技術である。簡便な圧縮方式のため、高速な検索処理を可能とする一方、圧縮率が高い可変長ビット列で圧縮する方式と比べても、データ量の増加は少ない。さらに、転置リスト上の2分探索が可能なため、フレーズ検索やブーリアン検索のような高度な検索を高速化できる。
検索対象となる文書集合と、それに基づき構築される転置インデックスの概略図。 Variable byte法により圧縮された整数値の例を示す図。 本発明の方法により圧縮されたポスティングの例を示す図。 本発明の方法により圧縮されたポスティングの例を示す図。 本発明の方法により圧縮されたポスティングの例を示す図。 本発明を実施する装置の1つの形態を示す概略図。 本発明を実施する装置の一形態における、データ及び処理の流れを示す図。 本発明のポスティング圧縮手段の処理の一形態を表すフローチャート。 整数のvariable byte表現を出力する処理の一形態を表すフローチャート。 図4に示す圧縮の形態を変更し、1つのポスティングに対応するバイト列の前後を入替えた形態を示す図。 図4に示す圧縮の形態を変更し、バイト列の終端か否かを表現するビットを、最上位ビットから最下位ビットに移した形態を示す図。 図4に示す圧縮の形態を変更し、出現回数フィールド及び属性フィールドを、バイト列の最終バイトの下位ビットから上位ビットに移動した形態を示す図。 x+w≧8の場合に、本発明の方法により圧縮されたポスティングの例を示す図。 本発明の方法により圧縮された転置インデックスの例を示す図。 本発明の方法及び、公知の数値圧縮法により圧縮された転置インデックスの大きさと、前記転置インデックス全体の読み込み処理に要した時間の2次元プロット。 本発明の方法により圧縮されたポスティングの例を示す図。 本発明の方法により圧縮されたポスティングの例を示す図。 転置リストの途中からポスティングを読むことを可能とする、ポスティング圧縮処理の一形態を表すフローチャート。 転置リストの途中からポスティングを読むことを可能とする、ポスティング圧縮処理の一形態において、出現回数を表現するバイト列を出力する処理のフローチャート。 転置リストの途中でポスティングの先頭を探索する処理の概略図。 ポスティングの先頭位置検出処理の流れを示したフローチャート。 本発明を実施する装置の1つの形態を示す概略図。 転置リストの説明図。
符号の説明
101: 検索対象文書の集合
102: 転置インデックス
103: 索引語
104: 検索対象文書
105: 文書の識別番号
106: 出現回数
107: ポスティング
108: 転置リスト
201: 当該バイトが、1つの整数値を表すバイト列の最終バイトか否かを表すビット
202: 整数123456のvariable byte表現
203: 圧縮したい整数を表現するビット領域
301: 出現回数フィールド
401: 属性フィールド
402: 本発明の方法により圧縮されたポスティングを表現するバイト列
501: Variable byte法で表現された出現回数を表すバイト列
601: 中央演算装置(CPU)
602: 主記憶装置
603: 補助記憶装置
604: リムーバブルメディア
605: ネットワーク
606: ユーザ端末
607: 圧縮された転置インデックス
1401: 1つの索引語に関するポスティングリストの終端を表すデータ
1601: 文書識別番号の終端でないことを表現するためのビット
1602: 出現回数を表現するバイト列の終端を表現するためのビット
1603: 出現回数を表すバイト列
1701: 出現回数を表現するバイト列の終端を表現するためのビット
1702: 文書識別番号の終端でないことを表現するためのビット
1703: 出現回数を表すバイト列

Claims (7)

  1. 記憶装置に入力された複数の電子文書を含む文書集合中の個々の電子文書から単語あるいは連続する複数の文字からなる索引語を切り出す工程と、
    それぞれの索引語が各電子文書中に出現する回数を取得する工程と、
    前記文書集合中の各電子文書にそれぞれ異なる文書識別番号を割り当てる工程と、
    各々の索引語について得られた文書識別番号と索引語出現回数の組であるポスティングをデータ圧縮する工程とをコンピュータに実行させると共に、
    前記ポスティングをデータ圧縮する工程は、各ポスティング中の電子文書の文書識別番号を可変長のバイト列に書き込み、wを1以上8以下の与えられた整数とするとき、前記バイト列中のwビットに1から(2W−1)までの索引語出現回数を書き込み、2W以上の索引語出現回数を追加のバイト列に書き込む
    ことを特徴とするプログラム。
  2. 請求項1記載のプログラムにおいて、xを、x+wが1以上8以下となる与えられた整数とする場合、前記ポスティングを符号化するバイト列中のxビットに追加情報を書き込む
    ことを特徴とするプログラム。
  3. 請求項記載のプログラムにおいて、
    前記ポスティングをデータ圧縮する工程は、各バイト中の特定の位置のビットに電子文書の文書識別番号を符号化したバイト列の最終バイトか否かを示す情報を書き込むと共に、前記追加のバイト列について、各バイト中の前記特定の位置のビットに電子文書の文書識別番号を符号化したバイト列の最終バイトではないことを示す情報を書き込み、前記特定の位置のビットに隣接するビットに当該追加のバイト列の最終バイトか否かを示す情報を書き込む
    ことを特徴とするプログラム。
  4. コンピュータが、複数の電子文書を含む文書集合を記憶装置に入力する工程と、
    コンピュータが、前記入力された文書集合中の個々の電子文書から単語あるいは連続する複数の文字からなる索引語を切り出す工程と、
    コンピュータが、それぞれの索引語が各電子文書中に出現する回数を取得する工程と、
    コンピュータが、前記文書集合中の各電子文書にそれぞれ異なる文書識別番号を割り当てる工程と、
    コンピュータが、各々の索引語について得られた文書識別番号と索引語出現回数からなるポスティングをデータ圧縮する工程と、
    コンピュータが、データ圧縮されたポスティングを含む転置インデックスを生成する工程とを有し、
    前記ポスティングをデータ圧縮する工程では、各ポスティング中の電子文書の文書識別番号を可変長のバイト列に書き込み、wを1以上8以下の与えられた整数とするとき、索引語出現回数が1から(2W−1)までのときは当該索引語出現回数を前記バイト列中のwビットに書き込み、索引語出現回数が2W以上のときは当該索引語出現回数を前記wバイトと追加のバイト列を用いて書き込む
    ことを特徴とする転置インデックス作成方法。
  5. 請求項4記載の転置インデックス作成方法において、xを、x+wが1以上8以下となる与えられた整数とする場合、コンピュータが、前記ポスティングを符号化するバイト列中のxビットに追加情報を書き込む
    ことを特徴とする転置インデックス作成方法。
  6. 請求項記載の転置インデックス作成方法において、
    コンピュータが前記ポスティングをデータ圧縮する工程は、各バイト中の特定の位置のビットに電子文書の文書識別番号を符号化したバイト列の最終バイトか否かを示す情報を書き込むと共に、前記追加のバイト列について、各バイト中の前記特定の位置のビットに電子文書の文書識別番号を符号化したバイト列の最終バイトではないことを示す情報を書き込み、前記特定の位置のビットに隣接するビットに当該追加のバイト列の最終バイトか否かを示す情報を書き込む
    ことを特徴とする転置インデックス作成方法。
  7. それぞれに識別番号が割り当てられた複数の電子文書からなる文書集合の全ての索引語について、前記索引語が出現する電子文書の識別番号と前記電子文書中での当該索引語の出現回数の組であるポスティングを格納した転置インデックスを用いた検索手段による検索方法であって、
    前記転置インデックスは、各ポスティング中の電子文書の識別番号が可変長のバイト列としてコンピュータにより作成され、wを1以上8以下の与えられた整数とするとき、コンピュータは、前記バイト列中のwビットに1から(2W−1)までの出現回数を書き込み、2W以上の出現回数を前記wバイトと追加のバイト列を用いて書き込み、前記電子文書の識別番号を符号化したバイト列については、各バイト中の特定の位置のビットに当該バイト列の最終バイトか否かを示す情報を書き込み、前記追加のバイト列については、各バイト中の前記特定の位置のビットにより文書識別番号の最終バイトではないことを示す情報を書き込み、前記特定の位置のビットに隣接するビットに当該追加のバイト列の最終バイトか否かを示す情報を書き込むとき、
    コンピュータが、入力部から第1の索引語と第2の索引語を受け付ける工程と、
    コンピュータが、前記転置インデックス中の前記第1の索引語の転置リストに含まれる電子文書の識別番号を取得する工程と、
    コンピュータが、前記取得した識別番号が前記第2の索引語の転置リストに含まれているかどうかを2分探索によって判定する工程と、
    コンピュータが、前記取得した識別番号のうち前記第2の索引語の転置リストに含まれている識別番号またはその識別番号に対応する電子文書を検索する工程とを有し、
    前記2分探索に際し、コンピュータが、読み取り位置を前記第2の索引語の転置リストの中央位置のバイトに移動し、当該バイトが前記電子文書の識別番号を符号化したバイト列の最終バイトか否かを判定し、最終バイトでない場合には最終バイトが見つかるまで前記転置リストの先頭の方向に1バイトずつ読み進み、前記電子文書の識別番号を符号化したバイト列の最終バイト中の出現回数が書き込まれるwビットの情報から前記出現回数を書き込む追加のバイト列が存在するか否かを判定し、追加のバイト列が存在しないと判定されたときは当該バイトの次のバイトをポスティングの先頭としてポスティングを読み取り当該ポスティング中の識別番号を取得し、追加のバイト列が存在すると判定されたときは追加のバイト列の最終バイトが見つかるまで前記転置リストの下流側に1バイトずつ読み進み、追加のバイト列の最終バイトの次のバイトをポスティングの先頭としてポスティングを読み取り当該ポスティング中の識別番号を取得する処理を実行する
    ことを特徴とする検索方法。
JP2007070697A 2006-11-08 2007-03-19 プログラム、転置インデックスの格納方法及び検索方法 Active JP5346156B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007070697A JP5346156B2 (ja) 2006-11-08 2007-03-19 プログラム、転置インデックスの格納方法及び検索方法
US11/936,277 US8321485B2 (en) 2006-11-08 2007-11-07 Device and method for constructing inverted indexes

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2006303195 2006-11-08
JP2006303195 2006-11-08
JP2007070697A JP5346156B2 (ja) 2006-11-08 2007-03-19 プログラム、転置インデックスの格納方法及び検索方法

Publications (3)

Publication Number Publication Date
JP2008140357A JP2008140357A (ja) 2008-06-19
JP2008140357A5 JP2008140357A5 (ja) 2009-08-27
JP5346156B2 true JP5346156B2 (ja) 2013-11-20

Family

ID=39601702

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007070697A Active JP5346156B2 (ja) 2006-11-08 2007-03-19 プログラム、転置インデックスの格納方法及び検索方法

Country Status (1)

Country Link
JP (1) JP5346156B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
JP7006462B2 (ja) * 2018-04-02 2022-01-24 富士通株式会社 データ生成プログラム、データ生成方法および情報処理装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3531281B2 (ja) * 1995-04-18 2004-05-24 富士ゼロックス株式会社 文書登録検索装置
JP3898717B2 (ja) * 1997-02-28 2007-03-28 富士通株式会社 データ圧縮/復元装置およびデータ圧縮/復元方法
JP2001312517A (ja) * 2000-05-02 2001-11-09 Mitsubishi Electric Corp インデクス生成装置及び文書検索装置

Also Published As

Publication number Publication date
JP2008140357A (ja) 2008-06-19

Similar Documents

Publication Publication Date Title
US8321485B2 (en) Device and method for constructing inverted indexes
US8838551B2 (en) Multi-level database compression
TWI676903B (zh) 藉由從駐存在內容相關篩中之主要資料元件取得資料的資料之無損縮減
Adjeroh et al. The Burrows-Wheeler Transform:: Data Compression, Suffix Arrays, and Pattern Matching
KR101527994B1 (ko) 검색 인덱스 포맷 최적화
KR101157693B1 (ko) 토큰스페이스 저장소와 함께 사용하기 위한 멀티-스테이지질의 처리 시스템 및 방법
US10389378B2 (en) Computer product, information processing apparatus, and information search apparatus
JP5812188B2 (ja) プログラム、圧縮データ生成方法、伸張方法、情報処理装置、および記録媒体
JP5831298B2 (ja) プログラム、情報処理装置およびインデックス生成方法
JPH08255155A (ja) 全文登録語検索装置および方法
Claude et al. Universal indexes for highly repetitive document collections
González et al. Locally compressed suffix arrays
US20040225497A1 (en) Compressed yet quickly searchable digital textual data format
TW202147787A (zh) 利用主要資料的局部性來有效率檢索已使用主要資料篩而被無損地縮減的資料
JP2010198425A (ja) 文書管理方法、装置
JP5346156B2 (ja) プログラム、転置インデックスの格納方法及び検索方法
KR20000069633A (ko) 파일 처리 방법, 데이터 처리 장치 및 기억 매체
Arroyuelo et al. Practical approaches to reduce the space requirement of lempel-ziv--based compressed text indices
Dao et al. An indexing scheme for structured documents and its implementation
Gagie et al. Efficient and compact representations of prefix codes
JP5207721B2 (ja) 転置インデックス作成装置及びフォワードインデックス作成装置
Awajan et al. Hybrid technique for Arabic text compression
US6731229B2 (en) Method to reduce storage requirements when storing semi-redundant information in a database
Nguyen et al. Decision tree algorithms for image data type identification
JP4985096B2 (ja) 文書解析システム、および文書解析方法、並びにコンピュータ・プログラム

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090709

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090709

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111116

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111122

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120120

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120605

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120831

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20120911

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20121116

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130816

R151 Written notification of patent or utility model registration

Ref document number: 5346156

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151