使用DROOLS对物品进行分类

时间:2014-03-03 16:10:13

标签: java classification drools

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

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超过60个国际新闻类别。我想在门上实施类似的东西,有多种规则和重量 再次感谢!

2 个答案:

答案 0 :(得分:1)

这些方面的东西应该对你有用。您需要提供更多信息以获取更详细的示例。

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

答案 1 :(得分:1)

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

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

但是,正如安迪写的那样,这篇文章中没有足够的信息可以进行认真的讨论。

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

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

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