コンテンツにスキップ

AI名寄せ

同じものを指している行を AI にまとめさせます。 「日本商事」「日本商事株式会社」「ニホン商事」のように、文字は違うが同じ相手を指す行を 1 つのグループにします。

文字の近さだけで判定するなら文字列の類似度グルーピングが使えます。こちらは意味を見るので、略称や通称もまとめられます。

入出力

ポート内容
入力データデータ
出力データデータ

Spark エンジンでは動きません。

行の数は変わりません。 列が 2 つ増えます(上書きを選んだときは 1 つ)。

増える列

列名内容
名寄せ一致ID同じものと判定された行に付く同じ値。<グループの値>-<連番> の形
新規列名に入れた名前そのまとまりの代表として整えた文字列

このノードは「まとめる」だけでなく「整える」こともします。 まとまりごとに代表の書き方を 1 つ決めて、新しい列に入れます。AIクレンジングを別に掛ける必要はありません。

まとめられなかった行は 名寄せ一致ID も新規列も空欄になります。グループの中に 1 行しかない場合や、どの行とも同じと判定されなかった場合です。代表表記はまとまりごとに作るので、まとまりのない行には入りません。

設定項目

結果の挿入先を設定
新規列に挿入(既定)か既存列に上書き。
新規列名を入力必須
新規列に挿入のときだけ出ます。整えた文字列が入る列の名前です。
列を選択必須
既存列に上書きのときだけ出ます。整えた文字列を書き込む列です。
処理対象列を選択必須
名寄せしたい列。文字列の列だけ選べます。1 列だけです。
グループ化する列を選択必須
この列の値ごとに名寄せします。全体を一度に見るのではありません。型の制限はありません。
対象列のカテゴリを選択
住所 / 社名 / 氏名 / 電話番号 / 自分で設定。
カテゴリを入力
自分で設定のときだけ出ます。

グループ化する列が要る理由

一度に見る範囲を区切るためです。グループの中の値を 2 つずつ総当たりで比べるので、グループ内の値の種類が n 個なら、問い合わせは n × (n − 1) ÷ 2 回になります。100 種類で 4,950 回、200 種類なら 19,900 回です。

「都道府県ごとに会社名を名寄せする」のように、同じグループの中にしか同一のものが現れない列を選んでください。適切な列がなければ、日付要素の切り出しや値を列に挿入で区切り用の列を作ります。

グループの中で値の種類が 1 つしかないときは、問い合わせずに 名寄せ一致ID を振ります。 2 行以上あっても、値が同じなら比べる必要がないためです。

先に表記を揃えておく

揺れを減らしてから掛けると精度が上がり、問い合わせの回数も減ります。 比べるのは「値の種類」なので、表記が揃うほど種類が減ります。

  1. 文字列のクレンジングで字幅や空白を揃える
  2. 特殊な文字列のクレンジングで会社名の表記を揃える
  3. このノードに渡す

結果は毎回同じとは限らない

AI の応答なので、同じデータでも結果が変わることがあります。まとまり方は目で確かめてください。

エラーと対処

新規列名が既存の列名とぶつかっている

新規列に挿入で、すでにある列と同じ名前を入れたときに出ます。

新規列名({{new_col}})が既存の列名と重複しています。

直し方 — 別の名前にするか、既存列に上書きに切り替えます。

列を選ばずに実行した

処理対象列を選択・グループ化する列を選択(既存列に上書きなら列を選択)のどれかが空のまま実行したときに出ます。前の処理で列名が変わり、選んでいた列が入力データからなくなったときにも同じメッセージです。

対象の列が選択されていません。

直し方 — 列を選び直してください。

どのグループも 1 行しかない

グループ化する列を細かくしすぎて、どのグループも 1 行だけになったときに出ます。比べる相手が 1 組も作れないためです。訳されていない英語のまま出ます。

No objects to concatenate

直し方 — グループ化する列をもっと粗い列(市区町村 → 都道府県 など)に替えてください。顧客 ID のように 1 行ごとに違う値の列は、グループ化する列には使えません。

よく使う例

1. 取引先名を名寄せする

同じ会社が複数の書き方で登録されているとき。

入力

都道府県取引先名
東京都日本商事
東京都日本商事株式会社
大阪府関西物流

設定

設定項目値
新規列名を入力取引先名_名寄せ
処理対象列を選択取引先名
グループ化する列を選択都道府県
対象列のカテゴリを選択社名

出力 — 東京都の 2 行に同じ 名寄せ一致ID(東京都-1)が付き、取引先名_名寄せ に同じ代表名が入ります。大阪府の 1 行は比べる相手がいないので、名寄せ一致ID も 取引先名_名寄せ も空欄になります。

2. 住所を名寄せする

同じ場所が別の書き方で入っているとき。

入力

都道府県住所
東京都渋谷区道玄坂1-2-3
東京都東京都渋谷区道玄坂一丁目2-3

設定

設定項目値
処理対象列を選択住所
グループ化する列を選択都道府県
対象列のカテゴリを選択住所

出力 — 2 行が同じ 名寄せ一致ID にまとまります。

3. 問い合わせの回数を減らす

対象が多く、処理が重いとき。

入力 — 例 1 と同じ(全国 5 万行)

設定 — グループ化する列を 都道府県 より細かい 市区町村 に替えます。先に文字列のクレンジングも掛けます。

出力 — 1 グループあたりの種類が減るので、問い合わせの回数が大きく減ります。別の市区町村にまたがる同一の相手はまとまりません。

4. 名寄せ後に集計する

まとめた単位で売上を見たいとき。

入力 — 例 1 の出力

設定 — 名寄せ一致ID をキーにデータ集計で売上を合計します。

出力 — 書き方の違う行がまとまった単位で合計が出ます。名寄せ一致ID が空欄の行は 1 つのグループに入ってしまうので、先に欠損値処理で埋めるか分けてください。

5. まとまり方を目で確かめる

AI の判定が妥当かを確認したいとき。

入力 — 例 1 の出力

設定 — 行の並べ替えで 名寄せ一致ID の昇順にします。

出力 — 同じ ID の行が並ぶので、間違ってまとめられた組を見つけやすくなります。

関連