(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-01
(45)【発行日】2024-04-09
(54)【発明の名称】コード化装置、コード化方法及びコード化プログラム
(51)【国際特許分類】
G06F 16/901 20190101AFI20240402BHJP
【FI】
G06F16/901
(21)【出願番号】P 2020180704
(22)【出願日】2020-10-28
【審査請求日】2023-03-06
(73)【特許権者】
【識別番号】000208891
【氏名又は名称】KDDI株式会社
(74)【代理人】
【識別番号】100106002
【氏名又は名称】正林 真之
(74)【代理人】
【識別番号】100120891
【氏名又は名称】林 一好
(72)【発明者】
【氏名】三本 知明
(72)【発明者】
【氏名】清本 晋作
【審査官】原 秀人
(56)【参考文献】
【文献】特表2018-503205(JP,A)
【文献】特開2014-137423(JP,A)
【文献】特開2018-013863(JP,A)
【文献】特開2013-152654(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
(57)【特許請求の範囲】
【請求項1】
複数のデータの組み合わせそれぞれに定義された意味的距離を取得する距離取得部と、
前記意味的距離に基づいて、前記データをコードに変換する変換部と、を備え、
前記変換部は、前記コードの組み合わせそれぞれの符号間距離と前記意味的距離との差分を最小化するように、前記コードを生成するコード化装置。
【請求項2】
前記変換部は、前記複数のデータの意味的な相互関係を表現したグラフの構造に基づいて、各ノードにビット列を付与することにより前記コードを生成する請求項1に記載のコード化装置。
【請求項3】
前記複数のデータの意味的な相互関係は、階層木により表現され、
前記変換部は、前記階層木のルートに至るパスの一部が共通するノードに対して共通のビット列を付与することにより前記コードを生成する請求項2に記載のコード化装置。
【請求項4】
前記距離取得部は、前記階層木の構造に基づき定義された各ノードの情報量から前記意味的距離を算出する請求項3に記載のコード化装置。
【請求項5】
前記変換部は、前記コードの長さに応じた効用関数を最小化するように、前記コードを生成する請求項1に記載のコード化装置。
【請求項6】
前記変換部は、前記コードの組み合わせそれぞれについて、排他的論理和のハミング重みを前記意味的距離と一致させつつ、前記効用関数を最小化するための前記コードの要素を決定する請求項5に記載のコード化装置。
【請求項7】
複数のデータの組み合わせそれぞれに定義された意味的距離を取得する距離取得ステップと、
前記意味的距離に基づいて、前記データをコードに変換する変換ステップと、をコンピュータが実行し、
前記変換ステップにおいて、前記コードの組み合わせそれぞれの符号間距離と前記意味的距離との差分を最小化するように、前記コードを生成するコード化方法。
【請求項8】
請求項1から請求項6のいずれかに記載のコード化装置としてコンピュータを機能させるためのコード化プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ間の近似マッチングを行うための装置、方法及びプログラムに関する。
【背景技術】
【0002】
従来、ブルームフィルタ(BF)を用いたPrivacy Preserving Record Linkage(PPRL)の研究が行われてきた(例えば、非特許文献1及び2参照)。また、例えば非特許文献3及び4では、マルチパーティによる近似マッチングアルゴリズムが提案されている。
【先行技術文献】
【非特許文献】
【0003】
【文献】D. Karapiperis, A. Gkoulalas-Divanis, and V. S. Verykios, “FEDERAL: A framework for distance-aware privacy-preserving record linkage,” IEEE Trans. Knowl. Data Eng., vol. 30, no. 2, pp. 292-304, Feb. 2017.
【文献】J. Boyd, S. Randall, and A. Ferrante, “Application of privacy-preserving techniques in operational record linkage centres,” in Medical Data Privacy Handbook, Berlin, Germany: Springer, 2015.
【文献】S. M. Randall, A. M. Ferrante, J. H. Boyd, J. B. Semmens, Privacy-preserving record linkage on large real world datasets, in Elsevier JBI(2014) volume 50, pp. 205-212.
【文献】R. Schnell, T. Bachteler, and J. Reiher, “Privacy-preserving record linkage using Bloom filters,” BMC Medical Inform. Decision Making, vol. 9, no. 1, 2009, Art. no. 41.
【発明の概要】
【発明が解決しようとする課題】
【0004】
非特許文献3及び4で提案されている従来の手法では、文字列をn-gramで分割してBFに格納することで、BFの各配列に立つビットの一致率によって近似が行われる。
しかしながら、この手法では、TomとTimというような文字列の近さを評価することは可能だが、文字列の距離は遠くても意味的に近いデータ、例えば、baseballとsoccerのようなデータの近さ(互いに球技という意味で近い)を評価することはできなかった。このため、匿名化されたカテゴリカルデータ間で近似マッチングを行うことは難しかった。
【0005】
本発明は、カテゴリカルデータを近似マッチングが可能なコードに変換できるコード化装置、コード化方法及びコード化プログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明に係るコード化装置は、複数のデータの組み合わせそれぞれに定義された意味的距離を取得する距離取得部と、前記意味的距離に基づいて、前記データをコードに変換する変換部と、を備え、前記変換部は、前記コードの組み合わせそれぞれの符号間距離と前記意味的距離との差分を最小化するように、前記コードを生成する。
【0007】
前記変換部は、前記複数のデータの意味的な相互関係を表現したグラフの構造に基づいて、各ノードにビット列を付与することにより前記コードを生成してもよい。
【0008】
前記複数のデータの意味的な相互関係は、階層木により表現され、前記変換部は、前記階層木のルートに至るパスの一部が共通するノードに対して共通のビット列を付与することにより前記コードを生成してもよい。
【0009】
前記距離取得部は、前記階層木の構造に基づき定義された各ノードの情報量から前記意味的距離を算出してもよい。
【0010】
前記変換部は、前記コードの長さに応じた効用関数を最小化するように、前記コードを生成してもよい。
【0011】
前記変換部は、前記コードの組み合わせそれぞれについて、排他的論理和のハミング重みを前記意味的距離と一致させつつ、前記効用関数を最小化するための前記コードの要素を決定してもよい。
【0012】
本発明に係るコード化方法は、複数のデータの組み合わせそれぞれに定義された意味的距離を取得する距離取得ステップと、前記意味的距離に基づいて、前記データをコードに変換する変換ステップと、をコンピュータが実行し、前記変換ステップにおいて、前記コードの組み合わせそれぞれの符号間距離と前記意味的距離との差分を最小化するように、前記コードを生成する。
【0013】
本発明に係るコード化プログラムは、前記コード化装置としてコンピュータを機能させるためのものである。
【発明の効果】
【0014】
本発明によれば、カテゴリカルデータの近似マッチングが可能となる。
【図面の簡単な説明】
【0015】
【
図1】第1実施形態におけるコード化装置の機能構成を示す図である。
【
図2】第1実施形態における階層木を例示する図である。
【
図3】第1実施形態におけるコード化の手順を例示するフローチャートである。
【
図4】第2実施形態におけるコード化の手順を例示するフローチャートである。
【発明を実施するための形態】
【0016】
[第1実施形態]
以下、本発明の第1実施形態について説明する。
本実施形態のコード化装置1は、BF上でカテゴリカルデータ(以下、単にデータ)の近似マッチングが行えるように、元のデータを、その意味的な距離がBF上のデータの距離に対応するようにコード化する。
本実施形態では、前提として、予めデータの意味的な相互関係を表現したグラフ構造として、階層木が与えられているものとする。
【0017】
図1は、本実施形態におけるコード化装置1の機能構成を示す図である。
コード化装置1は、サーバ又はパーソナルコンピュータ等の情報処理装置(コンピュータ)であり、制御部10及び記憶部20の他、各種データの入出力デバイス及び通信デバイス等を備える。
【0018】
制御部10は、コード化装置1の全体を制御する部分であり、記憶部20に記憶された各種プログラムを適宜読み出して実行することにより、本実施形態における各機能を実現する。制御部10は、CPUであってよい。
【0019】
記憶部20は、ハードウェア群をコード化装置1として機能させるための各種プログラム、及び各種データ等の記憶領域であり、ROM、RAM、フラッシュメモリ又はハードディスク(HDD)等であってよい。具体的には、記憶部20は、本実施形態の各機能を制御部10に実行させるためのプログラム(コード化プログラム)の他、階層木、及びデータ変換後のコード等を記憶する。
【0020】
制御部10は、距離取得部11と、変換部12とを備える。
制御部10は、これらの機能部により、まず、与えられた階層木の各データを示すノード間の意味的距離を評価した後、各データのコード化を行う。
【0021】
距離取得部11は、複数のデータの組み合わせそれぞれに定義された意味的距離を取得する。
ここで、距離取得部11は、例えば、階層木の構造に基づき定義された各ノードの情報量から意味的距離を算出する。具体的には、各ノード間の意味的距離の指標として、例えば、情報量に基づく次の指標を用いることができる。
【0022】
階層木のノードni∈Nの情報量をI(ni)とする。
ノードniがリーフノードの集合Lに含まれるとき、I(ni)=|L|とし、niがルートノードのとき、I(ni)=0とする。
niが中間ノードの集合Wに含まれるとき、ni配下のリーフノードの集合をLWとし、I(ni)=|L|-|LW|とする。
ノードa,bの距離Dis(a,b)は、a,bのそれぞれからルートノードに至るまでのパスの共通する部分に含まれる共通ノードのうち、最も下位に位置するノードをΛ(a,b)とし、Dis(a,b)=max(I(a),I(b))-I(Λ(a,b))とする。
【0023】
図2は、本実施形態における階層木を例示する図である。
この例では、11個のノード(データ)の意味的な相互関係が3階層の木構造により表現されている。
【0024】
例えば、ノード1,10の場合、それぞれの情報量は、I(n1)=7,I(n10)=4であり、I(Λ(n1,n10))=I(n11)=0より、Dis(n1,n10)=7となる。
【0025】
なお、ここでは、一例として、各データの距離を階層木の構造に基づいて定義したが、データ間の距離が定義できれば、どのようなデータ構造であってもよく、距離取得部11は、データ構造に基づき定義された意味的距離を算出、あるいは、予め与えられた値を取得する。
【0026】
変換部12は、距離取得部11により取得された意味的距離に基づいて、各データをコードに変換する。
このとき、変換部12は、コードの組み合わせそれぞれの符号間距離と意味的距離との差分を最小化するように、変換後のコードを生成する。
例えば、変換部12は、複数のデータの意味的な相互関係を表現したグラフの構造に基づいて、各ノードにビット列を付与することによりコードを生成する。また、変換部12は、階層木のルートに至るパスの一部が共通するノードに対して共通のビット列を付与することによりコードを生成する。
【0027】
図3は、本実施形態におけるコード化の手順を例示するフローチャートである。
ここで、リーフノードを高さ1として、階層木の高さをHとする。また、高さ2のノード及びその配下のリーフノードを含めたサブツリーをブロックb
iとし、b
iの親ノードをp
iとする。
さらに、ブロックb
iに含まれるリーフノードの数を|L
bi|=2k
i、又は|L
bi|=2k
i-1とする。変換後のコード化されたデータiは、x
i∈{0,1}
*で表され、各データが相互に、距離取得部11で取得された意味的距離に対応する符号間距離を持つようなビット列に変換される。
【0028】
ステップS1において、変換部12は、各ブロックbiについて長さki・(|Lbi|+1)のビット列を|Lbi|+1個生成し、各ビット列のハミング距離が2kiとなるように各ビットに0と1を与える。ここで、各ブロックbiのビット列は、ki個の同一ビット列(ビットセット)から構成され、各ビットセットには、高々1個だけ1が存在する。変換部12は、生成したビット列を、ブロックbi内の各ノードにランダムに割り当てる。
【0029】
図2の例では、b
1に対して、001,010,100が生成され、b
3に対して、00010001,00100010,01000100,10001000が生成される。
【0030】
ステップS2において、変換部12は、ブロック内の各ノードに割り当てられたビット列に、他のブロックのビット列をブロックの並び順に連結する。このとき連結するビット列はpiに該当するビット列とする。また、biに含まれない高さ3以上のノードに対して、全てのpiに該当するビット列を連結したビット列を割り当てる。
【0031】
図2の例では、例えば、ノード1のビット列が001|100|10001000となり、ノード10のビット列が100|100|10001000となる。また、この時点では、ノード3,6,11についてもノード10と同じビット列が割り当てられる。
【0032】
ステップS3において、変換部12は、高さhが2≦h≦Hのノードに該当するビット列について、このノードの配下にあるリーフノードが表すビット列のうち、そのリーフノードのみが1となるビットセットを一つ選び、そのビットセットのビットを全て1に変換する。
【0033】
図2の例では、ノード10の配下のリーフノード7,8,9のみが1を持つビットセット「1000」の一つが「1111」に変換され、例えば100|100|10001111となる。このとき、ノード11のビット列は、111|111|10001111となる。
【0034】
ステップS4において、変換部12は、各ノードのビット列に対して、ルートノードが持つ枝の数だけビット列(全て0)を追加する。さらに、変換部12は、ルート以外の各ノードについて、追加したビット列のうち、ルートまで遡る際に通過する枝に対応するビットを1に変換し、ルートについては追加した全てのビットを1に変換する。
【0035】
図2の例では、各ビット列に、全てが0である3ビットが連結され、連結されたビット列の一部が1に変換される。例えば、ノード10のビット列は100|100|10001111|001となり、ノード11のビット列は111|111|10001111|111となる。
【0036】
ステップS5において、変換部12は、全ノード間のハミング距離H’(xi,xj)と実際の意味的距離H(xi,xj)との差の総和Σi,j|H(xi,xj)-H’(xi,xj)|を算出する。
【0037】
ステップS6において、変換部12は、算出された差の総和が減少したか否かを判定する。この判定がYESの場合、処理はステップS4に戻り、判定がNOの場合、処理はステップS7に移る。
【0038】
ステップS7において、変換部12は、ステップS4で追加されたビット列を削除し、コードの生成を終了する。
【0039】
図2の例では、ステップS4での2回目のビット列の追加により差の総和が増加するため、1回目にビット列が追加された状態に戻され、コード化が終了する。
【0040】
本実施形態によれば、コード化装置1は、データをコード化する際に、意味的距離をコードの符号間距離に対応付けた。これにより、符号間距離に基づいて意味的に近いデータ間の近似マッチングがBF上で可能となる。
【0041】
具体的には、例えば、非特許文献2で提案されたアルゴリズムを用いることで、意味的に近いデータの近似マッチングが可能となる。
この場合、まずn-gramでコード化されたデータが分割される。例えば、n=2として、「baseball」がコード化により「1010」と変換されたとすると、このデータは、{_1,10,01,10,0_}というデータに分割できる。
その後、各分割データをハッシュ関数fの入力として、f(_1)=101000,f(10)=110000,f(01)=101001,f(0_)=001001が得られたとすると、出力の論理和111001が第1のBFに格納される。同様に、「soccer」がコード化により「1011」と変換され、第2のBFに格納された値が111011であったとする。
このとき、第2のBFに格納された値をDice係数により評価する。この例では、BFに格納された値に含まれる1の数は、それぞれ4と5であり、一致している1の数は4なので、Dice係数は2×4/(4+5)=8/9となる。このように、意味的に近いデータは高いDice係数をとることが可能となり、BF上での近似マッチングが可能となる。
【0042】
コード化装置1は、複数のデータの意味的な相互関係を表現したグラフの構造に基づいて、各ノードにビット列を付与することによりコードを生成した。
これにより、コード化装置1は、簡便な手順により効率的にデータをコード化できる。
【0043】
データが階層木により表現される場合には、コード化装置1は、階層木のルートに至るパスの一部が共通するノードに対して共通のビット列を付与することにより、符号間距離を近づけ、適切に意味的距離と対応付けることができる。
【0044】
コード化装置1は、階層木の構造に基づき定義された各ノードの情報量から意味的距離を算出することにより、自動的に適切な距離情報を取得でき、この結果、効率的にコード化を行うことができる。
【0045】
[第2実施形態]
以下、本発明の第2実施形態について説明する。
第2実施形態では、第1実施形態のコード化装置1における変換部12の機能が変更される。
第1実施形態では、階層木の構造に基づく所定のルールに従ってコード化が行われたが、符号間距離と前記意味的距離との差分を最小化するという課題は、最適化問題に置き換えることが可能であり、最適化アルゴリズムは、適宜設計可能である。
【0046】
なお、本実施形態で扱うデータは、階層木等のデータ構造に制約はなく、相互の意味的距離が与えられたデータ群であればよい。
前提として、予めデータ間の意味的距離が与えられているものとする。この意味的距離は、例えば、第1実施形態と同様に、データ構造に基づく情報量から算出されてもよい。
【0047】
本実施形態の変換部12は、コードの長さに応じた効用関数を最小化するように、コードを生成する。
具体的には、変換部12は、例えば、コードの組み合わせそれぞれについて、排他的論理和のハミング重みを意味的距離と一致させつつ、効用関数を最小化するためのコードの要素を決定する。
【0048】
本実施形態では、データのコード化を、一例として、次の最適化問題として捉える。
まず、データ数をmとし、各データをn次元ベクトルx
i=(x
i
1,…,x
i
n)(i=1,…,m)とする。またデータx
i,x
j間の距離をd
i,jとする。このとき、以下の制約条件のもと、nを最小とするx
i(i=1,…,m)を求める。
【数1】
【0049】
ここで、
【数2】
とし、効用関数Sを次のように定義する。
【数3】
【0050】
図4は、本実施形態におけるコード化の手順を例示するフローチャートである。
この例では、まず、十分に大きいnを用意し、∀i,x
i=0とする。
【0051】
ステップS11において、変換部12は、xi,xjの値が一意に決まっていない全てのi,j(i<j)の組み合わせに対して、Xi,j
1+…+Xi,j
n=di,jを満たし(あるいは、近似させて)、si,jを最小化するように(Xi,j
1,…,Xi,j
n)の値を決定する。
【0052】
ステップS12において、変換部12は、ステップS11で対象としてi,jの組み合わせのうち、di,jが最も小さい(i,j)を選択し、(Xi,j
1,…,Xi,j
n)の値にしたがって、xi及びxjの値を決定する。ただし、一意に値が決まらない要素ペアに対しては、どちらか一方にランダムに1を振る。また、既に一方(xi)の値が決定している場合、他方(xj)の値は、(1)式の条件により決定される。
【0053】
ステップS13において、変換部12は、全てのxiが決定したか否かを判定する。この判定がYESの場合、処理は終了し、判定がNOの場合、処理はステップS11に戻る。
この結果、n次元ベクトルxiが決定されるが、変換部12は、全てのiにおいて0となっている高次の要素を削除し、ベクトルの次元を削減してもよい。
【0054】
本実施形態によれば、コード化装置1は、コードの長さに応じた効用関数を最小化するようにコードを生成した。
これにより、コード化装置1は、コード長を抑えながら、データの意味的距離に対応した符号間距離を持つコードを適切に生成できる。
【0055】
具体的には、コード化装置1は、コードの組み合わせそれぞれについて、排他的論理和のハミング重みを意味的距離と一致させつつ、効用関数を最小化するためのコードの要素を決定することにより、最適化問題を構成できる。この結果、コード化装置1は、意味的距離が与えられている任意のデータを、この意味的距離に相当するハミング距離を持ったコードに適切に変換できる。
このとき、意味的距離di,jが大きい(i,j)の組み合わせほど、ハミング距離との差分が生じる可能性があるが、近似マッチングで必要とされる近距離の組み合わせについて、十分な最適化が期待できる。
【0056】
以上、本発明の実施形態について説明したが、本発明は前述した実施形態に限るものではない。また、前述した実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、実施形態に記載されたものに限定されるものではない。
【0057】
コード化装置1によるコード化方法は、ソフトウェアにより実現される。ソフトウェアによって実現される場合には、このソフトウェアを構成するプログラムが、情報処理装置(コンピュータ)にインストールされる。また、これらのプログラムは、CD-ROMのようなリムーバブルメディアに記録されてユーザに配布されてもよいし、ネットワークを介してユーザのコンピュータにダウンロードされることにより配布されてもよい。さらに、これらのプログラムは、ダウンロードされることなくネットワークを介したWebサービスとしてユーザのコンピュータに提供されてもよい。
【符号の説明】
【0058】
1 コード化装置
10 制御部
11 距離取得部
12 変換部
20 記憶部