ルールのタイプ
- 基本的なルールタイプ: [Enumeration] (列挙)、[Format] (フォーマット)、[Combination] (組み合わせ)。これらのタイプのルールは、特定のANTLR記号で構成されています。
- 詳細なルールタイプ: [Regex] (正規表現)、[Index] (インデックス)、および[Shape] (シェイプ)。これらのタイプのルールは、トークン化されたデータと一致し、必要に応じて標準化します。
詳細なルールタイプは、ルールの順序に関係なく、常にANTLR固有のルールの後に実行されます。基本ルールと高度なルールの詳細は、解析レベルごとに異なるルールタイプおよび2つの解析レベルを使って非ストラクチャー化データから情報を抽出する
- INT: 整数
- WORD: 語
- WORD+: 複数の単語のリテラル
- CAPWORD: 大文字の単語
- DECIMAL: 10進浮動小数点
- FRACTION: 分数浮動小数点
- CURRENCY: 通貨
- ROMAN_NUMERAL: ローマ数字
- ALPHANUM: アルファベットと数字の組み合わせ
- WHITESPACE: ホワイトスペース
- UNDEFINED: 他のトークンが認識できないASCIIコードなどの予期しない文字列。
次の3つのテーブルは、基本的なタイプ、詳細なタイプ、および基本的なルールタイプで使われるANTLRシンボルに関する詳細情報を順に示しています。これらの3つのテーブルは、このコンポーネントの[Basic settings] (基本設定)の[Conversion rules] (変換ルール)テーブルを完成させるのに役立ちます。
基本的なルールタイプの場合:
基本的なルールタイプ | 使用方法 | 例 |
ルール構成の条件 |
---|---|---|---|
[Enumeration] (列挙) | このタイプのルールは、可能性があるマッチングのリストを提供します。 | ルール名: 長さユニット RuleValue: " 'inch' | 'cm' " |
このオプションが事前定義されたエレメントでない限り、各オプションは、単一引用符のペアで囲む必要があります。 定義されたオプションは"|"記号で区切る必要があります。 |
Format (形式) (ルール名は大文字で始まります) |
このタイプのルールは、事前定義されたエレメントとユーザー定義のルール[Enumeration] (列挙)、 [Format] (フォーマット)、または[Combination] (組み合わせ)のいずれかを使って、文字列の構成を定義します。
|
RuleName: Length RuleValue: "DECIMAL WHITESPACE LengthUnit" このルールは、10進数とlengthunitの間にホワイトスペースが必要であることを意味します。したがって、1.4 cmのような文字列には一致しますが、1.4cmのような文字列には一致しません。これらの両方のケースに一致させるには、このルールを、たとえば"DECIMAL WHITESPACE * LengthUnit"と定義する必要があります。 LengthUnitは" 'inch' | 'cm' "を定義する[Enumeration] (列挙)ルールです。 |
[Format] (形式)ルールの名前が大文字で始まる場合、このルールでは完全一致の結果が必要です。つまり、文字列の任意の1つのエレメント(ホワイトスペースも含む)を正確に定義する必要があります。 |
[Format] (形式) (ルール名は小文字で始まります) | このタイプのルールは、名前が大文字で始まる[Format] (形式)ルールとほぼ同じです。違いは、小文字のイニシャルを使った[Format] (形式)ルールが完全一致を必要としないことです。 | RuleName: length RuleValue: "DECIMAL LengthUnit" このルールは、1.4 cmや1.4cmなどの文字列に一致します。ここで、Decimalは事前定義されたエレメントタイプの1つであり、LengthUnitは" 'inch' | 'cm' "を定義する [Enumeration] (列挙)ルールです。 |
該当せず |
[Combination] (組み合わせ) | このタイプのルールは、同じ名前のルールをいくつか作成する必要がある場合に使われます。 | RuleName: Size (またはsize) RuleValue: "length BY length" このルールは、1.4 cm by 1.4 cmのような文字列に一致します。ここで、lengthは(小文字で始まる)[Format] (形式)ルールであり、BYは" 'By' | 'by' | 'x' | 'X' "を定義する[Enumeration] (列挙)ルールです。 |
リテラルテキストまたは文字は、ルール値の一部として受け入れられません。リテラルテキストまたは文字が必要な場合は、[Enumeration] (列挙)ルールを作成してこれらのテキストまたは文字を定義し、代わりにこの [Enumeration] (列挙)ルールを使う必要があります。 複数の [Combination] (組み合わせ)ルールが同じルール名を使う場合、それらはtStandardizeRowの [Basic settings] (基本設定)の[Conversion rules] (変換ルール)テーブルで上から順に実行されるため、最良の結果を得るには ルールを適切に配置してください。例については、次のシナリオをご覧ください。 |
詳細なルールタイプの場合:
詳細なルールタイプ | 使用方法 | 例 | [Conditions] (条件) |
---|---|---|---|
正規表現 | このタイプのルールは、正規表現を使って、ANTLRによってトークン化された着信データを照合します。 | RuleName: ZipCode RuleValue: "\\d{5}" ルールは "92150"のような文字列に一致します |
正規表現はJavaに準拠している必要があります。 |
[Index] (インデックス) | このタイプのルールは、シノニムインデックスを参照として使い、一致する受信データを検索します。 利用できるシノニムインデックスの詳細は、データシノニムディクショナリーをご覧ください。 |
シナリオは、非ストラクチャー化データからの住所を標準化するをご覧ください。 | Windowsでは、パスがファイルシステムからコピーされた場合、バックスラッシュ\を2倍にするか、/スラッシュに置換する必要があります。 Spark [Local] (ローカル)モードを使ってジョブを実行する場合、またはジョブをローカルで実行する場合、インデックスフォルダーへのパスはfile:///で始まる必要があります。インデックスがHDFSに保管されている場合、インデックスフォルダーへのパスはhdfs://で始まる必要があります。 レコードを処理する時、特定の[Index] (インデックス)ルールは、一致可能と識別された最初の文字列のみを照合します。 Talend Map/Reduceジョブでは、zipファイルとして使う各シノニムインデックスを圧縮する必要があります。 |
シェイプ | このタイプのルールは、定義済みのエレメントと確立された[Regex] (正規表現)または[Index] (インデックス)ルール、またはその両方を使って、着信データと照合します。 | RuleName: Address RuleValue: "<INT><WORD><StreetType>" このルールは12 main streetのような住所を一致させます。INTとWORDは事前定義されたトークン(ルールエレメント)であり、StreetTypeは、このコンポーネントの[Basic settings] (基本設定)ビューでこの例のルールと共に定義する[Index] (インデックス)ルールです。 [Shape] (シェイプ)ルールタイプの詳細は、非ストラクチャー化データからの住所を標準化するをご覧ください。 |
< >で囲まれたコンテンツのみが認識できます。それ以外の場合、コンテンツはエラーと見なされるか、省略されます。 |
特定のANTLR記号について:
記号 | 説明 |
---|---|
| | 代替 |
[s] | 文字または文字列リテラル |
+ | 1以上 |
* | 0以上 |
? | オプションまたはセマンティック述語 |
~ | 一致しない |
ANTLR記号の詳細は、https://theantlrguy.atlassian.net/wiki/display/ANTLR3/ANTLR+Cheat+Sheetをご覧ください。