问题标签 [reasoning]
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.
recursion - 带有歧义的递归假设构建 - 它叫什么?
我经常遇到一个问题(在数据分析或人工智能的广泛领域)。但是我不能说出它的名字,可能是因为我没有正式的 CS 背景。请多多包涵,我举两个例子:
想象一下自然语言解析:
你有一个程序,它接受每个单词,并确定它的类型和它们之间的关系。这句话有两种解读方式:
使用通常的 SVO 词序,或
使用更具诗意的世界秩序。该程序将排除其他可能性,例如“flower”作为动词,因为它跟在“the”之后。然后它会对剩余的可能性进行排名:1) 比 2) 具有更自然的词序,因此它得到更多的分数。但包括花不能吃牛的世界知识,2)还是赢了。所以它可能会返回两个假设,并给出 1)30 分和 2)70 分。
然后,它会记住这两个假设并继续解析文本,然后分支。一个分支假设 1),一个分支 2)。如果一个分支达到矛盾,或者排名为~0,则将其丢弃。最后,它再次提出了排名假设,但针对整个文本。
举一个不同的例子,想象一下光学字符识别:
我可以看看笔画,然后说,确定这是一个“H”。在识别出 H 之后,我注意到它周围有污迹,并给它打了一个稍差的分数。
或者,我可以先运行我的污迹识别,并注意到水平线看起来像一个伪影。删除后,我认出这是ll
or Il
,并给它一些排名。
处理整幅图像后,可以是Hlumination
,lllumination
或Illumination
。使用字典和总排名,我决定它是最后一个。
- 一般问题总是某种解析/理解。例子:
- 自然语言或歧义语言
- 光学字符识别
- 寻找路径
- 处理模棱两可或不完整的用户输入——哪些解释是有意义的,哪些是最合理的?
- 我是递归的。
- 它可以提前退出(当分支/解释没有意义时,或者肯定会以 0 分结束)。所以这可能是某种回溯。
- 考虑到歧义,它会牢记所有选项。
- 它基于底部的简单规则
can_eat(cow, flower) = true
。 - 它保持解释的合理性排名。
- 它在元级别上是递归的:它可以分叉/分支到不同的“世界”,在处理下一部分数据时假设不同的假设。
- 它将个人排名(可能使用贝叶斯概率)转发到相关假设。
- 在实践中,会有方法来训练这个东西,确定排名系数,如果树变得太大,就会有截断。
我不知道这叫什么。有人可能会猜测“决策树”或“递归下降”,但我知道这些术语的含义不同。
我知道 Prolog 可以解决这个简单的案例,比如家谱和找出谁是谁的叔叔。但是您必须在代码中提供所有数据,对于我的现实生活案例来说,这样做似乎不够方便或强大。
我想知道,这个问题叫什么,有解决这个问题的常用策略吗?有没有关于这个话题的好文献?是否有理想的 C(++)、Python 库,你是否可以定义一堆规则,并计算出所有的排名和假设?
java - OWLIM-lite 不推断任何陈述
我正在使用 OWLIM-lite (5.2) 进行 owl2rl 本体推理。公理的存储似乎有效,存储库已初始化,但系统不会推断任何隐式语句(当我查询隐式语句的数量时,系统返回 0)。
我还尝试查询存储库,系统只返回显式知识。当我将本体序列化为 RDF/XML 并使用 Pellet 在 Protege 中对其进行推理时,它成功地返回了预期的(隐式+显式)值。
感谢您的任何建议。
配置:
存储库初始化:
我如何加载本体:
新知识存储:
web-services - OWL API - Web 服务发现上下文中的 OWL 类包含测试
我有非常艰巨的任务摆在我面前,所以我欢迎任何帮助和建议。
我必须实现 Java Web 服务,该服务将匹配另外两个给定的 Web 服务以实现语义相似性。这两个其他 Web 服务将使用 OWL-S 来描述,它使用来自 OWL 本体的概念。S1 将是我正在寻找的 Web 服务(我的查询),而 S2 将是存储库中的服务(广告)。所以我需要从我的 Java 代码中访问 OWL-S 描述和 OWL 本体。
我正在使用 Eclipse、Tomcat、OWL API 和 HermiT 语义推理器。
我有非常原始的匹配算法,主要目标是将服务 S1 输入和输出与 S2 输入和输出进行匹配。
我是这个主题的初学者,我从未使用过 OWL API,也从未使用过本体。
我目前的待办事项清单: 1. 从 OWL-S 加载一个过程参数类型(OWL 类)。假设 S1 输入是 C1 类型,S2 输入是 C2 类型。2. 查找类 C1 和 C2 是否在我的本体 O 中。 3. 检查类 C2 是否包含类 C1,或者它们在我的本体 O 中是否在语义上相同。
对于这些任务,我将不胜感激任何我找不到的代码示例或片段。特别是检查 C2 类是否包含 C1 类。
问候
rdf - 在 OWL 中使用排除者
亲爱的语义网人,
我在质疑自己如何在 OWL 中定义“排除者”结构。目前我能想到的唯一解决方案是使用 disjointWith。示例代码中演示了“排除者”的含义。房屋对象是屋顶、墙壁、窗户和地板的交集。因此,如果其中一个课程错过,个人将不会成为众议院。但是推理器会进一步推理,因为特定交集的缺失类可能会成为真的。另一方面,House 类与 Tsunami 类具有脱节的关系。当我的个人是海啸班级时,我直接知道我的个人永远不会成为众议院班级。这是我在谈论“排除者”时所期望的行为。但也许其他人对此有不同的看法?
问候, Martijn van der Plaat
hadoop - 分布式系统中语义网的推理
我想在 Hadoop 平台上使用Web 级并行推理引擎 (WebPIE)推理器。我已经用两个 Ubuntu 虚拟机实现了 Hadoop 结构,并且运行良好。当我想使用 WebPie 对 RDF 文件进行推理时,由于需要序列文件格式,该过程失败。WebPIE教程没有提到将序列文件格式作为 Hadoop 推理的先决条件。为了生成序列文件格式,我编写了以下代码:
此代码使用某些 RDF 文件生成正确的序列文件格式,但不能 100% 正确工作,并且有时会生成损坏的文件。是否有任何解决方案从一开始就可以避免此代码,如果没有,我如何改进此代码以正确使用任何 RDF 文件作为输入?
owl - 推理只是本体的好处
我是本体新手,我的要求是收集保险领域概念和它们之间的关系,我正在使用Protege来捕获领域概念。现在我有保险域的 OWL 文件。
现在,我想知道我能从中获得什么好处。我在网上搜索并知道推理是一种好处。
可能是我的问题错了吗?需要指导以更好地理解本体。
jena - 在 Jena TDB 中存储数据并使用推理
我有一个 OWL 本体文件作为 RDF,想将我的数据存储在 TDB 中并想使用推理。实际上,到目前为止这听起来很简单:)
但这是我感到困惑的一点:
我创建了一个 TDB 并通过 SPARQL 存储了一些语句。然后我尝试通过模型和 OWL 推理器加载 TDB:
当我现在通过 API 创建新资源时,它们不会存储在 TDB 中。而且我看不到通过 SPARQL 添加的 Statments?!SPAQRL 语句只显示我使用 SPARQL 添加的条目
这仅返回使用 API 添加的资源
System.out.print("实例:" + ontModel.getResource(NS + "TestItem"));
当我称之为:
我收到以下异常:org.openjena.atlas.lib.InternalErrorException:主题的无效 id 节点(空节点):([0000000000000067],[0000000000000093],[00000000000000C8])
有人能够解释这种行为吗?或者有人可以给我一个提示,如何使用 OntModel 以正确的方式将模式和日期与 TDB 分开?
java - 使用 Jena API 进行基本 RDFS 推理
我目前正在关注 Jena API 推理教程:
https://jena.apache.org/documentation/inference/
作为一个测试我理解的练习,我想重写第一个示例,它演示了从编程构建的模型中进行的简单 RDFS 推理:
做同样的事情,但是使用从这个 Turtle 文件中读取的模型(这是我自己对上述内容的翻译,因此可能是错误的):
使用此代码:
这似乎不是正确的方法(我特别怀疑我对q
财产的提取在某种程度上是不正确的)。我究竟做错了什么?
semantic-web - 是否可以在语义网中实现数学推导?
例如: 我们有前提a < b
和b < c
,你a < c
能用语义网推断吗?
sparql - Jena OWL 推理器的问题
我是耶拿的新手,但现在遇到了一些问题。我有一个超类查询处理及其四个子类:
- 查询处理
- — 查询意图
- — 查询重构
- — 查询表示
- — 查询建议
当我使用:
或者用任何其他 3 个子类作为谓词,inQueryReformulation
我可以得到正确的答案。
但是,当我使用?article Article:inQueryProcessing ?category
which 应该返回与子类 QueryProcessing 相关的所有个人时,我什么也没得到。inQueryIntent
(和其他 3 个)并且inQueryProcessing
是对象属性。
这是我的代码:
这是本体片段:
对象属性:
班级:
个人:
我只是在计算机科学中建立了一个领域本体,所有的类都是层次结构中的概念(比如查询处理是一个超类,查询意图/重构/......是子类),所有的论文及其通讯作者都是个人