所以我正在研究如何从报告中推断知识(不是特定格式),但是在预处理之后,我应该有某种格式化的数据。
一个相当基本的推论是:“零售商有 X 库存。” 和“X 是可售的”。->“零售商销售X”我关注的知识是面向零售领域的,如果可能的话,我应该在每次迭代中提高其效率。
这是科幻小说吗(我的一些朋友认为是)?我在网上找到的相关内容是发现异常的“专家系统”、模糊推理系统和一些关于“简单知识”的咆哮。
你能帮我提一些要点,让我把注意力集中在一些研究方向上吗?
蓝色欧米茄
所以我正在研究如何从报告中推断知识(不是特定格式),但是在预处理之后,我应该有某种格式化的数据。
一个相当基本的推论是:“零售商有 X 库存。” 和“X 是可售的”。->“零售商销售X”我关注的知识是面向零售领域的,如果可能的话,我应该在每次迭代中提高其效率。
这是科幻小说吗(我的一些朋友认为是)?我在网上找到的相关内容是发现异常的“专家系统”、模糊推理系统和一些关于“简单知识”的咆哮。
你能帮我提一些要点,让我把注意力集中在一些研究方向上吗?
蓝色欧米茄
您当然不是在谈论“科幻”,但很多东西都超出了软件工程师通常接触的标准内容。在过去的八年里,我构建并使用规则引擎对零售领域的半结构化数据进行推理。
对数据进行推理是一个成熟的领域。基本上有四类与该领域相关的问题:
对于知识获取,请查看: Ripple Down Rules和 Decision Trees,它们有很长的路要走,而且很容易理解。或者,广泛的机器学习领域提供了多种从数据中获取模型的方法。
对于知识表示,请查看RDF和Owl,以及较小程度的概念图。在表现力上,RDF & CG 大致相当。两者背后的基本概念是数据的序列化独立图(三元组)表示。
对于模式匹配,经典算法是Charles Forgy 的Rete。
对于推理,有两种典型的策略:前向链接和后向链接。前向链接是通过这样的规则集完成的:
数据设置:
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。请注意,推理有很多陷阱,尤其是在诸如非单调推理之类的事情上(不仅仅是添加事实,而是更改或删除事实,可能会导致推理中的矛盾或循环)。
进行某种推理的一种简单而幼稚的方法是使用数据库并使用连接来匹配事实(陈述)。这对于某些应用程序可能已经足够了。在推理方面,很容易陷入一个复杂且技术不完善的世界。把事情简单化。
你写的让我想起了一个“规则”。像这样的规则(变量都是名义的)是所谓的关联规则挖掘的结果。也许这种方法是您应该考虑的方法之一。
您可以使用开源机器学习软件Weka,或者如果您更喜欢R 环境,那么Rattle gui可能会派上用场。