(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024093615
(43)【公開日】2024-07-09
(54)【発明の名称】情報処理システム、情報処理方法、プログラム
(51)【国際特許分類】
G06F 16/28 20190101AFI20240702BHJP
G06F 16/906 20190101ALI20240702BHJP
【FI】
G06F16/28
G06F16/906
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2022210123
(22)【出願日】2022-12-27
(71)【出願人】
【識別番号】390002761
【氏名又は名称】キヤノンマーケティングジャパン株式会社
(71)【出願人】
【識別番号】592135203
【氏名又は名称】キヤノンITソリューションズ株式会社
(74)【代理人】
【識別番号】100189751
【弁理士】
【氏名又は名称】木村 友輔
(74)【代理人】
【識別番号】100227857
【弁理士】
【氏名又は名称】中山 圭
(72)【発明者】
【氏名】古川 亮太
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175AA02
5B175DA10
5B175FA03
5B175FB03
5B175HB03
(57)【要約】
【課題】 単一列の情報ではマッピングすることが難しい列について、適切なマッピングを行うこと
【解決手段】 単一の項目の値に基づき、第1の表における項目と第2の表における項目との対応関係を特定する特定手段と、第1の表における項目と第2の表における項目をそれぞれ所定のグループに分類する分類手段と、前記分類手段による分類結果に基づき、前記特定手段により特定された対応関係を補正する補正手段と、を備えることを特徴とする情報処理システム。
【選択図】
図1
【特許請求の範囲】
【請求項1】
単一の項目の値に基づき、第1の表における項目と第2の表における項目との対応関係を特定する特定手段と、
第1の表における項目と第2の表における項目をそれぞれ所定のグループに分類する分類手段と、
前記分類手段による分類結果に基づき、前記特定手段により特定された対応関係を補正する補正手段と、
を備えることを特徴とする情報処理システム。
【請求項2】
前記特定手段は、第1の表における項目と第2の表における項目との関係性を示すスコアに基づき対応関係を特定することを特徴とし、
前記補正手段は、前記スコアを補正することを特徴とする請求項1に記載の情報処理システム。
【請求項3】
前記補正手段は、同じグループに分類された項目のスコアを上昇させるよう補正することを特徴とする請求項2に記載の情報処理システム。
【請求項4】
前記補正手段は、異なるグループに分類された項目のスコアを下降させるよう補正することを特徴とする請求項2に記載の情報処理システム。
【請求項5】
前記分類手段は、取引ごとに一意に特定可能なデータに係る項目を1つのグループとして分類することを特徴とする請求項1に記載の情報処理システム。
【請求項6】
前記分類手段は、取引ごとに一意に特定できないデータに係る項目を1つのグループとして分類することを特徴とする請求項5に記載の情報処理システム。
【請求項7】
前記分類手段は、1つのレコード内で特定の方程式関係が成立している項目について1つのグループとして分類することを特徴とする請求項6に記載の情報処理システム。
【請求項8】
前記第1の表は、EDIにおける標準形式のデータであり、前記第2の表はEDIにおける自社形式のデータであることを特徴とする請求項1乃至7のいずれか1項に記載の情報処理システム。
【請求項9】
情報処理システムの特定手段が、単一の項目の値に基づき、第1の表における項目と第2の表における項目との対応関係を特定する特定工程と、
前記情報処理システムの分類手段が、第1の表における項目と第2の表における項目をそれぞれ所定のグループに分類する分類工程と、
前記情報処理システムの補正手段が、前記分類工程による分類結果に基づき、前記特定工程により特定された対応関係を補正する補正工程と、
を備えることを特徴とする情報処理方法。
【請求項10】
コンピュータを、
単一の項目の値に基づき、第1の表における項目と第2の表における項目との対応関係を特定する特定手段と、
第1の表における項目と第2の表における項目をそれぞれ所定のグループに分類する分類手段と、
前記分類手段による分類結果に基づき、前記特定手段により特定された対応関係を補正する補正手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理システム、情報処理方法、プログラムに関する。
【背景技術】
【0002】
企業間の受発注業務等の取り引きは、EDIを用いて行われることが多くなっており、EDIでは、各種データの形式を自社形式から、標準形式に変換して行われることが多い。データを自社形式から標準形式へ変換するにあたって、データ列の対応関係を定義(マッピング)する必要がある。マッピング処理を手作業で行うのはユーザ負荷が大きいため、自動でのマッピングが望まれている。
【0003】
2つの表形式データの列の対応関係を自動で判別する技術は、スキーママッチング技術と呼ばれている。スキーママッチング技術は、EDIでの利用の他、データベースの統合や機械学習用データ作成などにも用いられる技術である。
【0004】
スキーママッチング技術においては、単一列の値の情報だけでは自社形式から標準形式への列の対応関係が適切に判断できない場合がある。
【0005】
例えば、
図3の表において、「店名」列や「品名」列は、列の値がそれぞれ異なる特徴を持っているため、「最終納品先名称」や「商品名」へ自動マッピングできると期待できる。しかし、「店コード」列や「原価金額」列はいずれも同じ4桁の数値列であり、列の値の情報から区別することができない。
【0006】
そこで特許文献1では、単一列の値だけでは対応付けできない列に対して、複数列を考慮することで対応付けさせる手法が開示されている。
【先行技術文献】
【特許文献】
【0007】
【発明の開示】
【発明が解決しようとする課題】
【0008】
特許文献1は、対応付けを行う2表間で、カラムペアの「相関ルール」が変化しないことを前提にしている。
例えば、
図1の自社データの「店コード→店名」の対応関係は、「3200→石井店、1500→松田店、2010→大ヶ浜店」であるが、この関係が標準形式側でも成り立つことを前提にしている。
【0009】
しかし、EDI分野における変換では、2表はそれぞれ別の会社のデータであり、「店名」にどのような「店コード」を付けるかは会社によって異なると考えられる。すなわち、「店名」と「店コード」の相関ルールは2表で異なるため、先行技術を用いることができない。
【0010】
そこで本発明は、単一列の情報ではマッピングすることが難しい列について、適切なマッピングを行う仕組みを提供することを目的とする。
【課題を解決するための手段】
【0011】
本発明は、単一の項目の値に基づき、第1の表における項目と第2の表における項目との対応関係を特定する特定手段と、
第1の表における項目と第2の表における項目をそれぞれ所定のグループに分類する分類手段と、
前記分類手段による分類結果に基づき、前記第1の特定手段により特定された対応関係を補正する補正手段と、
を備えることを特徴とする。
【発明の効果】
【0012】
本発明によれば、単一列の情報ではマッピングすることが難しい列について、適切なマッピングを行うことが可能となる。
【図面の簡単な説明】
【0013】
【
図1】本発明の情報処理システムの構成の一例を示す図
【
図2】クライアント端末101、サーバ装置102として適用可能な情報処理装置のハードウェア構成の一例を示すブロック図
【
図3】単一列の値の情報からマッピングをした場合の課題を説明する図
【
図4】自社形式データと標準形式データとのマッピング処理を示すフローチャート
【
図5】自社形式データのアップロード画面の一例を示す図
【
図7】単一列の値情報によりマッピングした際のマッピングスコアを示す図
【
図8】ステップS103の処理の詳細を示したフローチャート
【
図9】標準形式の項目のクラスタリング結果の一例を示す図
【
図10】ステップS203の処理の詳細を示したフローチャート
【
図11】伝票イメージと「発注・取引」「明細」への分類処理を説明した図
【
図12】ステップS204の処理の詳細を示したフローチャート
【
図13】伝票イメージと「数量」「合計数量」への分類処理を説明した図
【
図14】ステップS205の処理の詳細を示したフローチャート
【
図15】伝票イメージと「乗数」「積」への分類処理を説明した図
【
図16】自社形式データをクラスタリングした結果を示した図
【
図18】自社形式データをマッピングした際のスコアを示す図
【
図19】ステップS104の処理の詳細を示したフローチャート
【
図20】標準形式データの項目のランク付け結果の一例を示す図
【
図21】ステップS602の処理の詳細を示したフローチャート
【
図22】自社形式データの項目のランク付け結果の一例を示す図
【
図24】自社形式データをマッピングした際のスコアを示す図
【
図25】ステップS105の処理の詳細を示したフローチャート
【
図26】標準形式の名称列とID列の対応表を示す図
【
図27】ステップS802の処理の詳細を示したフローチャート
【
図30】マッピング結果に対する修正受付画面の一例
【発明を実施するための形態】
【0014】
図1は本発明の情報処理システムの構成例を示す図である。
【0015】
図1に示す通り、クライアント端末101とサーバ装置102とが通信可能に接続されている。
【0016】
クライアント端末101は、ユーザからの操作や指示を受け付け、当該指示に基づく要求をサーバ装置102等に送信する機能を備える。また、サーバ装置102等から取得した情報を表示部に表示する等によりユーザに通知する機能を備える。
【0017】
サーバ装置102は、クライアント端末101から取得した要求に基づき、各種情報をクライアント端末101に送信する。
【0018】
図2は、本発明のクライアント端末101、サーバ装置102として適用可能な情報処理装置のハードウェア構成の一例を示すブロック図である。
【0019】
図2に示すように、情報処理装置は、システムバス200を介してCPU(Central Processing Unit)201、ROM(Read Only Memory)202、RAM(Random Access Memory)203、記憶装置204、入力コントローラ205、音声コントローラ206、ビデオコントローラ207、メモリコントローラ208、よび通信I/Fコントローラ209が接続される。
【0020】
CPU201は、システムバス200に接続される各デバイスやコントローラを統括的に制御する。
【0021】
ROM202あるいは外部メモリ213は、CPU201が実行する制御プログラムであるBIOS(Basic Input/Output System)やOS(Operating System)や、本情報処理方法を実現するためのコンピュータ読み取り実行可能なプログラムおよび必要な各種データ(データテーブルを含む)を保持している。
【0022】
RAM203は、CPU201の主メモリ、ワークエリア等として機能する。CPU201は、処理の実行に際して必要なプログラム等をROM202あるいは外部メモリ213からRAM203にロードし、ロードしたプログラムを実行することで各種動作を実現する。
【0023】
入力コントローラ205は、キーボード210や不図示のマウス等のポインティングデバイス等の入力装置からの入力を制御する。入力装置がタッチパネルの場合、ユーザがタッチパネルに表示されたアイコンやカーソルやボタンに合わせて押下(指等でタッチ)することにより、各種の指示を行うことができることとする。
【0024】
また、タッチパネルは、マルチタッチスクリーンなどの、複数の指でタッチされた位置を検出することが可能なタッチパネルであってもよい。
【0025】
ビデオコントローラ207は、ディスプレイ212などの外部出力装置への表示を制御する。ディスプレイは本体と一体になったノート型パソコンのディスプレイも含まれるものとする。なお、外部出力装置はディスプレイに限ったものはなく、例えばプロジェクタであってもよい。また、前述のタッチ操作を受け付け可能な装置については、入力装置も提供する。
【0026】
なおビデオコントローラ207は、表示制御を行うためのビデオメモリ(VRAM)を制御することが可能で、ビデオメモリ領域としてRAM203の一部を利用することもできるし、別途専用のビデオメモリを設けることも可能である。
【0027】
メモリコントローラ208は、外部メモリ213へのアクセスを制御する。外部メモリとしては、ブートプログラム、各種アプリケーション、フォントデータ、ユーザファイル、編集ファイル、および各種データ等を記憶する外部記憶装置(ハードディスク)、フレキシブルディスク(FD)、或いはPCMCIAカードスロットにアダプタを介して接続されるコンパクトフラッシュ(登録商標)メモリ等を利用可能である。
【0028】
通信I/Fコントローラ209は、ネットワークを介して外部機器と接続・通信するものであり、ネットワークでの通信制御処理を実行する。例えば、TCP/IPを用いた通信やISDNなどの電話回線、および携帯電話の4G回線、5G回線等を用いた通信が可能である。
【0029】
尚、CPU201は、例えばRAM203内の表示情報用領域へアウトラインフォントの展開(ラスタライズ)処理を実行することにより、ディスプレイ212上での表示を可能としている。また、CPU201は、ディスプレイ212上の不図示のマウスカーソル等でのユーザ指示を可能とする。
【0030】
図4は、EDIシステムにおいて、スキーママッチング技術と本発明を用いて自社形式から標準形式への自動マッピングを行うフローチャートである。なお、
図4のフローチャートの各処理については、サーバ装置102のCPU201が所定の制御プログラムを読み出して実行する処理である。
【0031】
ステップS101では、自社形式のサンプルファイルをアップロードする。ユーザが自社形式のサンプルファイルをアップロードし、サンプルファイルをメモリに読み込む。
図5がサンプルファイルのアップロード画面例である。読み込まれたデータの一例を
図6に示す。
図6に示す通り、伝票番号、発注者名、・・・品名、数量、原単価などの情報から構成されている。
【0032】
ステップS102では、公知のスキーママッチング技術を用いて自社形式のデータと標準形式のデータ(予め登録されているものとする)との単一列の値情報による自動マッピングを行う。この処理により、
図7のような自社形式の項目と標準形式の項目の全組み合わせに対するマッピングスコアを得る。
【0033】
図7の例では、「納品センター名と直接納品先名称」や「店名と最終納品先名称」はマッピングスコアが1.0となっているため、自動マッピングによるマッピング結果を信頼できるが、「店コードと最終納品先コード」と「店コードと原価金額」はいずれもスコア0.5となっており、店コードをどちらにマッピングするべきか判断できない。
【0034】
ステップS103では、項目の事前クラスタリングによるマッピングスコアの補正を行う。ステップS103の処理の詳細については、
図8のフローチャートで説明する。
【0035】
ステップS201では、標準形式の項目のクラスタリング結果を取得する。標準形式は仕様が定まっているため、予めクラスタリングしておくことができる。本発明では、標準形式の項目を「発注・取引」「明細」「合計数量」「数量」「積」「乗数」「積かつ乗数」の7つに分類するものとする。
【0036】
「発注・取引」に分類される項目は、「取引番号」のような取引ごとにユニークに割り当てられる情報から一意に特定できる項目である。例えば、支払法人コードや発注者コードなど、一つの取り引きに1種類の情報しか存在しない項目である。
【0037】
「明細」に分類される項目は、「発注・取引」に分類されない項目、すなわち、取引ごとにユニークに割り当てられる情報から一意に特定できない項目である。例えば、商品名のように一つの取り引きに複数種類の情報が存在しうる項目である。
【0038】
「数量」と「合計数量」は、ある項目(数量)の「取引番号」毎の合計値という関係にある項目(合計数量)がそれぞれ分類される。例えば「税額」と「税額合計金額」については、それぞれ「税額」は「数量」に分類され、「税額合計金額」は「合計数量」に分類される。
【0039】
「積」「乗数」「積かつ乗数」は、1つのレコード内で下記のような方程式関係が成立している項目について、それぞれ分類されるクラスタである。
【0040】
例えば、
原価金額=原単価×発注数量(バラ)
原価金額=原単価×発注重量
売価金額=売単価×発注数量(バラ)
売価金額=売単価×発注重量
発注数量(バラ)=発注単位×発注数量(発注単位数)
という関係が成立する場合、「原価金額」「売価金額」は「積」に分類され、「原単価」「売単価」「発注重量」「発注単位」「発注数量(発注単位数)」は「乗数」に分類され、「発注数量(バラ)」は「積かつ乗数」に分類される。
【0041】
このようにして標準形式の項目を7つのクラスタに分類する。
【0042】
図9に標準形式の項目のクラスタリング結果の一例を示す。
図9に示す通り、標準形式の項目名が「発注・取引」「明細」「合計数量」「数量」「積」「乗数」「積かつ乗数」の7つにクラスタリングされている。クラスタリング結果についてはメモリに読み込む。
【0043】
ステップS202では、自社形式データを取得する。具体的には、ステップS101でアップロードされた自社形式のサンプルファイルをメモリに読み込む。
【0044】
ステップS203では、ステップS202で取得した自社形式データについて、「発注・取引」と「明細」の2つのグループにクラスタリングを行う。ステップS203の処理の詳細については、
図10のフローチャートで説明する。
【0045】
ここで、「発注・取引」と「明細」の分類について説明する。通常、EDIで扱われるデータは
図11の「伝票のイメージ図」ような伝票の形式を元にしている。納品先などの発注・取引レベルの項目は伝票1枚に対して1つの値しか記載されないが、品名などの明細レベルの項目は、複数の値を記載することができる。
【0046】
そのため、伝票1枚につき1つの値を取る項目を「発注・取引」に分類し、複数の値を取る項目を「明細」に分類することで、発注・取引レベルの項目と明細レベルの項目とを区別する。
【0047】
図10のフローチャートを用いてステップS203の処理を説明する。
【0048】
ステップS301では、自社形式データから標準形式の「取引番号(発注・返品)」に相当する列を取得する。「取引番号(発注・返品)」列を取得する方法については、複数考えることができる。ステップS102の自動マッピング結果から取得してもよいし、ユーザからの入力を受け付けてもよい。
【0049】
図6の例では、「伝票番号」列が「取引番号(発注・返品)」に相当する。
【0050】
ステップS302では、自社形式データから、任意の列Aを選択する。ここでは、
図6の「店コード」列を選択した場合と、「原価金額」列を選択した場合について説明する。
【0051】
ステップS303では、列Aの値が取引番号により一意に定まるか否かを判断する。一意に定まる場合(S303:Yes)は処理をステップS304に移行し、定まらない場合(S303:No)は、ステップS305に移行する。
【0052】
例えば、「店コード」列を選択した場合、「伝票番号:店コード」の対応関係は「2100001:3200、2100002:1500、2100003:2010」となるため、S303ではYesと判断される。
【0053】
他方、「原価金額」列を選択した場合、伝票番号2100001に対し、原価金額は4800と3200の2つの値を持つため、S303ではNoと判断される。
【0054】
ステップS304では、列Aを「発注・取引」というクラスタに分類する。
【0055】
図6の例では、「伝票番号」、「納品センター名」、「納品センターコード」、「店名」、「店コード」、「原価金額合計」がS303でYesと判断されるため、「発注・取引」クラスタに分類される。
【0056】
ステップS305では、列Aを「明細」というクラスタに分類する。
図6の例では、「品名」、「数量」、「原単価」、「原価金額」がS303でNoと判断されるため、「明細」クラスタに分類される。
【0057】
ステップS306では、自社形式データの全ての列について処理が完了したか否かを判断する。
処理が完了した場合(S306:Yes)は、本フローチャートの処理を完了する。
完了していない場合(S306:No)は、処理をステップS302に移行し、未処理の列を列Aとして選択する。
【0058】
【0059】
ステップS204では、ステップS202で取得した自社形式データについて、「数量」と「合計数量」のグループにクラスタリングを行う。ステップS204の処理の詳細については、
図12のフローチャートで説明する。
【0060】
ここで「数量」と「合計数量」のクラスタについて説明する。
図13の「原価金額」と「原価金額合計」のように、EDIで扱うデータには、ある項目の値を合計すると別の項目の値と一致する関係が存在する。
【0061】
「数量」、「合計数量」のクラスタリングは、自社形式データからこの合計の関係が成立する列の組み合わせを発見し、「数量」クラスタと「合計数量」クラスタに分類する。
【0062】
ステップS401では、ステップS301と同様に、自社形式データから標準形式の「取引番号(発注・返品)」に相当する列を取得する。
【0063】
ステップS402では、自社形式データから、任意の数値型の列A、列Bを選択する。ここでは、
図6の「原価金額合計」列を列A、「原価金額」列を列Bとして選択した場合について説明する。
【0064】
ステップS403では、列Aの値が取引番号により一意に定まるか否かを判断する。
【0065】
一意に定まる場合(S403:Yes)は、処理をステップS404に移行する。
【0066】
定まらない場合(S403:No)は、合計の関係が成立し得ないため、処理をスキップしてステップS407に移行する。
【0067】
ステップS404では、列Bの値を取引番号毎に合計し、メモリに保持しておく。
【0068】
ステップS405では、合計の関係が成立するか否かを判断する。
【0069】
列Aの値と、ステップS404で計算した列Bの合計値を、取引番号毎に比較する。全ての取引番号で等式が成立した場合(S405:Yes)は、ステップS406に移行する。等式が成立しなかった場合(S405:No)が、処理をスキップしてステップS407に移行する。
【0070】
図4の例では、「8000(列Aの値)= 4800+3200(列Bの合計値)」、「6300 = 1500+4800」、「4700 = 3200+1500」となり、全ての取引番号で等式が成立する。そのため、ステップS405はYesと判断される。
【0071】
ステップS406では、列Aを「合計数量」、列Bを「数量」というクラスタに分類する。
図4の例では、「原価金額合計」が「合計数量」に分類され、「原価金額」が「数量」に分類される。
【0072】
ステップS407では、自社形式データの全ての列Aと列Bの組み合わせについて、処理が完了したか否かを判断する。処理が完了した場合(S407:Yes)は、本フローチャートの処理を完了する。完了していない場合(S407:No)は、処理をステップS402に移行し、未処理の組み合わせを列Aと列Bとして選択する。
【0073】
【0074】
ステップS205では、ステップS202で取得した自社形式データについて、「積」、「乗数」、「積かつ乗数」のクラスタリングを行う。ステップS205の処理の詳細については、
図14のフローチャートで説明する。
【0075】
ここで「積」、「乗数」、「積かつ乗数」のクラスタについて説明する。
図15の「原単価、数量」と「原価金額」のように、EDIで扱うデータには、ある2項目の値の積を取ると別の項目の値と一致する関係が存在する。
【0076】
「積」、「乗数」、「積かつ乗数」のクラスタリングは、自社形式データからこの積の関係が成立する列の組み合わせを発見し、「積」、「乗数」、「積かつ乗数」の3クラスタに分類する。
【0077】
ステップS501では、自社形式データから、任意の数値型の列A、列B、列Cを選択する。
ここでは、
図6の「原価金額」列を列A、「原単価」列を列B、「数量」列を列Cとして選択した場合について説明する。
【0078】
ステップS502では、積の関係が成立するか否かを判断する。列Bの値と列Cの値との積を取り、列Aの値と比較する。全てのレコードで等式が成立した場合(S502:Yes)は、ステップS503に移行する。等式が成立しなかった場合(S502:No)が、処理をスキップしてステップS504に移行する。
【0079】
図6の例では、「4800(列Aの値)= 100(列Bの値)×48(列Cの値)」、「3200 = 160×20」、「1500 = 60×25」となり、以下全てのレコードでも等式が成立する。そのため、ステップS502はYesと判断される。
【0080】
ステップS503では、列Aを「積」、列Bを「乗数」というクラスタに分類する。
図6の例では、「原価金額」が「積」に分類され、「原単価」と「数量」が「数量」に分類される。
【0081】
ステップS504では、自社形式データの全ての列A、列B、列Cの組み合わせについて、処理が完了したか否かを判断する。処理が完了した場合(S504:Yes)は、処理をステップS505に移行する。完了していない場合(S504:No)は、処理をステップS501に移行し、未処理の組み合わせを列A、列B、列Cとして選択する。
【0082】
ステップS505では、「積」と「乗数」の両方に分類された列を「積かつ乗数」クラスタに分類する。データによっては、S501からS504の処理の結果、「積」クラスタと「乗数」クラスタの両方に分類される列が存在する。このような列と、「積」か「乗数」の一方のみに分類される列とを区別するため、特別に「積かつ乗数」として分類する。
【0083】
S505の処理の後、本フローチャートを終了する。
【0084】
【0085】
ステップS206では、クラスタリングの重複の除去を行う。ステップS203、S204、S205のクラスタリングはそれぞれ独立に実施したため、1つの項目が2つ以上のクラスタに分類されている場合があることから、ここで重複の除去を行う。
【0086】
例えば、
図6の例では、「原価金額」が「明細」、「数量」、「積」の3クラスタに重複して分類される。この重複を除去するため、各クラスタに優先順位を設定し、重複する項目は優先順位が高いクラスタのみ残す。
【0087】
例えば優先順位を「積かつ乗数」>「乗数」>「積」>「数量」>「合計数量」>「明細」>「発注・取引」と設定した場合、
図6のテーブルデータの各項目は、
図16のようにクラスタリングされる。
【0088】
ステップS207では、異なるクラスタに属する項目同士のマッピングスコアに下降補正をかける。本実施例においては異なるクラスタに属する項目同士のマッピングスコアに下降補正をかけるものとして説明するが、同じクラスタに属する項目同士のマッピングスコアに上昇補正をかける方法であっても良い。
【0089】
図9と
図16のクラスタリング結果によって、
図7のマッピングスコアを補正すると、
図17のような結果が得られる。
【0090】
ここでは、下降補正の倍率は0.5倍として計算したが、0.5倍に限定されるものではなく、適切な値を自由に設定できるものとする。また、0.2ポイント下げるといった絶対値による設定値であってもよい。
【0091】
図7の時点では、「店コード:最終納品先コード」と「店コード:原価金額」の区別が不可能であった。しかし、クラスタリングの結果、「店コード」と「最終納品先コード」は「発注・取引」クラスタ、「原価金額」は「積」クラスタに分類されるため、「店コード:原価金額」のマッピングスコアに下降補正がかかり、「店コード:最終納品先コード」を適切にマッピングすることが可能になる。
【0092】
【0093】
ステップS104では、階層構造を利用したマッピング補正を行う。例えば、自社形式データの項目名に特徴が少ない場合、単一列によるマッピングだと
図18のようなマッピングスコアが出力され、項目同士の区別が困難になる。階層構造を利用したマッピング補正では、このように区別が困難な名称列のマッピングを補正する。
【0094】
EDIで扱うデータでは、項目間の階層構造が成立する場合がある。例えば
図6の例では、石井店と松田店は第一センターの管轄下にあり、大ヶ浜店は第二センターの管轄下にあるというように、「納品センター名」→「店名」という階層構造がある。
【0095】
階層構造を利用したマッピング補正では、データからこの階層構造を発見し、同じ階層の項目同士のマッピングスコアに上昇補正をかける。
【0096】
詳細については、
図19のフローチャートで説明する。
【0097】
ステップS601では、標準形式の項目のランクを取得する。標準形式は仕様が定まっているため、予めランク付けしておくことができる。そのランク付け結果をメモリに読み込む。
【0098】
図20に標準形式の項目のランク付け結果の一例を示す。ここで、ランクの値は小さいほど上位階層に位置することを意味する。
【0099】
図20では、階層構造を持つことが期待される名称列のみを記載しているが、同様に階層構造を持つコード列に対して本手法を適用してもよい。
【0100】
ステップS602では、自社形式データから項目のランク推定を行う。その詳細について、
図21のフローチャートで説明する。
【0101】
ステップS701では、自社形式データから、任意の列A、列Bを選択する。ここで、全ての列を選択対象としてもよいし、
「発注・取引」クラスタ内の文字列型の列のみを選択対象とすることで名称列に限定してもよい。
以下の説明では、
図6において、「発注・取引」クラスタ内の文字列型の列である「発注社名」、「納品センター名」、「店名」を選択対象として、「納品センター名」列を列A、「店名」列を列Bとして選択した場合について説明する。
【0102】
ステップS702では、列Aの値毎に列Bのデータをグループ分けする。
図6の例では、「第一センター」→[石井店、松田店]、「第二センター」→[大ヶ浜店]とグループ分けされる。
【0103】
ステップS703では、S702で得たグループ間で重複する値が存在するか否かを判断する。重複する値が存在する場合(S703:Yes)は、処理をスキップしてステップS707に移行する。重複する値が存在しない場合(S703:No)は、処理をステップS704に移行する。
【0104】
図6の例では、[石井店、松田店]と[大ヶ浜店]の間に重複する項目は存在しないため、S703はNoとなる。
【0105】
ステップS704では、S702とは逆に、列Bの値毎に列Aのデータをグループ分けする。
図6の例では、「石井店」→[第一センター]、「松田店」→[第一センター]、「大ヶ浜店」→[第二センター]とグループ分けされる。
【0106】
ステップS705では、S704で得たグループ間で重複する値が存在するか否かを判断する。重複する値が存在する場合(S705:Yes)は、処理をステップS706に移行する。重複する値が存在しない場合(S705:No)は、処理をスキップしてステップS707に移行する。
【0107】
図6の例では、「石井店」→[第一センター]と「松田店」→[第一センター]とで第一センターが重複するため、S705はYesとなる。
【0108】
このように、一方では重複せず(S702:NO)、逆にした場合に重複する(S705:YES)場合には、階層構造(親子関係)にあると判断できる。そのため、ステップS706において、「列Aは列Bの親」という情報をメモリに記録する。
図6の例では、「納品センター名」は「店名」の親という情報を記録する。
【0109】
ステップS707では、自社形式データの全ての列Aと列Bの組み合わせについて、処理が完了したか否かを判断する。処理が完了した場合(S707:Yes)は、処理をステップS708に移行する。完了していない場合(S707:No)は、処理をステップS701に移行し、未処理の組み合わせを列Aと列Bとして選択する。
【0110】
ステップS708では、親を持たない列のランクを0に設定する。
図6の例では、「発注社名」のランクが0に設定される。その他の「納品センター名」は「発注社名」を親に持ち、「店名」は「発注社名」と「納品センター名」を親に持つため、S708ではランクの設定を実施しない。
【0111】
ステップS709では、親を持つ列のランクを(親のランク)+1に設定する。
図6の例では、「納品センター名」はランク0の「発注社名」を親に持つため、ランク1に設定する。また、複数の親を持つ場合は、ランクが最大になるように設定する。
【0112】
従って、「店名」はランク0の「発注社名」と、ランク1の「納品センター名」を親に持つが、最大となるようにランク2に設定する。その結果、
図22のようにランクが推定される。
【0113】
【0114】
ステップS603では、同じランクに属する項目同士のマッピングスコアに上昇補正をかける。
図20と
図22のランク付け結果によって、
図18のマッピングスコアを補正すると、
図23のような結果が得られる。ここでは、上昇補正の倍率は2.0としたが、2.0に限定されるものではなく、適切な値を自由に設定できるものとする。また、0.5ポイント上げるといった絶対値による設定値であってもよい。
【0115】
また、本実施例においては同じランクに属する項目同士のマッピングスコアに上昇補正をかけるものとして説明するが、異なるランクに属する項目同士のマッピングスコアに下降補正をかける方法であっても良い。
【0116】
図18の時点では、「納品センター名:直接納品先名称」と「納品センター名:最終納品先名称」の区別が不可能であった。しかし、ランク付けの結果、「納品センター名」と「直接納品先名称」のランクは1、「最終納品先名称」のランクは2に設定されるため、「納品センター名:直接納品先名称」のマッピングスコアに上昇補正がかかり、「納品センター名:直接納品先名称」を自動マッピングすることが可能になる。
【0117】
【0118】
ステップS105では、1対1対応する名称列とID列の関係を利用したマッピングスコアの補正を行う。
【0119】
EDIで扱うデータでは、発注者名称に対する発注者コードなど、登場人物の名称列に対応するID列が存在する。そして、
図24のように、数字の羅列であるコードよりも、意味ある文字列である名称の方が、信頼できるマッピングスコアが得られる可能性が高い。そこで、1対1対応する名称列とID列の関係を利用したマッピング補正では、信頼度の高い名称列のマッピングによってID列のマッピングスコアを補正する。
【0120】
その詳細について、
図25のフローチャートで説明する。
【0121】
ステップS801では、標準形式の名称列とID列の対応表を取得し、メモリに読み込む。対応表の一例を
図26に示す。
【0122】
ステップS802では、自社形式データ内の1対1対応する列を取得する。その詳細について、
図27のフローチャートで説明する。
【0123】
ステップS901では、自社形式データから、任意の文字型列A、数値型列Bを選択する。ここで、全ての列を選択対象としてもよいし、「発注・取引」クラスタ内の列のみを選択対象とすることで登場人物の列に限定してもよい。
【0124】
以下の説明では、
図6において、「発注・取引」クラスタ内の列に限定し、S301やS401でマッピングが既知となっている「取引番号」列を除外した、「発注社名」、「納品センター名」、「納品センターコード」、「店名」、「店コード」を選択対象とする。その中から、「店名」列を列A、「店コード」列を列Bとして選択した場合について説明する。
【0125】
ステップS902では、列Aの値毎に列Bのデータをグループ分けする。
図6の例では、「石井店」→[3200]、「松田店」→[1500]、「大ヶ浜店」→[2010]とグループ分けされる。
【0126】
ステップS903では、S902で得たグループ間で重複する値が存在するか否かを判断する。重複する値が存在する場合(S903:Yes)は、処理をスキップしてステップS907に移行する。重複する値が存在しない場合(S903:No)は、処理をステップS904に移行する。
【0127】
図6の例では、[3200]、[1500]、[2010]の中に重複する項目は存在しないため、S903はNoとなる。
【0128】
ステップS904では、S902とは逆に、列Bの値毎に列Aのデータをグループ分けする。
図6の例では、「3200」⇒[石井店]、「1500」⇒[松田店]、「2010」⇒[大ヶ浜店]とグループ分けされる。
【0129】
ステップS905では、S904で得たグループ間で重複する値が存在するか否かを判断する。重複する値が存在する場合(S905:Yes)は、処理をスキップしてステップS907に移行する。重複する値が存在しない場合(S905:No)は、処理をステップS906に移行する。
【0130】
図6の例では、[石井店]、[松田店]、[大ヶ浜店]の中に重複する項目は存在しないため、S905はNoとなる。
【0131】
このように、S902においてもS904においてもいずれの場合も重複しない場合は、1対1で対応していると判断できるため、ステップS906において「列Aと列Bは1対1対応する」という情報をメモリに記録する。
図6の例では、「店名」と「店コード」は1対1対応するという情報を記録する。
【0132】
ステップS907では、自社形式データの全ての列Aと列Bの組み合わせについて、処理が完了したか否かを判断する。処理が完了した場合(S907:Yes)は、本フローチャートの処理を完了する。完了していない場合(S907:No)は、処理をステップS901に移行し、未処理の組み合わせを列Aと列Bとして選択する。
【0133】
図6の例では、本フローチャートの処理の結果、「店名」と「店コード」及び「納品センター名」と「納品センターコード」が1対1対応する、という情報が記録される。
図25の説明に戻る。
【0134】
ステップS803では、1対1対応する文字型列A、数値型列Bのペアを選択する。
図6の例では、「店名」-「店コード」と「納品センター名」-「納品センターコード」の2つのペアから選択する。ここでは、「店名」-「店コード」を選択した場合について説明する。
【0135】
ステップS804では、列Aのマッピング候補から名称列aを取得する。
図6の例では、「店名」のマッピング候補として、
図24から「最終納品先名称」を取得する。
【0136】
ステップS805では、対応表から名称列aに対応するID列bを取得する。
図6の例では、「最終納品先名称」に対応するID列として、
図26から「最終納品先コード」を取得する。
【0137】
ステップS806では、列BとID列bのマッピングスコアに上昇補正をかける。
図6の例では、「店コード」-「最終納品先コード」のマッピングスコアに上昇補正をかける。
【0138】
ステップS807では、全ての1対1対応するペアについて、処理が完了したか否かを判断する。処理が完了した場合(S807:Yes)は、本フローチャートの処理を完了する。完了していない場合(S807:No)は、処理をステップS803に移行し、未処理のペアを選択する。
【0139】
図6の例では、本フローチャートの処理の結果、「店コード」-「最終納品先コード」と「納品センターコード」-「直接納品先コード」のマッピングスコアに上昇補正がかけられる。上昇補正の倍率は2.0とすると、
図28のような結果が得られ、「店コード」と「納品センターコード」の区別が可能となる。
【0140】
なお、スコアの補正倍率として本実施例においては2.0倍としたが、この値に限定されるものではなく、適切な値を自由に設定できるものとする。また、0.5ポイント上げるといった絶対値による設定値であってもよい。
【0141】
【0142】
ステップS106では、クライアント端末101の表示部に自動マッピングの結果を表示するよう制御する。
【0143】
自動マッピング結果の表示画面は、
図29のように各列名、当該列のサンプルデータ、マッピング結果が表示される。
【0144】
ステップS107では、マッピング結果を修正するか否かの指示を受け付ける。
【0145】
修正する指示を受けつけた場合(S107:Yes)は処理をステップS108に移行し、受け付けていない場合(S107:No)は、本フローチャートの処理を終了する。
【0146】
ステップS108では、マッピング結果の修正を受け付ける。
【0147】
修正の受付方法としては、
図30の様にマッピング結果をクリックし、プルダウンリストから選択するUI等が考えられる。修正後、ステップS106に移行し、修正後のマッピング結果を表示する。
【0148】
この処理を繰り返し、マッピングの修正がなくなれば、本フローチャートの処理を終了する。
【0149】
本実施例においては、S103、S104、S105のマッピングスコア補正処理を順番に実施する形態を説明したが、この3つの処理の1つだけを実施しても良いし、「S103とS104」、「S103とS105」、「S104とS105」という任意の2つの処理を実施しても良い。また2つの処理、3つの処理を実施する場合は、実施する順序もいずれでも良い。
【0150】
以上、実施形態について示したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記録媒体等としての実施態様をとることが可能である。具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【0151】
また、本発明におけるプログラムは、
図3に示すフローチャートの処理方法をコンピュータが実行可能なプログラムであり、本発明の記憶媒体は
図3の処理方法をコンピュータが実行可能なプログラムが記憶されている。なお、本発明におけるプログラムは
図3の各装置の処理方法ごとのプログラムであってもよい。
【0152】
以上のように、前述した実施形態の機能を実現するプログラムを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記録媒体に格納されたプログラムを読み出し、実行することによっても本発明の目的が達成されることは言うまでもない。
【0153】
この場合、記録媒体から読み出されたプログラム自体が本発明の新規な機能を実現することになり、そのプログラムを記録した記録媒体は本発明を構成することになる。
【0154】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD-ROM、CD-R、DVD-ROM、磁気テープ、不揮発性のメモリカード、ROM、EEPROM、シリコンディスク等を用いることが出来る。
【0155】
また、コンピュータが読み出したプログラムを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0156】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0157】
また、本発明は、複数の機器から構成されるシステムに適用しても、ひとつの機器から成る装置に適用しても良い。また、本発明は、システムあるいは装置にプログラムを供給することによって達成される場合にも適応できることは言うまでもない。この場合、本発明を達成するためのプログラムを格納した記録媒体を当該システムあるいは装置に読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
【0158】
さらに、本発明を達成するためのプログラムをネットワーク上のサーバ、データベース等から通信プログラムによりダウンロードして読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。なお、上述した各実施形態およびその変形例を組み合わせた構成も全て本発明に含まれるものである。
【符号の説明】
【0159】
101 クライアント端末
102 サーバ装置
103 LAN