この Topic では、Designer が提供する単語分割コンポーネントについて説明します。
単語分割コンポーネントは、Alibaba Word Segmenter (AliWS) を使用して、指定された列のコンテンツをトークン化します。結果のトークンはスペースで区切られます。品詞 (POS) タギングまたはセマンティックタギングを設定した場合、出力にはトークン、品詞タグ、セマンティックタグが含まれます。品詞タグはスラッシュ (/) で区切られます。セマンティックタグは縦棒 (|) で区切られます。
単語分割コンポーネントは、TAOBAO_CHN と INTERNET_CHN のトークナイザーのみをサポートします。
Designer では、GUI または PAI コマンドを使用して単語分割コンポーネントを設定できます。
コンポーネント設定
単語分割コンポーネントは、以下の方法で設定できます。
方法 1: GUI の使用
Designer のワークフローページでコンポーネントを設定できます。
|
タブ |
パラメーター |
説明 |
|
[フィールド設定] |
列名 |
トークン化する列。 |
|
[パラメーター設定] |
[認識オプション] |
検出するコンテンツタイプ。有効値:
デフォルト値:単純なエンティティを検出、電話番号を検出、時間を検出、日付を検出、数字と文字を検出。 |
|
統合オプション |
マージするコンテンツタイプ。有効値:
デフォルト値は「アラビア数字をマージ」です。 |
|
|
フィルター |
フィルターのタイプ。有効値は TAOBAO_CHN と INTERNET_CHN です。デフォルト値は TAOBAO_CHN です。 |
|
|
[品詞タガー] |
品詞タギングを実行するかどうかを指定します。デフォルトでは、この機能は有効になっています。 |
|
|
Semantic Tagger |
セマンティックタギングを実行するかどうかを指定します。デフォルトでは、この機能は無効になっています。 |
|
|
[数字のトークンをフィルター] |
数字であるトークンをフィルターで除外するかどうかを指定します。デフォルトでは、この機能は無効になっています。 |
|
|
[すべて英単語のトークンをフィルター] |
英字のみで構成されるトークンをフィルターで除外するかどうかを指定します。デフォルトでは、この機能は無効になっています。 |
|
|
[句読点のトークンをフィルター] |
句読点であるトークンをフィルターで除外するかどうかを指定します。デフォルトでは、この機能は無効になっています。 |
|
|
[実行チューニング] |
[コア数] |
デフォルト値はシステムによって自動的に割り当てられます。 |
|
[コアあたりのメモリ] |
デフォルト値はシステムによって自動的に割り当てられます。 |
方法 2: PAI コマンドの使用
PAI コマンドを使用してコンポーネントを設定できます。SQL Script コンポーネントを使用して PAI コマンドを実行できます。詳細については、「SQL Script」をご参照ください。
pai -name split_word_model
-project algo_public
-DoutputModelName=aliws_model
-DcolName=content
-Dtokenizer=TAOBAO_CHN
-DenableDfa=true
-DenablePersonNameTagger=false
-DenableOrgnizationTagger=false
-DenablePosTagger=false
-DenableTelephoneRetrievalUnit=true
-DenableTimeRetrievalUnit=true
-DenableDateRetrievalUnit=true
-DenableNumberLetterRetrievalUnit=true
-DenableChnNumMerge=false
-DenableNumMerge=true
-DenableChnTimeMerge=false
-DenableChnDateMerge=false
-DenableSemanticTagger=true
|
パラメーター名 |
必須 |
説明 |
デフォルト値 |
|
inputTableName |
はい |
入力テーブルの名前。 |
なし |
|
inputTablePartitions |
いいえ |
トークン化する入力テーブルのパーティション。フォーマットは |
すべてのパーティション |
|
selectedColNames |
はい |
トークン化する入力テーブルの列。複数の列名はコンマ (,) で区切ります。 |
なし |
|
dictTableName |
いいえ |
カスタム辞書テーブルを使用するかどうかを指定します。カスタム辞書テーブルには列が 1 つしかなく、各行が単語になります。 |
なし |
|
tokenizer |
いいえ |
フィルタータイプ。有効値は TAOBAO_CHN と INTERNET_CHN です。 |
TAOBAO_CHN |
|
enableDfa |
いいえ |
単純なエンティティを検出するかどうかを指定します。有効値: True または False。 |
True |
|
enablePersonNameTagger |
いいえ |
人名を検出するかどうかを指定します。有効値: True または False。 |
False |
|
enableOrgnizationTagger |
いいえ |
組織名を検出するかどうかを指定します。有効値: True または False。 |
False |
|
enablePosTagger |
いいえ |
品詞タギングを実行するかどうかを指定します。有効値: True または False。 |
False |
|
enableTelephoneRetrievalUnit |
いいえ |
電話番号を検出するかどうかを指定します。有効値: True または False。 |
True |
|
enableTimeRetrievalUnit |
いいえ |
時間を検出するかどうかを指定します。有効値: True または False。 |
True |
|
enableDateRetrievalUnit |
いいえ |
日付を検出するかどうかを指定します。有効値: True または False。 |
True |
|
enableNumberLetterRetrievalUnit |
いいえ |
数字と文字を検出するかどうかを指定します。有効値: True または False。 |
True |
|
enableChnNumMerge |
いいえ |
漢数字を取得単位にマージするかどうかを指定します。有効値: True または False。 |
False |
|
enableNumMerge |
いいえ |
標準の数字を取得単位にマージするかどうかを指定します。有効値: True または False。 |
True |
|
enableChnTimeMerge |
いいえ |
漢数字の時間表現を意味単位にマージするかどうかを指定します。有効値: True または False。 |
False |
|
enableChnDateMerge |
いいえ |
中国語の日付表現を意味単位にマージするかどうかを指定します。有効な値:True または False。 |
False |
|
enableSemanticTagger |
いいえ |
セマンティックタギングを実行するかどうかを指定します。有効値: True または False。 |
False |
|
outputTableName |
はい |
出力テーブルの名前。 |
なし |
|
outputTablePartition |
いいえ |
出力テーブルのパーティション名。 |
なし |
|
coreNum |
いいえ |
ワーカーの数。このパラメーターは、memSizePerCore パラメーターも設定されている場合にのみ有効になります。値は [1,9999] の範囲の正の整数である必要があります。 |
システムによって自動的に割り当てられます |
|
memSizePerCore |
いいえ |
コアあたりのメモリサイズ (MB)。値は [1024,64×1024] の範囲の正の整数である必要があります。 |
システムによって自動的に割り当てられます |
|
lifecycle |
いいえ |
出力テーブルのライフサイクル。値は正の整数である必要があります。 |
なし |
入力が標準テーブルの場合、coreNum および memSizePerCore パラメーターは設定しないでください。単語分割コンポーネントが値を自動的に計算します。
リソースが限られている場合は、次のコードを使用してワーカー数とワーカーあたりのメモリを計算できます。
def CalcCoreNumAndMem(row, col, kOneCoreDataSize=1024):
"""ワーカー数とワーカーあたりのメモリを計算します。
引数:
row: 入力テーブルの行数。
col: 入力テーブルの列数。
kOneCoreDataSize: 1 つのワーカーが処理するデータ量 (MB)。正の整数である必要があります。デフォルト値は 1024 です。
戻り値:
coreNum, memSizePerCore
例:
coreNum, memSizePerCore = CalcCoreNumAndMem(1000, 99, kOneCoreDataSize=2048)
"""
kMBytes = 1024.0 * 1024.0
# データ量に基づいてワーカー数を計算します。
coreNum = max(1, int(row * col * 1000/ kMBytes / kOneCoreDataSize))
# ワーカーあたりのメモリ = データ量サイズ。
memSizePerCore = max(1024, int(kOneCoreDataSize*2))
return coreNum, memSizePerCore
例
-
データの生成
create table pai_aliws_test as select 1 as id, 'Today is a good day. The weather is nice and sunny.' as content; -
PAI コマンド
pai -name split_word -project algo_public -DinputTableName=pai_aliws_test -DselectedColNames=content -DoutputTableName=doc_test_split_word -
入力の説明
入力テーブルには、ID 列とコンテンツ列の 2 つの列が含まれています。
+------------+-----------------------------------------------------+ | id | content | +------------+-----------------------------------------------------+ | 1 | Today is a good day. The weather is fine and sunny. | -
出力の説明
-
コンポーネントは指定された列をトークン化し、他の列は変更しません。
-
カスタム辞書を使用する場合、システムは辞書とコンテキストの両方に基づいてテキストをトークン化します。トークン化は、必ずしもカスタム辞書に厳密に従うとは限りません。
-