任何人都可以指出一个漂亮的打印规则的例子“英语”

时间:2008-11-04 18:33:05

标签: nlp pretty-print rule-engine

我已经获得了用户使用规则引擎构建的AST的等价物。但是当显示规则列表时,我希望能够将每条规则“漂亮地”打印成看起来不错的东西**。在内部表示为字符串时,它们看起来像s表达式,所以想象一下:

(and (contains "foo" "foobar") (equals 4 (plus 2 2 )))

有人能指出一个能够以可读方式很好地显示规则的程序吗?

**也需要本地化,但我想我们会留下额外的信用。

1 个答案:

答案 0 :(得分:1)

也许查看正在开发Attempto Controlled English(ACE)的Attempto project。 ACE允许您在英语子集中编写规则。例如:

If "foo" contains "foobar" and "foobar" does not contain "foo" then 4 = 2 + 2.

ACE解析器将此类规则转换为称为话语表示结构(DRS)的逻辑形式。对于上面的示例,它看起来像这样:

[]
   [A]
   predicate(A, contain, string(foo), string(foobar))-1
      NOT
      [B]
      predicate(B, contain, string(foobar), string(foo))-1
   =>
   []
   formula(int(4), =, expr(+, int(2), int(2)))-1

有一种名为DRS verbalizer的工具可将DRS转换为ACE。对于上述DRS,您将得到:

If "foo" contains "foobar" and it is false that "foobar" contains "foo" then 4 = ( 2 + 2 ).

在您的情况下,您必须将规则表示转换为DRS(应该非常直接),然后您可以直接使用DRS语言分析器。提到的工具是available under the LGPL license