Alteryxで全角・半角の変換を行う(カタカナ編)
こんにちは、小澤です。
Alteryxの全角・半角問題第2弾です(第3弾はありません)。 第1弾ではアルファベットの全角・半角の変換を扱いました。
今回は、アルファベットとは同じ方法で対応できないカタカナを変換する方法について書かせていただきます。
カタカナの変換における問題
カタカナの場合、アルファベットとは異なる問題が2つあります。
1つ目はアルファベットの時のように差分が一定になっていないということです。 実際にAlteryxで確認すると、以下のようになっています。
ちなみに、全角アは12450でイは12452と数値が飛んでいますが、12451は「ィ」(小さい「イ」)のようです。 このようにカタカナは全角と半角で並びが一致していません。
2つ目の問題は、濁点の扱いです。 たとえば、全角の「ガ」は1文字ですが、半角の「ガ」は「カ」と「゙」の2文字になっています。 この影響で、各文字の変換を1対1で対応させることができなくなっているのです。
半角カタカナをアルファベットの時と同じように分割すると、以下のように濁点も1文字になっています。
これをうまいこと全角1文字と対応させるには、以下のような形式になってほしいのです。
解決するワークフローを作成する
では、これらを解決しつつ、半角カタカナを全角に変換するワークフローを作成していきましょう。 ちなみに今回は結構な力業になっているのでご容赦くださいw
ワークフローの全体像は以下のようになります。
今回も入力はText Inputを使っています。 データは以下のようになっています。
これをRegExツールを使って文字に分割するまではアルファベットの時と同じです。
続いてのMulti-Row Formulaツールでは、Field1の値を以下の式で書き換えています。
IIF([Row+1:Field1] == "゙" or [Row+1:Field1] == "゚", [Field1] + [Row+1:Field1], [Field1])
これは何をしているかというと、半角カタカナは濁点が入ると2文字になることへの対応です。 現在の文字の1文字後ろが「゙」か「゚」であればそれを結合した文字にしています。 これによって以下のようなデータが得られます。
3行目や10行目が濁点込みの文字になっているのが確認できるかと思います。
このままでは濁点単体の行が残っているので、Filterツールで以下の式によって削除しています。
[Field1] != "゙" and [Field1] != "゚"
さて、これで準備は整いました。 あとは、力業で1文字1文字変換していきますw Formulaツールで以下の式を書きます(利用する際はコピペでいいですw)
Switch( [Field1], [Field1], "ア", "ア", "イ", "イ", "ウ", "ウ", "エ", "エ", "オ", "オ", "カ", "カ", "キ", "キ", "ク", "ク", "ケ", "ケ", "コ", "コ", "サ", "サ", "シ", "シ", "ス", "ス", "セ", "セ", "ソ", "ソ", "タ", "タ", "チ", "チ", "ツ", "ツ", "テ", "テ", "ト", "ト", "ナ", "ナ", "ニ", "ニ", "ヌ", "ヌ", "ネ", "ネ", "ノ", "ノ", "ハ", "ハ", "ヒ", "ヒ", "フ", "フ", "ヘ", "ヘ", "ホ", "ホ", "マ", "マ", "ミ", "ミ", "ム", "ム", "メ", "メ", "モ", "モ", "ヤ", "ヤ", "ユ", "ユ", "ヨ", "ヨ", "ラ", "ラ", "リ", "リ", "ル", "ル", "レ", "レ", "ロ", "ロ", "ワ", "ワ", "ヲ", "ヲ", "ン", "ン", "ァ", "ァ", "ィ", "ィ", "ゥ", "ゥ", "ェ", "ェ", "ォ", "ォ", "ャ", "ャ", "ュ", "ュ", "ョ", "ョ", "ッ", "ッ", "ガ", "ガ", "ギ", "ギ", "グ", "グ", "ゲ", "ゲ", "ゴ", "ゴ", "ザ", "ザ", "ジ", "ジ", "ズ", "ズ", "ゼ", "ゼ", "ゾ", "ゾ", "ダ", "ダ", "ヂ", "ヂ", "ヅ", "ヅ", "デ", "デ", "ド", "ド", "バ", "バ", "ビ", "ビ", "ブ", "ブ", "ベ", "ベ", "ボ", "ボ", "パ", "パ", "ピ", "ピ", "プ", "プ", "ペ", "ペ", "ポ", "ポ", "。", "。", "「", "「", "」", "」", "、", "、", "・", "・", "ー", "ー" )
半角カタカナとそれに対応する全角カタカナを列挙してSwitch関数を使って置換しているわけです。 これで、以下のような結果が得られます。
あとは、アルファベットの時と同様Summarizeで結合すれば以下のような最終的な結果が得られます。
おわりに
今回は、Alteryxでカタカナの全角・半角を変換する方法を紹介しました。
実はもっとスマートなやり方もあるかもしれませんが、私の考えつく範囲ではこれが限界でしたw まぁ、変換のFormula式は一回誰かが書けばコピペできるんでそれでもいいですよね?
個人的にはもうそろそろ半角カタカナはなくなってほしいですw
Alteryxの導入なら、クラスメソッドにおまかせください
日本初のAlteryxビジネスパートナーであるクラスメソッドが、Alteryxの導入から活用方法までサポートします。14日間の無料トライアルも実施中ですので、お気軽にご相談ください。