コンテンツにスキップ

文字列のクレンジング

書き方のゆれをまとめて揃えます。字の形、大文字と小文字、余計なスペースや改行を一度に整えます。名寄せや突き合わせの前処理に使います。

会社名・電話番号・住所のように決まった形のデータを整えたいなら特殊な文字列のクレンジングを使ってください。こちらはどんな文字列にも効く一般的な整え方です。

入出力

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

Spark エンジンでも動きます。行の数は変わりません。

設定項目

結果の挿入先を設定
新規列に挿入(既定)か既存列に上書き。
接尾辞を入力必須
「新規列に挿入」のときに出ます。元の列名の後ろに付ける文字。既定は _正規化。複数列を一度に処理できるので、列名そのものではなく接尾辞を指定します。会社名 を処理すると 会社名_正規化 ができます。
処理対象列を選択
文字列の列だけ選べます。複数選べます。必須の印は付きませんが、選ばずに実行するとエラーになります。

同じ名前の列がすでにあると、確認なく書き換わります。 接尾辞は、既にある列名とぶつからないものにしてください。

クレンジングの種類

10 種類のうち、使うものを on にします。 一部は既定で on なので、使わないものは off にしてください。

10 種類の設定(既定値つき)
特殊な数字表記を半角数字に統一既定 on
数を表す飾り文字を、ふつうの数字に直します。一 → 1、① → 1、⑴ → 1。〇 一〜九 十 の漢数字は、語の途中にあっても 1 文字ずつ置き換わります。下の注意を読んでから使ってください。
半角/全角の統一既定 何もしない
全角にする / 半角にする / 何もしない(既定)。ABC と ABC のように字幅の違う書き方を、どちらかに寄せます。
大文字/小文字の統一既定 すべて大文字にする
すべて大文字にする(既定)/ すべて小文字にする / 何もしない。abc と ABC が同じ値になります。
平仮名/片仮名の統一既定 何もしない
平仮名にする / 片仮名にする / 何もしない(既定)。あいう と アイウ を同じ値にします。「半角/全角の統一」で「半角にする」を選んでいるときは、この項目自体が出ません。
スペースを除去既定 on
文字の間にあるスペースを消します。n e h a n → nehan。
改行コードを除去既定 on
改行をスペース 1 つに置き換えます(消して詰めるのではありません)。末尾の改行は消えます。
HTMLタグを除去既定 on
タグをスペース 1 つに置き換えます。a<b>c → a c。
URLを除去既定 on
http:// か https:// で始まる文字列をスペース 1 つに置き換えます。小文字の http しか見ません。「大文字/小文字の統一」が先に当たるので、既定の「すべて大文字にする」のままだと URL は消えません(下の注意を参照)。
ローマ字へ変換する既定 off
日本語をローマ字にします。渋谷区 → shibuyaku。長音の記号は先に取り除かれます。
メタフォン(音声的特徴)に変換する既定 off
読みの近い文字列を同じ記号にまとめます。japan → JPN。結果は大文字です。

処理の順番は決まっている

on にした処理は、必ず次の順で当たります。 並べ替えることはできません。

  1. 特殊な数字表記を半角数字に統一
  2. 半角/全角の統一
  3. 大文字/小文字の統一
  4. 平仮名/片仮名の統一
  5. スペースを除去
  6. 改行コードを除去
  7. HTMLタグを除去
  8. URLを除去
  9. ローマ字へ変換する
  10. メタフォン(音声的特徴)に変換する

「メタフォン(音声的特徴)に変換する」は、ローマ字になっている文字列に効きます。 日本語のまま掛けても意味のある結果になりません。「ローマ字へ変換する」と一緒に on にしてください。

空欄の扱い

行が消えることはありません。

空欄の扱いは「結果の挿入先を設定」で変わります。

挿入先空欄がどうなるか
既存列に上書き空文字として処理されます
新規列に挿入(既定)先に文字列に直されるので、空欄ではなく <NA> という文字になります。元の列も同じく <NA> に変わります

空欄を含む列を「新規列に挿入」で整えるときは、先に欠損値処理で埋めておいてください。

エラーと対処

文字列でない列を選んだ

処理対象列に文字列でない列が混ざっているときに出ます。どの列かはメッセージに出ます。

文字列以外の列が選択されています。列: {{not_string_cols}}

