因此,我正在研究如何从报告中推断知识(不是特定格式的),但经过预处理后,我应该有某种格式化的数据。
一个相当基本的推论是:“零售商有X股。”和"X是可销售的。“->”零售商销售X“我关注的知识是面向零售领域的,如果可能的话,我应该在每次迭代中提高它的效率。
这是科幻小说吗(我的一些朋友认为是)?我在网上找到的相关东西是发现异常的“专家系统”,模糊推理系统和一些关于“简单知识”的咆哮。
你能帮助我一些观点,让我在一些研究方向上专注或引导我吗?
blueomega
发布于 2010-05-04 16:43:49
你当然不是在谈论“科学”,但有很多东西超出了软件工程师通常接触到的标准。在过去的八年里,我一直在构建和使用规则引擎来对零售业中的半结构化数据进行推理。
对数据进行推理是一个成熟的领域。与这个领域相关的问题基本上有四类:
推理知识获取(从人们的头脑中获取规则,并将规则放入code/rules)
对于知识获取,请看:Ripple Down Rules和决策树,它们有很长的路要走,易于理解。或者,广阔的领域Machine Learning提供了从数据派生模型的各种方法。
对于知识表示,请查看RDF和Owl,并在较小程度上查看Conceptual Graphs。在表现力方面,RDF和CG大致相同。两者背后的基本概念都是数据的序列化独立图(三元组)表示。
对于模式匹配,经典的算法是Charles Forgy的Rete。
对于推理,有两种典型的策略:Forward chaining和backward chaining。正向链接在规则集上执行,如下所示:
数据设置:
Rule 1: If A Then B
Rule 2: If B Then C
Facts: A
执行:
Do {
Newfacts = Eval(RuleSet, Facts)
Facts = Facts + Newfacts
} while (NewFacts.Count > 0)
将数据A提供给这个小算法,您将从数据中“推断”(发现)事实C,这要归功于规则库。请注意,推理有很多陷阱,特别是在non-monotonic reasoning之类的东西周围(不仅仅是添加事实,而且更改或删除事实,可能会在推理中引起矛盾或循环)。
进行某种推理的一种简单而幼稚的方法是使用数据库并使用连接来匹配事实(语句)。对于某些应用程序来说,这可能就足够了。当谈到推理时,很容易陷入复杂和不太成熟的技术的世界。保持简单。
发布于 2010-01-22 23:22:48
你写的东西让我想起了一条“规则”。像这样的规则(其中所有变量都是名义的)是所谓的association rule mining的结果。也许这种方法是您应该考虑的方法之一。
您可以使用开源机器学习软件Weka,或者如果您更喜欢R environment,那么rattle gui可能会派上用场。
https://stackoverflow.com/questions/2094217
复制相似问题