トークン化
「トークン化」は、「解析」のサブプロセッサの1つです。「トークン化」サブプロセッサでは、データを構文的に基本のトークンの初期セットに分割し、データ内の文字および文字のシーケンスを分析して、解析の最初のステップを実行します。
解析のコンテキストでは、トークンとは「解析」プロセッサが理解できるデータの任意の単位です。「トークン化」手順では、トークンの最初のセット(基本のトークン)を形成します。基本のトークンは、同じタイプの文字(文字、数字など)のシーケンスを他のタイプの文字(句読点や空白)で区切ったものであるのが普通です。たとえば、次のようなデータが入力されるとします
次の「トークン化」プロセッサのサンプルの入力データは、「トークン化」手順およびこのプロセッサのデフォルトのルールを使用して、(表に示すように)基本のトークンに分割されます。
Address1
10 Harwood Road
3Lewis Drive
Address1 | 基本のトークン | 基本のトークンのパターン |
---|---|---|
10 Harwood Road |
"10" - 'N'のタグを付け数字であることを示す "." - '_'のタグを付け空白であることを示す "Harwood" - 'A'のタグを付け単語であることを示す "." - '_'のタグを付け空白であることを示す "Road" - 'A'のタグを付け単語であることを示す |
N_A_A |
3Lewis Drive |
"3" - 'N'のタグを付け数字であることを示す "Lewis" - 'A'のタグを付け単語であることを示す "." - '_'のタグを付け空白であることを示す "Drive" - 'A'のタグを付け単語であることを示す |
NA_A |
ただし、データをさらに分析するときには特定の基本のトークンを無視することがあります。たとえば、前述の空白文字は分類しないので、解決ルールの照合時に無視するとします。この場合は、基本のトークンの参照データで、無視する文字をWHITESPACEまたはDELIMITERのタイプとして指定できます。次の「構成」を参照してください。
「トークン化」は、解析するデータ属性の内容を最初に把握し、データを理解する方法を決定する場合に使用します。通常は、トークン化ルールのデフォルト・セットを使用して内容を把握し、必要に応じてルールを調整できます。たとえば、データ内で特定の文字が特定の意味を持つため、その他の文字とは異なるタグ付けをする場合です。多くの場合、デフォルトのトークン化ルールを変更する必要はありません。
構成
トークン化ルールは、次のオプションで構成されます。
オプション | タイプ | 目的 | デフォルト値 |
---|---|---|---|
文字マップ |
文字トークン・マップ |
文字(Unicode参照)を文字タグ、グループ化した文字タグおよび文字タイプにマップします。 次の「注意」を参照してください。 |
*基本のトークン化マップ |
小文字を大文字に対して分離 |
はい/いいえ |
小文字から大文字への変化がある文字のシーケンスを、別々のトークンに分離します(たとえば、「HarwoodRoad」を「Harwood」と「Road」の2つの基本のトークンに分離します)。 |
はい |
大文字を小文字に対して分離 |
はい/いいえ |
大文字から小文字への変化がある文字のシーケンスを、別々のトークンに分離します(たとえば、「SMITHjohn」を「SMITH」と「john」の2つの基本のトークンに分離します)。 |
No |
文字マップ参照データに関する注意
データのトークン化に使用される参照データは特殊な形式であり、トークン化の動作にとって重要です。
デフォルトの参照データの次のスクリーンショットで、各列の目的を説明します。表示される列は、次のとおりです。
Unicode文字参照: Unicode文字参照はトークン化で使用され、トークン化の最初のステップで所定の文字タグにマップされる文字を識別します。たとえば、スペース文字を表す文字参照#32はデフォルトでは「_」の文字タグにマップされています。
注意:
デフォルトの*基本のトークン化マップは、かわりの*Unicodeの基本のトークン化マップや*Unicode文字パターン・マップと同様に、Latin-1エンコード・データで使用するように設計されています。これらのマップがデータの文字エンコーディングに適していない場合は、たとえばマルチバイトのUnicode (16進数)文字参照などを考慮に入れた新しいマップを作成して使用できます。
文字タグ: 文字タグはトークン化の最初のステップとして使用され、(Unicode文字参照によって識別される)データの各文字に所定のタグを割り当てます。たとえば、すべての子文字に文字タグaを割り当てます。
グループ・タグ: グループ・タグはトークン化の2番目のステップで使用され、文字タグのシーケンスを同じグループ・タグでグループ化します。グループ・タグが同じで文字タイプも同じである文字タグのシーケンスはグループ化されて1つのトークンを形成します。たとえば、トークン化の最初のフェーズでは文字タグを使用してデータ103をNNNというタグにしますが、同じグループ・タグ(N)の3文字と、同じ文字タイプ(NUMERIC)がシーケンスにあるため、これらはグループ化されてNという基本のトークン・タグで1つの基本のトークン(103)となります。
英字の動作は少し異なることに注意してください。ユーザーは、小文字と大文字のシーケンスがある場合にトークンを分割するかどうかを選択できます。デフォルトでは、トークンは小文字から大文字に遷移するときに分割されますが、大文字から小文字への遷移では分割されません。たとえば、データ「Michael」は文字タグのシーケンス「Aaaaaaa」ですが、最初の文字の後で文字タイプがALPHA_UPPERCASEからALPHA_LOWERCASEに遷移しています。ユーザーが「大文字を小文字に対して分離」オプションのデフォルト設定を設定していない場合、これはグループ化されて、基本のトークン・タグAで1つの基本のトークン(Michael)を形成します。文字タグaとAはどちらも同じグループ・タグを共有しており、ユーザーが文字タイプの遷移に対してデータを分割しないためです。
文字タイプ: 文字タイプはデータの分割に使用されます。通常は、文字タイプが変わると別々の基本のトークンに分割されます。たとえば、文字列deluxe25mlはdeluxe、25およびmlの3つの基本のトークンに分割されます。これら3つの基本のトークンが文字タグとグループ・タグによってタグ付けされます。このルールの例外は、デフォルトではALPHA_UPPERCASEからALPHA_LOWERCASEへの文字タイプの変化ではトークンが分割されないことです。これは、大/小文字が適切に使用されているトークンを維持するためです。たとえば、Michaelが2つのトークン(Mとichael)に分割されないようにします。
ユーザーは「大文字を小文字に対して分離」オプションを選択して、この動作を変更できます。
また、「小文字を大文字に対して分離」オプションの選択を解除すると、アルファベット文字のすべての文字列をまとめて保持することもできます。こうすることで、DelUXEを1つのトークンとして保持する効果があります。
また、WHITESPACEまたはDELIMITERのいずれかのタイプで特定の文字をマークできます。これらの文字は、トークンのシーケンスを照合する次のルールで無視できます。たとえば、「再分類」または「解決」で、<Token A>の後に<Token B>があるパターンを照合する場合に、2つの間に空白文字または区切り文字があるかどうかを気にする必要がありません。文字タイプには、NUMERIC、CONTROL、PUNCTUATION、SYMBOL、ALPHA_UPPERCASE、ALPHA_LOWERCASEおよびUNDEFINEDがあります。
参照データの「コメント」列では、Unicode文字参照が表す実際の文字が説明されています(たとえば、#32は空白文字である、など)。
異なる入力属性ごとに異なるルールを使用
デフォルトでは、「解析」プロセッサに入力されるすべての属性に対して同じトークン化ルールが適用されます。通常、属性固有のトークン化ルールは必要ありません。ただし、ペインの左側で属性を選択し、「属性固有の設定を有効化」オプションを選択すれば、これを変更できます。分析する属性が多く、異なる文字が意味のある区切りになっていると、これが必要な場合があります。
属性固有のルールを指定するときは、属性間で設定をコピーすることも、「コピー元」オプションを使用してデフォルトの「グローバル」設定を再適用することもできます。
例
この例では、デフォルトのルールを使用して住所データをトークン化しており、結果は次のようになります。
(この場合、「空白の切捨て」プロセッサを使用して解析する前に、各属性から先頭と末尾の空白が切り捨てられたことに注意してください。)
次の表は、すべての入力属性における基本のトークンの個別のパターンをまとめたものです。
ADDRESS1.trimmed | ADDRESS2.trimmed | ADDRESS3.trimmed | POSTCODE.trimmed | カウント | % |
---|---|---|---|---|---|
<A>_<A><,> |
<A> |
[Null] |
<A><N>_<N><A> |
119 |
5.9 |
<A>_<A><,>_<A>_<A> |
<A> |
[Null] |
<A><N>_<N><A> |
95 |
4.7 |
<A>_<A><,> |
<A> |
<A> |
<A><N>_<N><A> |
73 |
3.6 |
<A>_<A><,>_<A>_<A> |
<A> |
<A> |
<A><N>_<N><A> |
58 |
2.9 |
<N>_<A>_<A><,> |
<A> |
[Null] |
<A><N>_<N><A> |
55 |
2.7 |
<A>_<A><,>_<A> |
<A> |
[Null] |
<A><N>_<N><A> |
49 |
2.4 |
<A>_<A><,> |
<A> |
<A><N>_<N><A> |
<A><N>_<N><A> |
40 |
2.0 |
<N>_<A>_<A><,> |
<A> |
<A> |
<A><N>_<N><A> |
35 |
1.7 |
次の表は、一番上の基本のトークン・パターンをドリルダウンした結果を示しています。
ADDRESS1.trimmed | ADDRESS2.trimmed | ADDRESS3.trimmed | POSTCODE.trimmed |
---|---|---|---|
Tempsford Hall, |
Sandy |
[Null] |
SG19 2DB |
West Thurrock, |
Purfleet |
[Null] |
RM19 1PA |
Hayes Lane, |
Stourbridge |
[Null] |
DY9 8PA |
Middleton Road, |
Oswestry |
[Null] |
SY11 2RB |
Freshwater Road, |
Dagenham |
[Null] |
RM8 1RU |
College Road, |
Birmingham |
[Null] |
B8 3TE |
Ranelagh Gdns, |
London |
[Null] |
SW6 3PR |
Trumpington Road, |
Cambridge, |
[Null] |
CB2 2AG |
解析プロセッサを構成する次のステップとして、データを分類します。