直し方 — 文字列の列だけを選んでください。数値や日付を整えたいなら、先に列の型変更で文字列にします。

列を選ばずに実行した

「処理対象列を選択」が空のまま実行したときに出ます。

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

直し方 — 整えたい列を選んでください。

選んだ列が見つからない

「処理対象列を選択」で指定した列が入力データにないとき、またはどの条件にも 1 列も当たらないとき。前の処理で列名が変わった場合にも出ます。

対象の列が存在しません。

直し方 — 列を選び直してください。列名が変わりうるデータでは、名前に頼らない選び方(型で選ぶ・前方一致)に変えると壊れにくくなります。

よく使う例

1. 突き合わせの前に揃える

お題 — 2 つのデータの会社名が揺れていて結合できない

入力 — A の 会社名 に NEHAN 商事、B の 会社名 に nehan商事

設定 — 両方のデータにこのノードを掛ける。半角/全角の統一を「半角にする」、大文字/小文字の統一は既定のまま

出力 — どちらも NEHAN商事 になり、キー列を指定する結合でつながる

2. 大文字小文字を揃える

お題 — 同じコードが ABC と abc で別物として数えられている

入力 — コード に ABC abc

設定 — 大文字/小文字の統一「すべて大文字にする」(既定)

出力 — どちらも ABC

3. 余計な空白を消す

お題 — 入力のときに入った空白で値が一致しない

入力 — 氏名 に 山田 太郎

設定 — 「スペースを除去」を on(既定)

出力 — 山田太郎

4. HTML から取り込んだ文字を整える

お題 — タグと URL が混ざっていて読みにくい

入力 — 本文 に <b>案内</b> https://example.com/ をご覧ください

設定 — 「HTMLタグを除去」「URLを除去」を on(既定)。あわせて「大文字/小文字の統一」を「何もしない」にする(既定の「すべて大文字にする」のままだと URL が消えません)

出力 — 案内 をご覧ください(先頭に 1 つ、案内 の後ろに 2 つスペースが残ります)

<b> </b> と URL がそれぞれスペース 1 つに置き換わった跡です。「スペースを除去」が先に当たるので、この 3 つが作ったスペースは残ります。 詰めたいときは文字の置換を続けて掛けてください

5. 複数の列を一度に整える

お題 — 会社名・部署名・担当者名をまとめて揃えたい

入力 — 会社名 部署名 担当者名

設定 — 処理対象列に 3 列を選ぶ。接尾辞 _正規化。「特殊な数字表記を半角数字に統一」は off にする(on のままだと 三菱商事 が 3菱商事、田中一郎 が 田中1郎 になります)

出力 — 会社名_正規化 部署名_正規化 担当者名_正規化 の 3 列が増える

6. 漢字とカタカナの書きゆれをまとめる

お題 — 同じ会社が 日本商事 と ニホン商事 に分かれていて、文字列の類似度グルーピングでまとまらない

入力 — 会社名 に 日本商事 と ニホン商事

設定 — 「ローマ字へ変換する」を on、「特殊な数字表記を半角数字に統一」を off(on のままだと 三菱 のような社名が壊れます)。できた 会社名_正規化 を文字列の類似度グルーピングに渡す

出力 — nipponshouji と nihonshouji。類似度が 0.29 から 0.80 に上がり、既定の閾値 0.5 でまとまります(漢字のままでは 0.29 で届きませんでした)

三菱商事 と ミツビシ商事 はどちらも mitsubishishouji になり、完全に一致します。

注意 — ローマ字は読みを 1 通りに決めるので、日本 が nippon、ニホン が nihon のように読みが違えばローマ字も違います。完全一致にはならないので、類似度グルーピングを続けて掛けてください

7. メタフォンでさらにまとめる

お題 — ローマ字にしてもまだ離れている読みを近づけたい

入力 — 例 6 と同じ

設定 — 「ローマ字へ変換する」と「メタフォン(音声的特徴)に変換する」を両方 on

出力 — NPNXJ と NHNXJ

注意 — メタフォンは「同じ記号になる」ものではありません。 上の例では別の記号のままで、類似度は 0.80(ローマ字どまり)から 0.50(メタフォン)へ下がります。母音が落ちて文字数が減るため、1 文字の違いが重く効くからです。まずローマ字だけで試し、まとまらないときにメタフォンを足してください

関連