中国の名前の分割

このテンプレートでは、中国系の名前をコンポーネントにパースする方法を示します。パーシング ルールに従って [名前] フィールド内の各トークンを分割し、それらを [LastName] フィールドと [FirstName] フィールドにコピーします。

ビジネス シナリオ

ある投資サービス企業では、中国語を母語とする顧客を対象として、さまざまな送付物に中国語のテキストを掲載することを検討しています。

中国系の氏名表記を理解するために、インターネット上で資料を検索したところ、中国系の氏名の構成を解説した以下のサイトが見つかりました。

en.wikipedia.org/wiki/Chinese_names

以下のデータフローは、このビジネス シナリオの解決策を示しています。



このデータフロー テンプレートは Enterprise Designer で使用できます。[ファイル] > [新規作成] > [データフロー] > [テンプレートから作成] に移動し、[ParseChineseNames] を選択します。このデータフローでは、Data Normalization モジュールが必要です。

このデータフローでは、データをファイルから読み取り、Open Parser ステージで処理します。入力ファイルの各データ行に以下の操作を行います。

Read from File

このステージでは、パースする名前が記録されているファイルの名前、格納場所、およびレイアウトを識別します。ファイルには、男性と女性の両方の名前が含まれています。

Open Parser

このステージでは、ドメインエディタで作成されたカルチャー固有ドメイン グラマーを使うか、ドメインに依存しないグラマーを使うかを定義します。ドメインエディタで作成したカルチャー固有のパーシング グラマーは、カルチャーとドメインに関連付けられた、検証済みのパーシング グラマーです。Open Parser で作成したカルチャーに依存しないパーシング グラマーは、カルチャーとドメインに関連付けられていない、検証済みのパーシング グラマーです。

このテンプレートでは、パーシング グラマーはドメインに依存しないグラマーとして定義されています。

Open Parser ステージでは、次のようにコマンドと式が定義されたパーシング グラマーを使用します。

  • %Tokenize は、None に設定されています。TokenizeNone に設定する場合、パーシング グラマー ルールは、ルール定義内に空白などのトークン区切り文字を含む必要があります。
  • %InputField は、[名前] フィールドから入力データを取得してパースするように設定されています。
  • %OutputFields は、パースしたデータを [LastName] フィールドと [FirstName] フィールドにコピーするように設定されています。

<root> 式には、中国系の名前のパターンが以下のように定義されています。

  • LastName は 1 回含まれる
  • FirstName は 1 ~ 3 回含まれる

ドメインを定義するルール変数では、必須の OutputFields コマンドで定義された出力フィールドと同じ名前を使う必要があります。

CJKCharacter ルール変数は、中国/日本/韓国(CJK) の文字パターンを定義します。この文字パターンは、符号や記号ではない文字のみで定義されています。ルールは以下のとおりです。

<CJKCharacter> = @RegEx("([\p{InCJKUnifiedIdeographs}&&\p{L}])"); 
  • 正規表現 \p{InX} は、特定のカルチャーに対応する Unicode ブロックを指定するために使われます。ここで、X はカルチャーを表します。この例では、カルチャーは CJKUnifiedIdeographs です。
  • 正規表現では、マッチングの対象とする文字のセットを文字クラスと呼びます。例えば、[aeiou] は母音のみを含む文字クラスです。文字クラスは、他の文字クラスに含めたり、結合演算子 (暗黙的) や交差演算子 (&&) を使って構築したりすることができます。結合演算子は、1 つ以上のオペランド クラスに含まれるすべての文字を含むクラスを表します。交差演算子は、交差する Unicode ブロックの重なり合う部分に含まれるすべての文字を含むクラスを表します。
  • 正規表現 \p{L} は、文字だけを含む Unicode ブロックを示すために使用します。

パーシング グラマーをテストするには、[プレビュー] タブをクリックします。以下に示す名前を [名前] フィールドに入力し、[プレビュー] をクリックします。



また、他の有効または無効な名前を入力して、入力データがどのようにパースされるのかを確認することもできます。

トレース機能を使うと、最終的なパース結果やパーシング過程をグラフィカルな表示で確認できます。[トレース] 列のリンクをクリックして、そのデータ行の [トレース詳細] を表示します。

Write to File

このテンプレートには、1 つの Write to File が含まれます。入力フィールドだけでなく、出力ファイルにも [LastName] フィールドと [FirstName] フィールドがあります。マッチ結果リストのマッチ結果を選択し、[削除] をクリックします。