【问题标题】:trim freebase data dump to only English entities将 freebase 数据转储修剪为仅英文实体
【发布时间】:2014-09-16 13:39:35
【问题描述】:

我有一个压缩的 freebase 数据转储,其中包含所有实体。如何使用 grep 或其他方法将数据转储修剪为仅包含英文实体?

这是我试图让 rdf 转储看起来像的样子:http://play.golang.org/p/-WwSysL3y3

<card>
    <title></title>
    <image></image>
    <text></text>
    <facts>
        <fact></fact>
        <fact></fact>
        <fact></fact>
    </fact>
</card>

其中 card 是在所有子元素中包含内容的每个实体。标题是 /type/object/name。文字是"https://usercontent.googleapis.com/freebase/v1/image"%s"\n", id完成的主题中间的图像。 Text 是实体的 /common/document/text。和事实及其事实子代,例如年龄、出生日期、身高等事实,以及在搜索中显示在知识面板中的事实。

这是我尝试在 Go ( Golang ) 中将 rdf 解析为 xml 的尝试。如果有人可以帮助我获得这种形式的 rdf,我将不胜感激。

这是我正在尝试做的算法或逻辑:

For every entity written in english:

    parse the `type/object/name`property's  and write that to the xml file in the `<title></title>` element.

    parse the mid and add that to `https://usercontent.googleapis.com/freebase/v1/image`and then write the result to the xml file in the <image></image> element.

    parse the common/document/text property and writes its value to the <text></text> element.

    And lastly, for each fact about the entity, write them to the <fact></fact> elements in the XML file, which are all children of the <facts></facts> element.

【问题讨论】:

  • “英文”实体是什么意思? RDF 基于三元组,RDF 图中的节点是 URI、空白节点和文字。其中,文字可以具有语言标签,因此可以将文字视为“英语实体”。但是,文字不能是 RDF 三元组中的主语或谓词,因此您不能拥有仅由文字组成的 RDF 图。
  • @JoshuaTaylor 我的意思是只有英文实体。就像内容是英语的实体一样。当我将rdf解析为xml时,似乎有外语。
  • 完全不清楚您所说的“实体”是什么意思。 RDF 是一种基于图的数据格式,其中有 [主谓宾] 形式的三元组(标记的边)。每个主题都是一个 URI 或一个空白节点。每个谓词都是一个 URI。每个对象要么是一个 URI,要么是一个空白节点,要么是一个字面量。在所有这些中,唯一具有语言的是某种文字。您可以过滤掉包含带有非英语语言标签的文字对象的三元组。这是你想做的吗?
  • 真的,在这里最好的做法是向我们展示您拥有的数据样本,并展示您希望将其转化为什么。就像提到的密切原因一样,问题应该“包括期望的行为,[和]一个特定的问题或错误。没有明确问题陈述的问题对其他读者没有用处。”
  • @JoshuaTaylor 感谢您提前提供的帮助以及迄今为止您给我的帮助。我已经用我正在尝试制作的内容以及我的代码尝试在 golang 中执行此操作更新了问题。

标签: go rdf semantic-web freebase linked-data


【解决方案1】:

我同意 Joshua Taylor 的观点,即这个问题很难解读,因为 entity 通常是 Freebase 对象的同义词,它可能有多种语言的标签(或根本没有标签/文本)。

如果我们将问题改写为“如何从压缩的 Freebase 转储中过滤所有非英语文本?”这样的问题,它就变成了我们可以实际回答的问题。

在 RDF 中,所有字符串都用它们的语言标记,所以如果我们看到类似

ns:award.award_winner   rdfs:label      "Lauréat"@fr.

我们可以看出,Lauréat 是 Freebase 类型的法语名称,英文称为 Award Winner

要过滤掉非英文标签,使用 zgrep 过滤那些匹配 "@... 但不匹配 "@en 的行。 这将为您提供所有类型、属性、数字和英文标签/描述,但不会排除那些没有至少一个英文标签的对象(您问题的另一种可能解释)。要进行这种级别的过滤,您可能需要比 grep 更强大的东西。

【讨论】:

  • 谢谢。感谢您的帮助,对于我的困惑,我深表歉意。
猜你喜欢
  • 2018-08-12
  • 2017-04-08
  • 1970-01-01
  • 2021-09-11
  • 2012-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-13
相关资源
最近更新 更多