为了账号安全,请及时绑定邮箱和手机立即绑定

将 freebase 数据转储修剪为仅英文实体

将 freebase 数据转储修剪为仅英文实体

Go
温温酱 2021-08-16 18:58:39
我有一个压缩的 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。文本是实体的 /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.
查看完整描述

1 回答

?
紫衣仙女

TA贡献1839条经验 获得超15个赞

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

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

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

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

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

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


查看完整回答
反对 回复 2021-08-16
  • 1 回答
  • 0 关注
  • 206 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信