问题标签 [inference-engine]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
865 浏览

expert-system - CLIPS 中事实集的泛化(尝试在多槽槽中找到匹配的槽值)

我正在尝试在 CLIPS 中做类似“事实概括”的事情(不确定哪个术语最能描述它),我不确定如何以最佳方式做到这一点。

考虑这种情况。我有一组由以下模板描述的事实:

Coraxidcause 和 changeidcause 组合是一种关键 - 这两个字段的组合是唯一的。changeinfo 和 coraxinfo 在插槽中有一些符号值(我在每个插槽中的值总是不超过 10 个)

所以我有一些简单的事实。我想要做的是找出 changeinfo 和 coraxinfo 中哪些值相同并断言它们。例如,如果我有这些简单的事实:

我想断言这样的事实:

现在我写了这条规则:

问题是,如果我们回到前面提到的这 4 个事实,它会断言:

等等

我不需要所有这些“部分匹配”,我只需要完全匹配的部分 - (finalcause (coraxinfo 2 3) (changeinfo ab)),我不知道该怎么做。此外,当我有这样的事情时,会发生非常可怕的事情:

此时 CLIPS 引擎像无限循环一样进入 smth,LHS 列出所有可能的匹配:

等等

这需要很长时间(正如我之前提到的,我仍然不需要做我不需要的事情)。我是 CLIPS 的新手,所以我认为我错过了一些明显的东西,应该有一些方法来做我需要的事情。我将不胜感激有关如何执行此操作的任何帮助或建议。任何想法都会非常有用。

看起来我还没有澄清我到底想要什么。我需要在所有事实中找到所有可能的“匹配”,例如,如果我有这些事实:

我需要将此作为输出:

0 投票
2 回答
2094 浏览

clips - CLIPS - 在多槽字段中寻找随机槽之间的匹配

考虑这种情况。我有这样的模板:

我知道在 coraxinfo 插槽中,我将始终拥有不超过 14 个值(可能更少,但永远不会更多)。我现在也在 changeinfo multislot 中拥有不超过 13 个值。

我正在尝试编写一个规则,该规则将找到我将拥有的任何事实之间的所有可能匹配项。

例如:

我需要得到这个(每个多槽中的值顺序无关紧要):

现在我已经停止了这个功能:

这有点笨拙,但据我记得$?表示“零或更多”,所以即使我的字段少于我在搜索模式中指定的字段,它也应该可以工作。我在每个模式中最多使用 7 个多槽,因为最多有 14 或 13 个值意味着在最坏的情况下,多槽中的每一秒值都将与其他事实相匹配。

当我加载 deffacts CLIPS 中指定的事实时,问题会进入一种无限循环——它很长时间没有响应,所以我相信我的规则出错了。此外,这条规则应该会杀死引擎,以防我有几个几乎相同的事实,只有一个领域的差异。在这种情况下,它们之间会产生大量的匹配。知道我哪里错了吗?我将非常感谢任何建议。

更新。如果我们尝试通过一次向 coraxinfo 和 changeinfo 插槽添加一个值来构建(finalcause)事实的方法,那么我目前已停止使用以下两条规则:

在两个多槽中创建具有一个匹配值的初始 finalcause 事实:

如果我们有任何 finalcause 事实,我们会尝试检查其中的所有 multislot 值是否是 ?coraxmatchafter 值之前的所有内容的子集,以匹配 simplecause 事实并断言扩展的 finalcause。我相信这条规则应该能够在匹配简单原因时“跳过差距”。

我使用这些 deffacts 的规则(注意 deffacts 与上面的不同):

这里的问题是我希望它能够为 3 个匹配字段生成最终原因,但它只生成具有 2 个匹配字段的最终原因事实,我不明白为什么。难道它不应该注意到这三个事实属于第二条规则吗?

0 投票
1 回答
842 浏览

clips - 使用 CLIPS 中的事实地址获取多槽槽的所有值

是否有可能在剪辑中使用事实的事实地址以某种方式获取多槽插槽中的所有值?例如:

我有一个名为 count-coraxes 的函数,它在输入中接收多槽值,所以我尝试编写这样的规则:

我假设 ?f:coraxinfo 将使用 factadress ?f 提取 coraxinfo 插槽中的所有值,但看起来情况并非如此。根本不可能吗?

0 投票
3 回答
2215 浏览

logic - 基于专家系统的规则与普通算法编程中的条件之间的区别

在基于规则的专家系统中,知识库包含大量“如果(模板)则(动作)”形式的规则。推理引擎选择与输入事实匹配的规则。也就是说,它们的条件部分与输入数据匹配的那些规则被列入候选名单,并选择其中之一。

