将自然语言表示为 RDF

Posted

技术标签:

【中文标题】将自然语言表示为 RDF【英文标题】:Representing Natural Language as RDF 【发布时间】:2011-03-25 10:40:30 【问题描述】:

RDF/OWL 能够表示多少自然语言中传达的概念?我仍在学习 RDF 和其他语义技术,但据我目前的理解,信息通常表示为形式的三元组(主语、谓语、宾语)。所以我可以想象“Bob has a hat”这句话如何表示。但是,您将如何表达更复杂的句子,例如“鲍勃,在第 42 街,业主批准后将在购物中心工作”?代表名词/动词/所有权/因果关系/时态/等的标签是否有约定?

注意,我不是在问如何将任意自然语言文本自动转换为 RDF(因为目前这似乎是不可能的)。我只是想了解如何使用 RDF 来表示自然语言所表示的相同信息。

【问题讨论】:

【参考方案1】:

也许看看Attempto project 的目标是定义一个可以自动映射到一阶逻辑的英语片段。这项工作的一部分是映射到 OWL 2 DL。参见例如Writing OWL ontologies in ACE.

你的例句

Bob, over on 42nd street, will have a job at the Mall after the owner approves

可以用 Attempto Controlled English (ACE) 重写为

If an owner of Mall approves John whose address is "42nd street"
    then he is employed by Mall.

(或类似的东西,取决于你到底想说什么。)

这句话可以自动映射到一个OWL2 SubClassOf-axiom

   SubClassOf(
      ObjectIntersectionOf(
         ObjectOneOf(
            :Mall
         )
         ObjectSomeValuesFrom(
            :owner
            ObjectSomeValuesFrom(
               :approve
               ObjectIntersectionOf(
                  ObjectOneOf(
                     :John
                  )
                  DataHasValue(
                     :address
                     "42nd street"^^<http://www.w3.org/2001/XMLSchema#string>
                  )
               )
            )
         )
      )
      ObjectSomeValuesFrom(
         :employ
         ObjectOneOf(
            :John
         )
      )
   )

这个映射实现了关于基本词类的某些约定:

普通名词映射到 OWL 类名 专有名称映射到 OWL 个人名称 及物动词、及物形容词和 of 结构映射到 OWL 属性名称:如果参数是数字或字符串,则为数据属性名称,否则为对象属性名称

此映射不支持 ACE 支持的许多词类,例如不及物动词和双及物动词、不及物形容词和副词。覆盖范围可以扩大,例如不及物动词可以映射到 OWL 类(例如,“John sleeps.”可以表示个体 John 属于 sleepers 类)。不太清楚如何处理例如双及物动词和副词。

总的来说,英语在其构建块(名词、不同类型的形容词、不同类型的动词......)方面比 OWL(具有类、个体、对象和数据属性,以及) 数据项,例如字符串和数字)。这只是“单词与实体”级别。像时态这样的东西更复杂,因为它们有很多英文的表面表示,并且在 OWL 方面没有任何内置。

【讨论】:

干得好。经过一番研究,确切的 APE 调用是: ./ape.exe -text "如果 p:Mall v:approves p:John 的所有者的地址是 \"42nd street\",那么 John 是p:商场。” -cparaphrase 有趣的是,ACE 支持的大多数功能都被 RDF/OWL 明确不支持,因为它们不支持形容词、副词和其他常见的词性。尝试将我的句子导出到 OWL 会产生错误,但如果我将其导出为话语表示结构 (DRS),则可以正常工作。 @chris-s 我已经扩展了答案以回应您的第二条评论。

以上是关于将自然语言表示为 RDF的主要内容,如果未能解决你的问题,请参考以下文章

知识工程基础-作业1

在python中怎样将rdf转化为稀疏张量

Sparql查询RDF

工作流图作为 RDF?

简单构建基于RDF和SPARQL的KBQA(知识图谱问答系统)

如何过滤语言的Wikidata dump?