【问题标题】:Classify items using DROOLS使用 DROOLS 对项目进行分类
【发布时间】:2014-04-04 18:52:27
【问题描述】:

我想构建一个物品分类机器,创建规则并使用重量。可能没有明确的细节来定义一个项目,只有高分。 一个例子。

If item A has x part then A.set(Category.A, 5) //weigth 5 
If item A has y part then A.set(Category.B,3) //weigth 3 
If item A has z part then A.set(Category.B,2) //weigth 2 
... 

在执行完所有规则之后,你就有了每个类别的分数,所以最后项目 A 是类别什么的。

这可以使用 DROOLS 吗?这有什么例子吗? 非常感谢。


根据需要添加更多信息: 我想对新闻进行分类(例如)。

If NewsA has in title "won" then NewsA is likely SportNews as 20%
If NewsA is writen by MisterX then NewsA is likely InternationalNews as 60%
If NewsA has more than 2 times word "football" then NewsA is likely SportNews as 50%

所以,这样的一条新闻:

巴塞罗那昨天赢了
bla,bla,bla...足球,bla,...足球,bla,bla,bla ...足球...
由 MisterX 编写


此新闻将被归类为 SportNews,因为 20+50 是 InternationalNews 类别的 60 多个。我想在门中实现类似的东西,有多种规则和重量。
再次感谢!

【问题讨论】:

    标签: java classification drools


    【解决方案1】:

    这些方面的东西应该适合你。您必须提供更多信息以获得更详细的示例。

    rule "category for X part"
    when
      $itemA: A( hasXPart() )
    then
      modify(itemA){ category( Category.A, 5) };
    end
    

    【讨论】:

    • itemA => $itemA 在 RHS 上。分号不是必需的。
    【解决方案2】:

    这是我在我的规则设计模式集合中称为“分类问题”的一个实例。细节各不相同,但第一个问题是以某种方式分离(通常)属性的多维空间,以便恰好触发一个规则或者,对于更复杂的情况,以一种方式设计规则:一组规则调查一组相关的属性。

    如果必须根据某些排名应用规则,则必须小心。

    但是,正如 Andy 所写,这篇文章中没有足够的信息来进行认真的讨论。

    稍后 确实。阅读https://engage.redhat.com/forms/rule-design-patterns 中的该部分可能会有所帮助。

    对于这种情况,我建议将触发器、类别和百分比作为事实(触发器)插入,而不是将它们硬编码到规则中。然后,少数技术规则应 (1) 将触发器事实与 NewsItem 相关联,(2) 确定最终分类的最大值 (3) 清理的类别。

    我认为让条件评估本身查看 NewsItem 的文本以计算关键词是一个坏主意。您可以评估一组关键字的触发事实(一次,在会话启动后并保存它)并具有一个分解文本的功能,从而产生“有趣”关键字的频率计数。然后,规则可以非常有效地匹配 NewsItems 和 Triggers。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-03
      • 2014-11-06
      • 1970-01-01
      • 2016-08-25
      • 1970-01-01
      • 1970-01-01
      • 2021-05-07
      相关资源
      最近更新 更多