现在可以以某种方式使用具有类似条件语句的普通程序来达到结果。

  • 我试图找到一个关于两者之间差异的“合理而清晰的描述”,以及为什么我们无法实现专家系统规则可以用普通算法编程做的事情?

  • 仅仅是算法需要完整且众所周知的输入,而专家系统可以接受任何顺序的不完整信息吗?

谢谢。

0 投票
0 回答
29 浏览

architecture - 构建推理引擎以从数据库中提取适当的文件

我正在开发具有“阅读器”的数值模拟软件来利用一个模拟文件。根据用户输入和其他参数,我必须从数据库中提取适当的模拟文件并将其发送给客户端。

  • 1-在我的情况下实施推理引擎是否合适?
  • 2- 我应该使用什么最合适的语言/推理引擎?我正在寻找 Java+Groovy 和流口水。
0 投票
0 回答
50 浏览

asp.net - 在 ASP.Net Web 服务中使用 Infer.Net 模型

我正在 Azure 中构建一个 ASP.Net Web API 2 Web 服务,以提供对Infer.Net朴素贝叶斯模型的访问权限。启动模型有两种模式:从头开始构建模型或加载模型的最后保存状态。后者比前者快,但两者都不是近乎瞬时的。Web 服务调用需要即时且接近无状态。我可以想象将运行模型与 Web API 相关联的两种方法是使用ASP.Net 的应用程序状态或使用Azure Worker Role并使用队列在 Web 服务方法和运行的辅助角色之间进行通信。

将正在运行的 Infer.Net 模型与 Web 服务 API 相关联的最佳实践是什么?

0 投票
1 回答
1302 浏览

prolog - 推理引擎序言

我正在尝试在 prolog 中构建推理引擎。

例如,这里有一些规则

我想这样做

但我必须使用定义如下的谓词“rule/1”

rule(Ri) :- "if conditions then conclusions".

例如 :

我能怎么做 ?

0 投票
1 回答
336 浏览

artificial-intelligence - 什么是混合推理引擎?

我已经为此尝试了很多搜索,即使如此,如果发布了类似的帖子,我深表歉意。

我知道规则引擎基本上有两种推理方法,正向和反向链接。我也相信我了解两者是如何单独工作的,但是具有混合推理功能的引擎将如何首先执行前向链接然后向后链接,反之亦然?或者引擎是否有可能根据工作记忆中的知识库和事实来决定使用哪种推理?

另外,如果我想用两种推理方法构建一个引擎,增强正在使用的匹配算法(Rete、Treat 等)是开始的方式吗?

我知道我问了很多问题,如果有人能回答或推荐我参考任何部分的文献,我将不胜感激。

谢谢!

0 投票
0 回答
115 浏览

sparql - SPARQL 1.1 蕴含机制和使用 FROM 子句的查询(后续)

这是SPARQL 1.1 蕴涵制度和使用 FROM 子句查询的后续问题

我目前正在记录/测试有关 SPARQL 1.1 蕴含机制的信息,并且该建议反复指出

范围图是图等价于活动图...

因此,推理范围图似乎取决于查询。

问题是:范围图是否源自查询的数据集(FROM/FROM NAMED 子句),还是指正在评估的三重模式的真​​实当前活动图上下文?

用下面的图

以下查询应该返回什么(例如,在 RDFS-entailment 制度下)并根据建议?

我应该取回所有三个资源:

要不就

因为三重模式上的活动图的范围是 NAMED 图,而推理公理在默认图中“定位”?

感谢您的洞察力,

最大限度。

0 投票
0 回答
91 浏览

php - 如何使用 XAMPP 运行 chrome_prolog?

我是计算机科学专业的学生,​​我正在学习使用PHP进行逻辑编程。

我找到了一个有趣的 Prolog 解释器chrome_prolog ( https://github.com/crcx/chrome_prolog )。

要了解有关 PHP 的更多信息,我正在尝试在Windows XP上使用XAMPP 1.7.3运行此代码。但是,我失败了。

  1. 当我运行时PrologTest.php,它们显示:

    /li>
  2. 我不想使用PHPUnitSymfony ... 和其他框架。因为,我不擅长 PHP,所以我不想使用它们

你能帮我解决错误删除框架......使它成为纯 PHP吗?并且,请解释以帮助我了解更多信息?


如果你找到了一个用纯 PHP编写的很好的推理引擎(语法类似Prolog),请给我介绍一下!