如何在 Freebase 和 Wikipedia 之间进行映射?

How to map between Freebase and Wikipedia?

我用工具AIDA(一种命名实体工具)标注了一个语料库,得到的格式是这样的:

2   Germany http://en.wikipedia.org/wiki/Germany    11867   /m/0345h
6   United_Kingdom  http://en.wikipedia.org/wiki/United_Kingdom 31717   /m/07ssc

第3列是实体对应的维基百科URL,第4列是实体对应的维基百科ID。有没有办法像最后一列那样将 url 或 id 映射到 Freebase MID?最后一栏是别人的作品。我不知道他是怎么做到的,在其他地方找不到方法。

这是 AIDA link: https://www.mpi-inf.mpg.de/departments/databases-and-information-systems/research/yago-naga/aida/downloads/

你可以用维基百科的信息查询Freebase,见Freebase API docs。查询 /common/topic/topic_equivalent_webpage 属性。但是,Freebase 将在不久的将来关闭,因此我不建议您为此付出太多努力。

使用 Freebase API 或 Freebase 数据转储,很容易将这两个 EN Wikipedia ID 映射到 Freebase 主题及其各种标识符,包括 MID。哪一个最好使用取决于您需要映射的数据量。

所有维基百科 ID 都存储在以 /authority/wikipedia 为根的 Freebase 命名空间中。英文维基百科的数字 ID(即文章编号)存储在 /authority/wikipedia/en_id 中,因此您可以使用 http://freebase.com/authority/wikipedia/en_id/11867 作为德国主题的别名之一。

这里列出了所有其他子命名空间:https://www.freebase.com/authority/wikipedia?ns= 但与英语维基百科相关的另外两个是 enen_title,它们都包含使用alpha 维基百科文章名称。后者是规范 ID 并且是唯一的,而前者包含该 ID 以及指向它的所有重定向页面的 ID。

这两个 URL 也是德国的别名:

https://www.freebase.com/authority/wikipedia/en/Germany https://www.freebase.com/authority/wikipedia/en_title/Germany

要使用 MQLRead 查询 API,构造一个这样的查询:

[{
  "id": "/authority/wikipedia/en_id/11867",
  "mid": null,
  "name": null
}]

并解析结果 JSON

{
  "result": [{
    "id": "/authority/wikipedia/en_id/11867",
    "mid": "/m/0345h",
    "name": "Germany"
  }]
}

获取 MID。完整查询 URL 如下所示:

https://www.googleapis.com/freebase/v1/mqlread/?lang=%2Flang%2Fen&query=%5B%7B+%22id%22%3A+%22%2Fauthority%2Fwikipedia%2Fen_id%2F11867%22%2C+%22mid%22%3A+null%2C+%22name%22%3A+null+%7D%5D

您可以对其他命名空间中的字母键执行相同的操作,但是需要对特殊字符的键进行转义,并且不值得麻烦地描述它,因为您已经有了数字标识符。如果其他人需要它,请在此处描述 MQL 密钥转义:http://wiki.freebase.com/wiki/MQL_key_escaping