全部產品
Search
文件中心

Platform For AI:Split Word

更新時間:Jul 13, 2024

本文為您介紹Designer提供的Split Word演算法組件。

Split Word演算法組件基於AliWS(Alibaba Word Segmenter)詞法分析系統,對指定列的內容進行分詞,分詞後的各個詞語之間以空格分隔。如果您配置了詞性標註或語義標註相關參數,則系統會將分詞、詞性標註和語義標註結果一同輸出,其中詞性標註分隔字元為正斜線(/),語義標註分隔字元為豎線(|)。

Split Word僅支援中文淘寶分詞(TAOBAO_CHN)和互連網分詞(INTERNET_CHN)。

Designer支援通過可視化或PAI命令方式,配置Split Word演算法組件相關參數。

組件配置

您可以使用以下任意一種方式,配置Split Word組件參數。

方式一:可視化方式

Designer工作流程頁面配置組件參數。

頁簽

參數

描述

欄位設定

列名

用來進行分詞的列名。

參數設定

識別選項

識別內容類型。取值範圍為:

  • 識別簡單實體

  • 識別人名

  • 識別機構名

  • 識別電話號碼

  • 識別時間

  • 識別日期

  • 識別數字字母

預設值為:識別簡單實體、識別電話號碼、識別時間、識別日期和識別數字字母。

合并選項

合并內容類型。取值範圍為:

  • 合并中文數字

  • 合并阿拉伯數字

  • 合并中文日期

  • 合并中文時間

預設值為:合并阿拉伯數字。

過濾器

過濾器的類型。取值範圍為TAOBAO_CHN和INTERNET_CHN。預設值為TAOBAO_CHN。

Pos Tagger

是否進行詞性標註。預設進行詞性標註。

Semantic Tagger

是否進行語義標註。預設不進行語義標註。

過濾分詞結果為數位詞

是否過濾分詞結果為數位詞。預設不過濾。

過濾分詞結果為全英文的詞

是否過濾分詞結果為全英文的詞。預設不過濾。

過濾分詞結果為標點符號的詞

是否過濾分詞結果為標點符號的詞。預設不過濾。

執行調優

核心數

預設為系統自動分配。

每個核的記憶體數

預設為系統自動分配。

方式二:PAI命令方式

使用PAI命令方式,配置該組件參數。您可以使用SQL指令碼組件進行PAI命令調用,詳情請參見SQL指令碼

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

輸入表中參與分詞的分區名。格式為partition_name=value。多級分區格式為name1=value1/name2=value2。如果指定多個分區,用英文逗號(,)分隔。

所有分區

selectedColNames

輸入表中用於分詞的列名。如果指定多列,用英文逗號(,)分隔。

dictTableName

是否使用自訂字典表。自訂字典表只有一列,每一行是一個詞。

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

輸出表的生命週期。取值為正整數。

如果表為普通表,不建議您設定coreNummemSizePerCore,Split Word演算法組件會自動計算。

在資源有限的情況下,您可以使用如下代碼計算節點個數和單個節點記憶體。

def CalcCoreNumAndMem(row, col, kOneCoreDataSize=1024):
    """計算節點個數和單個節點記憶體
       Args:
           row:輸入錶行數
           col:輸入表列數
           kOneCoreDataSize:單個節點計算的資料量,單位MB,正整數,預設為1024
       Return:
           coreNum, memSizePerCore
       Example:
           coreNum, memSizePerCore = CalcCoreNumAndMem(1000,99, 100, 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,
        '今天是個好日子,天氣好晴朗。' as content;
  • PAI命令列

    pai -name split_word
        -project algo_public
        -DinputTableName=pai_aliws_test
        -DselectedColNames=content
        -DoutputTableName=doc_test_split_word
  • 輸入說明

    輸入包含兩列的表,第一列是文檔ID,第二列是文檔內容。

    +------------+------------+
    | id         | content    |
    +------------+------------+
    | 1          | 今天是個好日子,天氣好晴朗。 |
  • 輸出說明

    • 輸出原表中的分詞列的分詞,其餘列原樣輸出。

    • 使用自訂字典時,系統會按照自訂字典和上下文來分詞,不會完全按照自訂字典分詞。