1

我在ACE數據挖掘套件中使用WARMR頻繁模式算法。這裏是一個玩具示例,說明我的問題。WARMR(ACE套件):消除頻繁模式中的「連接」項

想象你有,比如說,20例(example(ex1)),...,example(ex20))),只有一個謂語,稱之爲quality,所以quality(E, X)意味着E有質量XX可以採取,說,δ值:abcd,這是相關的efcbba(因此ca),feed(等f也是d)。想圖:

a - b - c 
d - e - f 

時頻繁模式WARMR地雷,一旦在一個分支/圖一個質量包括來自同一分支沒有其他的質量應該被允許加入。例如在第3級:

example(A),quality(A,a),quality(A,d) 

是一個有效的模式,但:

example(A),quality(A,a),quality(A,c) 

example(A),quality(A,a),quality(A,b) 

不是。

我已經包括在.bk文件這種背景知識:

bond(b,a). 
bond(c,b). 
bond(f,e). 
bond(e,d). 

no_bond(a,d). 
no_bond(a,e). 
no_bond(a,f). 

bond(X,Y) :- bond(X,Z),bond(Z,Y). 
bond(X,Y) :- bond(Y,X). 

no_bond(X,Y) :- no_bond(Y,X). 
no_bond(X,Y) :- no_bond(X,Z),bond(Z,Y). 

和我已經嘗試通過在.s文件下面施以上述條件:

rmode(quality(+E, #). 
constraint(quality(E, Q), not_occurs(bond(Q,_))). 

rmode(quality(+E, #). 
constraint(quality(E, Q), user(X, no_bond(Q,_))). 

constraint(quality(E, Q), user(X, no_bond(Q,X))). 

沒有一個工作。任何幫助將不勝感激。

+0

它看起來非常酷,ACE不是開源的,這真是一種遺憾。 –

+0

@DanielLyons你應該通過電子郵件向維護者詢問你是否可以訪問,如果你有興趣! –

回答

1

所以下面的答案已經向我建議:

第一添加以下謂詞的背景知識:

branch1(E,X) :- quality(E,X), member(X, [a,b,c]). 
branch2(E,X) :- quality(E,X), member(X, [d,e,f]). 

則包括這些設置文件:

rmode(1:branch1(+E,#)). 
rmode(1:branch2(+E,#)). 

這解決了我所說的問題。然而,我的實際問題中的數據形成了一棵有向樹,所以這種「靜態」分支方法並不適用。