美文网首页
概率软逻辑(PSL,Probabilistic soft log

概率软逻辑(PSL,Probabilistic soft log

作者: 张嘉嘉呵呵哒 | 来源:发表于2018-08-12 14:50 被阅读0次

    1. 内联语法

      规则示范如下,权重和平方必须指定具体参数。同时,使用内联语法的变量必须以大写字母开头。

    model.add(
       rule: ( Likes(A, 'Dogs') & Likes(B, 'Dogs') ) >> Friends(A, B),
       weight: 5.0,
       squared: true
    );
    

      由于内联语法必须是Groovy语法的子集,因此不支持以下运算符变体:

    &&
    ||
    ->
    <<
    <-
    !

      请注意,所有不受支持的运算符都支持变体。 算术规则是不支持内联语法的。

    2. 字符串语法

      规则形如:

    model.add( 
           rule: "( Likes(A, 'Dogs') & Likes(B, 'Dogs') ) >> Friends(A, B)", 
           weight: 5.0, 
           squared: true 
    ); 
    // 与上述形式相同作用的规则 
    model.add( 
           rule: "5.0: ( Likes(A, 'Dogs') && Likes(B, 'Dogs') ) -> Friends(A, B) ^2" 
    ); 
    // 上述规则的未加权(约束)形式
    model.add( 
           rule: "( Likes(A, 'Dogs') && Likes(B, 'Dogs') ) -> Friends(A, B)" 
    ); 
    // 算术约束. 
    model.add( 
           rule: "Likes(A, +B) = 1 ." 
    );
    

      字符串语法因为可以不遵守groovy语法,所以所有运算符的可以用,同时指定权重和平方也灵活的多。

    3. 批量字符串语法

      规则示范如下:

    model.addRules(""" 
              1: ( Likes(A, 'Dogs') & Likes(B, 'Dogs') ) >> Friends(A, B) ^2 
              Likes(A, +B) = 1 . 
    """); 
    // 从文件加载多个规则。 
    model.addRules(new FileReader("myRules.txt"));
    

      可以使用addRules()方法一次添加多个规则,每个规则占一行,每条规则必须定义权重和平方。

    4. 约束

      约束(限制条件)是未加权的算术规则。制定一个算术规则,可以明确地指定或者不指定它是未加权的(在规则末尾是否使用句点)。

    // 用句点明确指出一个未加权规则(约束)
    model.add( 
           rule: "Likes(A, +B) = 1 ." 
    ); 
    // 含蓄指出未加权规则
    model.add( 
           rule: "Likes(A, +B) = 1" 
    );
    

    相关文章

      网友评论

          本文标题:概率软逻辑(PSL,Probabilistic soft log

          本文链接:https://www.haomeiwen.com/subject/jkusbftx.html