【问题标题】:rdf representation of entity references in text文本中实体引用的 rdf 表示
【发布时间】:2010-07-17 17:12:21
【问题描述】:

考虑这样的句子:

约翰·史密斯前往华盛顿。

姓名标注员会在天气好的时候将“John Smith”识别为一个人,将“Washington”识别为一个地方。但是,如果没有其他证据,它无法判断世界上所有可能的“约翰·史密斯”中的哪一个,甚至是各种“华盛顿”中的哪一个。

最终,某些解决过程可能会根据其他证据做出决定。然而,在此之前,在 RDF 中表示这些引用的良好做法是什么?在某个命名空间中为它们分配组成的唯一标识符?制作空白元组(例如,“文档 d 中引用了某个名叫 John Smith 的人”。)?其他的选择?我的一本书给出了一个涉及匿名气象站的例子,但我并没有完全理解他们的例子如何与所描述的 RDF 的所有其他内容相匹配。

【问题讨论】:

    标签: rdf named-entity-extraction


    【解决方案1】:

    在您自己的命名空间中为它们分配唯一标识符。如果您后来发现这个“Washington”与http://dbpedia.org/resource/Washington,_D.C. 或其他任何内容相同,您可以添加 owl:sameAs 来断言。

    【讨论】:

    • 并为每个数据块创建一个命名空间?
    • 我正在考虑为您的整个数据集使用一个命名空间。然后为您不知道的任何东西设置唯一 ID。
    【解决方案2】:

    首先,您可以使用现有的良好服务进行实体识别,例如OpenCalaisZemantaAlchemy

    更具体地说,是的,只需为每件事“铸造”你自己的 URI(标识符),然后谈论它们 - 以在 turtle 中提供此信息的表示

    @prefix : <http://yourdomain.com/data/> .
    @prefix myont: <http://yourdomain.com/ontology/> .
    @prefix dcterms: <http://purl.org/dc/terms/> .
    @prefix dbpedia-owl: <http://dbpedia.org/ontology/Place>.
    @prefix foaf: <http://xmlns.com/foaf/0.1/> .
    @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
    @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
    
    :John_Smith#d rdf:type foaf:Person ;
      foaf:name "John Smith"@en .
    
    :Washington#d rdf:type dbpedia-owl:Place ;
      rdfs:label "Washington"@en .
    
    :John_Smith#d myont:travelled_to :Washington#d .
    
    <http://yourdomain.com/some-doc#this> rdf:type foaf:Document ;
      dcterms:references :John_Smith#d, :Washington#d .
    

    如果您稍后将它们匹配,那么您可以使用 owl:sameAs,就像 glenn mcdonald 提到的那样。

    【讨论】:

    • NEE 是我的事。我只是想添加 RDF 生产。
    【解决方案3】:

    可能与您阅读 Apache Stanbol 的工作方式相关:http://stanbol.apache.org/docs/trunk/components/enhancer/enhancementstructure.html

    【讨论】:

      【解决方案4】:

      您可以按照上面讨论的方式创建自己的 URI,也可以使用空白节点。这两种方法各有利弊:

      URI 具有外部标识,因此您可以在以后的查询中明确引用您的概念,这可以使某些查询更加简单;但是,你他们有一个外部身份,所以你用来构造 URI 的算法成为你的基础设施的关键部分,你必须保证它们既稳定又独特。起初这可能是微不足道的,但是当您开始处理在不同时间重新处理的多个文档时,通常是并行的,并且在分布式系统上,它很快就不再是直截了当的。

      空白节点被专门用来解决这个问题,它们的唯一性由它们的作用域来保证;但是,如果您需要在查询中明确引用空白节点,您将需要使用非标准扩展,或者找到某种方式来表征节点。

      在这两种情况下,尤其是如果您使用空白节点,则无论如何都应该包含出处声明来表征它。

      @nathan 的示例是一个很好的例子。

      所以一个使用空白节点的例子可能是:

      @prefix my: 。 @prefix proc: 。 @prefix prg: 。 @prefix rdf: 。 @prefix rdfs: 。 @prefix xsd: 。 @prefix dcterms: 。 @prefix foaf: 。 @前缀文档: 。 _:1 rdf:type proc:ProcessRun ; proc:parser prg:tagger ; 过程:版本“1.0.2”; proc:time "2010-07-03 20:35:45"^^ ; proc:host prg:hostname-of-processing-node ; proc:file doc:some-doc#line=1,;md5=md5_sum_goes_here,mime-charset_goes_here ; _:2 rdf:type foaf:Person ; foaf:name "John Smith"@en ; proc:identifiedBy _:1 ; proc:atLocation doc:some-doc#char=0,9 。 _:3 rdf:type owl:Thing ; foaf:name "华盛顿"@en ; proc:identifiedBy _:1 ; proc:atLocation doc:some-doc#char=24,33 。 rdf:type foaf:Document ; dcterms:references _:2, _:3 。

      请注意使用 rfc5147 文本/纯片段标识符来唯一标识正在处理的文件,这为您提供了关于如何标识单个运行的灵活性。另一种方法是在文档根的 URI 中捕获所有这些内容,或者完全放弃出处。

      @prefix : 。 @prefix proc: 。 @prefix prg: 。 @prefix rdf: 。 @prefix rdfs: 。 @prefix xsd: 。 @prefix dcterms: 。 @prefix foaf: 。 @prefix 文档: 。 :1 rdf:type proc:ProcessRun ; proc:parser prg:tagger ; 过程:版本“1.0.2”; proc:time "2010-07-03 20:35:45"^^ ; proc:host prg:hostname-of-processing-node ; proc:file doc:some-doc#line=1,;md5=md5_sum_goes_here,mime-charset_goes_here ; :2 rdf:type foaf:Person ; foaf:name "John Smith"@en ; proc:identifiedBy :1 ; proc:atLocation doc:some-doc#char=0,9 。 :3 rdf:type owl:Thing ; foaf:name "华盛顿"@en ; proc:identifiedBy :1 ; proc:atLocation doc:some-doc#char=24,33 。 rdf:type foaf:Document ; dcterms:references :2, :3 。

      你会注意到 foaf:name 有一个 owl:Thing 的范围,所以它可以应用于任何东西。另一种可能是使用 skos:Concept 和 rdfs:label 作为专有名词。

      对于空白节点与 URI 的最后一个考虑因素是,您使用的任何数据存储最终都必须存储您使用的任何 URI,如果您使用非常大的数据集,这可能会影响性能。

      如果我最终要在图表中发布出处信息以及最终的统一实体,我会倾向于使用空白节点并将 URI 分配给我最终统一实体的概念。

      但是,如果我不打算跟踪推论的出处,而这只是管道中许多最终将丢弃中间结果的传递,我只会使用某种文档哈希、时间戳来创建 URI , 和 id 并完成它。

      @前缀: 。 @prefix my: 。 @prefix rdf: 。 @prefix dcterms: 。 @prefix foaf: 。 :filename_timestamp_1 rdf:type foaf:Person ; foaf:name "John Smith"@en 。 :filename_timestamp_2 rdf:type owl:Thing ; foaf:name "华盛顿"@en 。 rdf:type foaf:Document ; dcterms:references :2, :3 。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-12-21
        • 2011-09-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-21
        相关资源
        最近更新 更多