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數,D為pair的總數。若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預置了多種算法組件,你可以根據不同的使用場景選擇合適的組件進行數據處理,詳情請參見組件參考:所有組件匯總。