全部产品
Search
文档中心

人工智能平台 PAI:Split Word

更新时间:May 17, 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          | 今天是个好日子,天气好晴朗。 |
  • 输出说明

    • 输出原表中的分词列的分词,其余列原样输出。

    • 使用自定义词典时,系统会按照自定义词典和上下文来分词,不会完全按照自定义词典分词。