文字列のクレンジング
書き方のゆれをまとめて揃えます。字の形、大文字と小文字、余計なスペースや改行を一度に整えます。名寄せや突き合わせの前処理に使います。
会社名・電話番号・住所のように決まった形のデータを整えたいなら特殊な文字列のクレンジングを使ってください。こちらはどんな文字列にも効く一般的な整え方です。
入出力
| ポート | 内容 |
|---|---|
| 入力データ | データ |
| 出力データ | データ |
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 にした処理は、必ず次の順で当たります。 並べ替えることはできません。
- 特殊な数字表記を半角数字に統一
- 半角/全角の統一
- 大文字/小文字の統一
- 平仮名/片仮名の統一
- スペースを除去
- 改行コードを除去
- HTMLタグを除去
- URLを除去
- ローマ字へ変換する
- メタフォン(音声的特徴)に変換する
「メタフォン(音声的特徴)に変換する」は、ローマ字になっている文字列に効きます。 日本語のまま掛けても意味のある結果になりません。「ローマ字へ変換する」と一緒に 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 文字の違いが重く効くからです。まずローマ字だけで試し、まとまらないときにメタフォンを足してください