PMI算法组件用来统计若干文章中所有词的共现情况,计算两两之间的PMI(point mutual information)。本文为您介绍PMI算法组件的配置方法。

背景信息

互信息(Mutual Information)是信息论里一种有用的信息度量,它可以看成是一个随机变量中包含的另一个随机变量的信息量,或者说是一个随机变量由于已知另一个随机变量而减少的不确定性。

PMI用来量化两个词之间的相关性,定义为:PMI(x,y)=ln(p(x,y)/(p(x)p(y)))=ln(#(x,y)D/(#x#y))。其中,#(x,y)pair(x,y)count数,Dpair的总数。若x、y在同一个窗口出现,则#x+=1 #y+=1#(x,y)+=1。了解更多PMI的信息,请参见PMI

组件配置

您可以使用以下任意一种方式,配置PMI组件参数。

方式一:可视化方式

Designer工作流页面配置组件参数。

页签

参数

描述

字段设置

分词好的文档列名,分词用空格隔开

参数设置

截断的最小词频

出现次数少于该值的词会被过滤掉。默认值为5。

窗口大小

例如5指当前词右边相邻的5个词(不包含当前词)。在窗口中出现的词被认为与当前词相关。

执行调优

计算的核心数

系统自动选择。

每个核心的内存(MB)

系统自动选择。

方式二:PAI命令方式

使用PAI命令方式,配置该组件参数。您可以使用SQL脚本组件进行PAI命令调用,详情请参见SQL脚本

PAI -name PointwiseMutualInformation    
    -project algo_public    
    -DinputTableName=maple_test_pmi_basic_input    
    -DdocColName=doc    
    -DoutputTableName=maple_test_pmi_basic_output    
    -DminCount=0    
    -DwindowSize=2    
    -DcoreNum=1    
    -DmemSizePerCore=110;

参数名称

是否必选

描述

默认值

inputTableName

输入表

outputTableName

输出表

docColName

分词好的文档列名,分词用空格隔开。

windowSize

窗口大小。例如5指当前词右边相邻的5个词(不包含当前词)。在窗口中出现的词被认为与当前词相关。

默认整行内容

minCount

截断的最小词频,出现次数少于该值的词会被过滤掉。

5

inputTablePartitions

输入表中指定哪些分区参与训练,格式为:Partition_name=value。如果是多级格式为name1=value1/name2=value2。如果指定多个分区,中间用“,”隔开。

选择所有分区

lifecycle

指定输出表的生命周期

coreNum

节点个数,取值范围为[1,9999]。

自动计算

memSizePerCore

单个节点内存大小,单位为MB,取值范围为[1024,64*1024]。

自动计算

示例

  • 生成数据

    使用开发ODPS SQL任务创建表maple_test_pmi_basic_input。命令如下:

    create table maple_test_pmi_basic_input as
    select * from
    (  
        select "w1 w2 w3 w4 w5 w6 w7 w8 w8 w9" as doc
        union all  
        select "w1 w3 w5 w6 w9" as doc
        union all  select "w0" as doc
        union all  
        select "w0 w0" as doc
        union all  
        select "w9 w1 w9 w1 w9" as doc
    )tmp;

    执行成功后,输入表maple_test_pmi_basic_input的数据如下:

    doc

    w1 w2 w3 w4 w5 w6 w7 w8 w8 w9

    w1 w3 w5 w6 w9

    w0

    w0 w0

    w9 w1 w9 w1 w9

  • 运行PAI命令

    您可以使用SQL脚本执行如下PAI命令,也可以使用ODPS SQL节点执行如下PAI命令。

    PAI -name PointwiseMutualInformation    
        -project algo_public    
        -DinputTableName=maple_test_pmi_basic_input    
        -DdocColName=doc    
        -DoutputTableName=maple_test_pmi_basic_output    
        -DminCount=0    
        -DwindowSize=2    
        -DcoreNum=1    
        -DmemSizePerCore=110;
  • 输出结果

    输出表maple_test_pmi_basic_output ,如下所示。

    word1

    word2

    word1_count

    word2_count

    co_occurrences_count

    pmi

    w0

    w0

    2

    2

    1

    2.0794415416798357

    w1

    w1

    10

    10

    1

    -1.1394342831883648

    w1

    w2

    10

    3

    1

    0.06453852113757116

    w1

    w3

    10

    7

    2

    -0.08961215868968704

    w1

    w5

    10

    8

    1

    -0.916290731874155

    w1

    w9

    10

    12

    4

    0.06453852113757116

    w2

    w3

    3

    7

    1

    0.4212134650763035

    w2

    w4

    3

    4

    1

    0.9808292530117262

    w3

    w4

    7

    4

    1

    0.13353139262452257

    w3

    w5

    7

    8

    2

    0.13353139262452257

    w3

    w6

    7

    7

    1

    -0.42608439531090014

    w4

    w5

    4

    8

    1

    0.0

    w4

    w6

    4

    7

    1

    0.13353139262452257

    w5

    w6

    8

    7

    2

    0.13353139262452257

    w5

    w7

    8

    4

    1

    0.0

    w5

    w9

    8

    12

    1

    -1.0986122886681098

    w6

    w7

    7

    4

    1

    0.13353139262452257

    w6

    w8

    7

    7

    1

    -0.42608439531090014

    w6

    w9

    7

    12

    1

    -0.9650808960435872

    w7

    w8

    4

    7

    2

    0.8266785731844679

    w8

    w8

    7

    7

    1

    -0.42608439531090014

    w8

    w9

    7

    12

    2

    -0.2719337154836418

    w9

    w9

    12

    12

    2

    -0.8109302162163288

相关文档

  • 关于Designer组件更详细的内容介绍,请参见Designer概述

  • Designer预置了多种算法组件,你可以根据不同的使用场景选择合适的组件进行数据处理,详情请参见组件参考:所有组件汇总