(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0010】
以下、本発明の実施形態について図面を参照して詳細に説明する。
図1は、本発明の実施形態に係るデータ処理装置を示す図である。クライアント200から入力された商品の型番を認証するためのデータ処理装置100は、商品カタログのデータベース70と、入力された入力データがデータベース70に格納されているか否か検索し、入力データがデータベース70に格納されていなかった場合に、入力データと類似する候補データをデータベース70から抽出する処理部10と、抽出する際に使用される抽出条件情報などを入力する入力部81、処理結果を表示する表示部82、およびネットワーク300を介してクライアント200などと通信を行う通信部85から構成される。
【0011】
データベース70は、HDD(Hard disk drive)装置などにより構成される。処理部10は、CPU(Central Processing Unit)によって、RAM(Random Access Memory)やHDD上のプログラムを実行することで実現される。入力部81は、キーボードやマウスなどのコンピュータに指示を入力するための装置であり、プログラム起動などの指示を入力する。表示部82は、ディスプレイなどであり、データ処理装置100による処理の実行状況や実行結果などを表示する。通信部85は、ネットワーク300を介して、他のサーバなどと各種データやコマンドを交換する。
【0012】
データベース70には、商品カタログの詳細情報である商品名、商品の型番、メーカ名、価格、納期、製品の特徴などの情報であるカタログDB71、カタログDB71のうち所定の分類ごとに商品の型番を分類した情報であるカタログ型番DB72(
図2参照)、算出部30が算出した近似率の結果情報である近似率結果情報73(
図6参照)、算出部30が後記する近似率を定義する際に使用する情報(例えば、重み係数)である抽出条件情報74などが格納されている。
【0013】
処理部10は、入力された入力データがデータベース70に格納されているか否かを検索する検索部20(入力判定処理部)と、入力データがデータベース70に格納されていなかった場合に、入力データとデータベース70のデータとの近似率を算出する算出部30と、算出部で算出された近似率に基づいて修正候補を抽出する抽出部40と、抽出部40で抽出された候補データを提示する候補提示部50の複数のプログラムを有する。
【0014】
算出部30は、入力データと候補データとの編集距離を算出する編集距離算出部31と、入力データと候補データとの前方一致の文字数を算出する前方一致文字数算出部32と、入力データと候補データとの最長共通部分列の文字数を算出する最長共通部分列文字数算出部33と、入力データの文字数と、編集距離算出部31で算出された編集距離と、前方一致文字数算出部32で算出された前方一致文字数と、最長共通部分列文字数算出部33で算出された最長共通部分列の文字数と、に基づき近似率を算出する近似率算出部34と、を有する。
【0015】
図2は、カタログ型番DBの一例を示す図である。カタログ型番DB72には、多数の商品の型番であるデータが登録されている。例えば、8181、81−A−1、8118・・・である。
図2の場合、ハイフン(−)を除いたデータの文字数順に型番が並べられている。
【0016】
<近似率の算出>
本実施形態では、算出部30が入力データに対する候補データの近似率を算出する。近似率の算出には、複数の指標を用いる。すなわち、型番の誤入力に対する修正候補を抽出する際に、候補の順序付けを行うために、下記の3つの指標を用いる。各指標には、表1のようなメリット、デメリットがある。
(A)編集距離:d
(B)前方一致の文字数:N
pre
(C)最長共通部分列の文字数:l
LCS
【0018】
例えば、型番の場合、類似するデータの集まりであるので、(A)の編集距離(d)によれば、2つの文字列のどこが違っているかによらず差異を評価できる点は有利であるが、編集距離が同じものが多くあるときには、候補の順序付けをするのが難点である。
【0019】
このため、本実施形態では、それぞれの指標について、3次元でのマンハッタン距離を考えることで誤入力の入力データと候補データとの近さの定義を試みた。3つの指標を距離とし、L
Gを入力データの文字数とすると、
(A)の編集距離は、値が小さいほど入力データと候補データは近い、
(B)に基づく前方一致の距離は、L
G−N
preの値が小さいほど入力データと候補データは近い、
(C)に基づく最長共通部分列の距離は、L
G−l
LCSの値が小さいほど入力データと候補データは近い、と考えられる。
【0020】
図3は、3次元空間のマンハッタン距離としての近似率の数学的解釈を示す図であり、(a)はスケールファクタ(重み係数)の導入前、(b)はスケールファクタの導入後である。
図3(a)のスケールファクタの導入前においては、各指標の取り扱いがほぼ均等であり、編集距離(d)と前方一致の文字数(N
pre)と、最長共通部分列の文字数(l
LCS)に係る各距離は、ほぼ同じである。これに対し、
図3(b)のスケールファクタ導入後は、編集距離(d)に重点をおいた場合である。
【0021】
どの次元(どの指標)を重視するかで、その次元のスケールファクタが異なる。例えば、スケールファクタを目盛りの幅と考えると、同じ距離1でもその物差し(ものさし)の目盛りの幅が異なる。
ここでは、
最重要視する次元の目盛りの距離1の目盛り幅は1/(L
G+1) 、
次に重要視する次元の目盛りの距離1の目盛り幅は1/(L
G+1)
2 ,
最後の次元の目盛りの距離1の目盛り幅は1/(L
G+1)
3
となる。
【0022】
以上の考察から、クライアント200に候補を提示する際は,入力データの文字数L
Gから各距離の値を引いたものを用いて「近いほど値が大きい」指標でソートして提示する。あわせて、3軸のどれを重視するかを状況に合わせて選んで重み付けできる。
【0023】
例えば,近いほど値が100%になる指標として以下の近似率を定義すると、(1)式となる。すなわち、近似率が1に近いほど入力データと候補データとは近くなる。
【数1】
【0024】
なお、(1)式の第2項のN
pre/(L
G+1)
2は、N
pre≦L
Gなので、1/(L
G+1)未満となる。また、(1)式の第3項のI
LCS/(L
G+1)
3 は、I
LCS≦L
Gなので、1/(L
G+1)
2未満となる。
【0025】
具体的な数値を示すと、
L
G=9, d=0, N
pre=9, l
LCS=9(文字数9の入力データと完全一致の場合)とすると、
近似率 = 9/10 + 9/100 + 9/1000 = 0.9 + 0.09 + 0.009 = 0.999 となる。
同様に、
L
G=5, d=0, N
pre=5, l
LCS=5(文字数5の入力データと完全一致の場合)とすると、
近似率 = 5/6 + 5/36 + 5/216 = 0.8333 + 0.1388 + 0.0231 = 0.995 となる。
同様に、
L
G=15, d=0, N
pre=15, l
LCS=15(文字数15の入力データと完全一致の場合)とすると、
近似率 = 15/16 + 15/256 + 15/4096 = 0.93750 + 0.05859 + 0.00366 = 0.99975 となる。
【0026】
文字数9の入力データ、編集距離が1の例を示すと、
L
G=9, d=1, N
pre=5, l
LCS=6の場合、
近似率 = 8/10 + 5/100 + 6/1000 = 0.8 + 0.05 + 0.006 = 0.856 となる。
同様に、
L
G=9, d=1, N
pre=4, l
LCS=7の場合、
近似率 = 8/10 + 4/100 + 7/1000 = 0.8 + 0.04 + 0.007 = 0.847 となる。
L
G=9, d=1, N
pre=4, l
LCS=3の場合、
近似率 = 8/10 + 4/100 + 3/1000 = 0.8 + 0.04 + 0.003 = 0.843 となる。
【0027】
文字数5の入力データ、編集距離が1の例を示すと、
L
G=5, d=1, N
pre=3, l
LCS=2の場合、
近似率 = 4/6 + 3/36 + 2/216 = 0.6666 + 0.0833 + 0.0092 = 0.759 となる。
L
G=5, d=1, N
pre=2, l
LCS=3の場合、
近似率 = 4/6 + 2/36 + 3/216 = 0.6666 + 0.0555 + 0.0138 = 0.736 となる。
L
G=5, d=1, N
pre=2, l
LCS=2の場合、
近似率 = 4/6 + 2/36 + 2/216 = 0.6666 + 0.0555 + 0.0092 = 0.731 となる。
【0028】
文字数15の入力データ、編集距離が2の例を示すと、
L
G=15, d=2, N
pre=5, l
LCS=6の場合、
近似率 = 13/16 + 5/256 + 6/4096 = 0.8125 + 0.0195 +0.00146 = 0.8334 となる。
L
G=15, d=2, N
pre=4, l
LCS=7の場合、
近似率 = 13/16 + 4/256 + 7/4096 = 0.8125 + 0.0156 + 0.0017 = 0.8298 となる。
L
G=15, d=2, N
pre=4, l
LCS=6の場合、
近似率 = 13/16 +4/256 + 6/4096 = 0.8125 + 0.0156 + 0.00146 = 0.8296 となる。
【0029】
本実施形態では、前記(1)式により、近似率が1(すなわち、100%)を超えないように設定しているが、これに限定されるものではない。例えば、近似率は、入力データの文字数をL
G、編集距離をd、前方一致文字数をN
pre、最長共通部分列の文字数をI
LCS、重み係数をA,B,Cとすると、
近似率=A(L
G−d)+BN
pre+CI
LCS ・・・(2)
であってもよい。
【0030】
(入力判定処理)
図4は、入力判定処理を示すフローチャートである。適宜
図1を参照して説明する。入力判定処理S110は、検索部20がクライアント200から発注データを受理すると、発注データに含まれる型番を対象データとして、データベース70に格納されているか否かを検索する処理である。入力データは、例えば、「8101A−81」である。
【0031】
検索部20は、該当するカタログ型番DB72をメモリに読込み、作業用のリストに格納する(処理S111)。
【0032】
検索部20は、入力データの先頭から文字ごとに(処理S112)、処理S113〜処理S115を繰り返す。まず、対象データの単位文字に該当する単位文字がリストにあるか否かを判定し(処理S113)、該当する単位文字がある場合(処理S113,Yes)、リストを絞り込み(処理S114)、次の文字へ進む(処理S115)。該当する文字がない場合(処理S113,No)、誤入力処理S130に進む。
【0033】
例えば、入力データが「8101A−81」の場合、
図2に示したカタログ型番DB72には該当するものがないので、誤入力処理S130に進む。本実施形態では、入力データとカタログ型番DB72とを比較する際には、ハイフン(−)等を省略して該当文字があるか否かを判定している。なお、受注処理は、受注処理を担当する受注サーバ(不図示)が担当するが、説明は省略する。
【0034】
(誤入力処理)
図5は、誤入力処理を示すフローチャートである。
図6は、修正候補例の抽出を示す図であり、(a)は入力データの例であり、(b)は
図2に示したカタログ型番72の候補データを近似率が高い順に並べ替え後の近似率結果情報73である。適宜
図1を参照して説明する。
【0035】
誤入力処理S130は、対象データがデータベース70に格納されていなかった場合に、対象データに類似する候補データをデータベース70から抽出する処理である。事例として、入力データを「8101A−81」とし、候補データを
図2に示すカタログ型番72を用いて説明する。なお、二つの文字列の比較に際し、ハイフン(−)は比較対象から除外して比較するとする。
【0036】
算出部30は、該当するカタログ型番DB72をメモリに読込み、作業用のリストに格納する(処理S131)。
【0037】
編集距離算出部31は、入力データと、作業用リストのデータとの距離(以下、編集距離という)を算出する(処理S132)。編集距離は、情報理論において、二つの文字列がどの程度異なっているかを示す数値である。編集距離として、レーベンシュタイン(Levenshtein)距離、Damerau-Levenshtein距離などを利用する。具体的には、文字の挿入や削除、置換によって、一つの文字列を別の文字列に変形するのに必要な手順の最小回数として与えられる。例えば、入力データの文字列が「8101A81」、候補データの文字列が「8181」の場合、入力データの3文字目、4文字目、5文字目を削除すると候補データになるので、編集距離は「3」となる。
【0038】
前方一致文字数算出部32は、入力データと、作業用リストのデータとの前方一致文字数を算出する(処理S133)。例えば、入力データの文字列が「8101A81」、候補データの文字列が「8181」の場合、入力データおよび候補データの1文字目、2文字目が同一であるので、前方一致文字数は「2」となる。
【0039】
最長共通部分列文字数算出部33は、入力データと、作業用リストのデータとの最長共通部分列の文字数を算出する(処理S134)。ここで、部分列(Subsequence) は系列のいくつかの要素を取り出してできた系列のことをいい、二つの系列の共通の部分列を共通部分列 (Common Subsecuence)という。共通部分列のうち、もっとも長いものを最長共通部分列 LCS:Longest Common Subsequence)という。
【0040】
例えば、入力データの文字列が「8101A81」、候補データの文字列が「8181」の場合、入力データの1文字目および2文字目の部分列「81」の2文字と、入力データの6文字目および7文字目の部分列「81」の2文字が共通であるので、共通部分列の文字数は「4」である。一方、候補データの1文字目および2文字目の部分列「81」の2文字と、候補データの3文字目および4文字目の部分列「81」の2文字が共通であるので、共通部分列の文字数は「4」である。よって、最長共通部分列の文字数は、「4」である。
【0041】
近似率算出部34は、前記(1)式に基づいて近似率を算出する(処理S134)。例えば、候補データが「8181」の場合の近似率は、「57.0」%である。
【0042】
算出部30は、候補データを近似率の高い順に並べ替えを実施し、近似率結果情報73(
図1参照)として出力する(処理S136)。
図6(b)は、候補データの並べ替え後の近似率結果情報73である。編集距離が「1」の候補データとして「8111−A81」がある。編集距離が「2」の候補データとして「811281」、「T10−15−81」がある。また、編集距離が「3」の候補として、「810−13−28」、「810−13−27」、「810−13−26」、・・・がある。
【0043】
編集距離が「2」の「811281」、「T10−15−81」を比較してみると、「811281」の前方一致文字数が「2」であり、「T10−15−81」の前方一致文字数が「0」と異なるため、「811281」の方が、近似率が高くなる。これは、表1で前記したように、前方一致文字数のメリットとして、一般的には、ユーザが入力する際には、一般に誤入力は文字列の後方ほど起きやすいため人間の感覚に近いことが示されている。また、「T10−15−81」の候補データの場合、前方一致文字数のデメリットとして、前方で誤入力が起きた場合には全く使えない欠点が、編集履歴の指標により改善されて、順位的には近似率が3位と高い。本実施形態では、前方で誤入力が起きた場合には全く使えないというデメリットを改善できていることを示している。
【0044】
また、編集距離が「3」と同一、前方一致文字数が「4」と同一の場合においても、「810−13−28」の場合、最長共通部分列の文字数が「5」であり、他の候補データの最長共通部分列の文字数より高いため、近似率が4位と高くなっている。
【0045】
図5に戻り、抽出部40は、近似率結果情報73を参照して、算出部30で算出された近似率が所定値以上のデータを、前記修正候補として抽出する(処理S137)。例えば、近似率の高い上位4位までの修正候補データを抽出する。
【0046】
候補提示部50は、抽出部40で抽出された修正候補を、クライアント200または表示部82に出力する(処理S138)。出力例は、
図7を参照して後記する。
【0047】
そして、候補提示部50は、修正候補データがクライアント200で選択されたか否かを判定し(処理S139)、選択された場合(処理S139,Yes)、一連の処理を終了する。一方、修正候補データが選択されない場合(処理S139,No)、入力判定処理S110に戻り、処理を終了する。
【0048】
なお、
図5に示す処理132、処理133、処理134は、並列処理をすることにより計算速度を向上することができる。
【0049】
図7は、クライアントの表示画面の一例を示す図である。
図7には、候補提示部50(
図1参照)が提示するクライアント200の表示画面を示す。表示画面には、例えば、
「8101A−81という型番は存在しません。もしかしてこちらではないですか?
8111−A81、811281、T10−15−81、810−13−28という表示がされる。顧客は、発注の入力間違いがあるとすばやく気づくことができ、例えば、8111−A81が入力される。
【0050】
(候補提示部)
図8は、候補提示部の提示方法の一例を示す図であり、(a)は入力データの例であり、(b)は抽出部40が抽出した抽出結果情報78であり、(c)は候補提示部50が提示する際に再編集した編集結果情報79である。候補提示部50は、前記したようにクライアント200に修正候補のデータを提示する機能を有するが、提示する際に顧客が見やすいように提示する機能も有する。すなわち、候補提示部50は、近似率が同じであれば、同類はまとめて表示することでユーザの可読性と選択のしやすさを向上させる。まとめは数字部分のみが異なる重複候補をまとめる。このとき、ワイルドカードとして、任意の数値の文字列を示す「■」(黒四角)を用いる。
【0051】
図8(a)に示す入力データ中に「?」(疑問符)は、ワイルドカードの例であり、任意の1文字を意味する。
図8(b)に示す抽出結果情報78を参照すると、行781〜785は近似率が68.5%と同一であり、行787〜789は近似率60.2%と同一である。これに対し、
図8(c)においては、ワイルドカードの「■」を用いて、行781行782、行786を行791にまとめている。同様に、行783〜785を行792にまとめ、行787および行789を行793にまとめている。候補提示部50は、クライアント200に、
図8(c)に基づく候補データ(ABNZ■−1.0−100、ABNZ■−1.5−100、ABNZS5−■−100、ABNZ1−6.0−100)を提示することができる。
【0052】
本実施形態では、
図2において英数字の例について示したが、これに限定されるものではない。例えば、英数字以外の文字を使用している型番として下記がある。
SJR−4023S−305W−ジクツキ
TIC0.3(アオ)
TIC0.3(アカ)
SNSS−#10−24X1・1/4
SNSS−#10−32X1・1/4
%MDDCP−NATO−DEPL10−817.9−NHC(E84)−ズメンNO.03−1207−0729
【0053】
本実施形態では、クライアント200からの入力について説明したが、管理者が入力部81を介して、対象データを入力してもよい。
【0054】
本実施形態では、近似率を算出する際に、(1)式において3つの指標を用いたがこれに限定されるわけではない。4つ目の指標に対し、重み係数として1/(L
G+1)
4を適用するとよい。この場合3つの指標で近似率が同じであっても、4つ目の指標により順位付けが可能となる。
【0055】
<近似率の拡張>
ここでは、(1)式をさらに汎用的にした近似率である(3)式について説明する。
【数3】
なお、L
G :入力データの文字数
d :編集距離
N
pre:前方一致の文字数
l
LCS:最長共通部分列の文字数
δ
d0 :変数(d=0のとき1、d>0のとき0)
k
0 :変数(データベースの特性により設定)
【0056】
ここで、
d=0のとき、{ }の中は1になるので近似率はk
0となる。
d>0のとき、{ }の中は1未満になるので近似率はk
0未満になる。
dが大きいとき、近似率は負になる場合がある。そのときは近似率を0とする。
【0057】
(3)式に示す近似率の特徴は、下記である。
(I)変数δ
d0を導入することにより、入力データと編集距離が完全一致の場合においても、近似率がk
0と設定できる。例えば、
L
G=9, d=0, N
pre=9, l
LCS=9, δ
d0=1(文字数9の入力データと完全一致の場合)とすると、近似率 = k
0(10/10 + 0/100 + 0/1000) = k
0 となる。
同様に、L
G=5, d=0, N
pre=5, l
LCS=5, δ
d0=1(文字数5の入力データと完全一致の場合)とすると、近似率 = k
0(6/6 + 0/36 + 0/216) = k
0 となる。
同様に、L
G=15, d=0, N
pre=15, l
LCS=15, δ
d0=1(文字数15の入力データと完全一致の場合)とすると、近似率 =k
0(16/16 + 0/256 + 0/4096)= k
0 となる。
【0058】
(II)変数k
0を導入して、入力データのうち特定の文字列を優先的に上位に(近似率が1に近く)なるように設定できる。あるいは、入力データのうち特定の文字列を下位に(近似率が0に近く)なるように設定できる。例えば、入力データにカタカナが含まれないときはk
0=0.999とし、入力データにカタカナが含むときはk
0=0.99とする。この場合、入力データのうち英数字のみの文字列をカタカナを含む文字列よりも相対的に上位に位置付けすることができる。
【0059】
(3)式でk
0=1と設定した場合、入力データに対する候補データの近似率は、
0≦ 近似率 ≦1
の範囲にあり、わかりやすい値として管理することができる。
【0060】
入力データに対する候補データとして数百万件を対象とすることがある。本実施形態のデータ処理装置を適用することにより、入力誤りを早期に発見できるとともに、類似する型番を提示することができるため、インターネットビジネスの向上に有効な手段となる。また、本実施形態では、カタログの型番を対象データとして示したがこれに限定されるのではなく、文字列であれば、本実施形態のデータ処理方法を適用することができる。