【问题标题】:Wikipedia integration issue - need to finally sort this out 101维基百科整合问题 - 需要最终解决这个问题 101
【发布时间】:2009-06-16 12:25:21
【问题描述】:

对不起,伙计们,我一直在模拟,询问如何将维基百科数据集成到我的应用程序中,坦率地说,我认为我没有取得任何成功,因为我一直在尝试所有的想法和当我读到死胡同或障碍时,有点放弃。我将尝试解释我究竟想在这里做什么。

我有一个简单的位置目录,例如城市和国家/地区。我的应用程序是一个简单的基于 php 的基于 ajax 的应用程序,具有搜索和浏览功能。人们注册并将自己与一个城市相关联,当用户浏览城市时 - 他/她可以看到该城市的人和公司,即我们系统中的任何人。

该部分很容易自行设置并且工作正常。问题是我的搜索结果将采用以下格式,即有人搜索让我们说北京。它将返回一个包含三个选项卡的界面框:

  1. 第一个选项卡会有一个包含北京城市信息的信息框
  2. Seond 将是一个国家选项卡,其中包含来自中国的国家/地区信息的信息框
  3. 第三个选项卡将包含北京所有联系人的列表。

前两个标签的内容应该来自维基百科。现在我完全不知道什么是完成这项工作的最佳方法,而且一旦决定了一种方法,我该怎么做并做到这一点它相当健壮。

到目前为止,我能够消化的几个好的和坏的想法是:

  1. 直接向维基百科运行 curl 请求,并在每次进行搜索时解析返回的数据。在这种情况下,无需维护 wikipedia 上的数据的本地副本。另一个问题是它完全依赖来自远程第三位置的数据,我怀疑每次向维基百科发出请求以检索基本信息是否可行。再加上考虑到维基百科上的数据需要在每次请求时都进行解析——这将超过服务器的繁重负载......或者我在这里推测。

  2. 下载维基百科转储并查询。好吧,我已经下载了整个数据库,但是从 xml 转储中导入所有表需要很长时间。另外考虑一下我只想提取国家和城市列表及其信息框的事实 - 转储中的很多信息对我来说毫无用处。

  3. 制作我自己的本地表并创建一个 cron[我将在这里解释为什么 cron 工作] 脚本,它会以某种方式解析维基百科上的所有国家和城市页面并将它们转换为我可以在我的表中使用的格式.但是老实说,我不需要信息框中的所有信息,因为事实上我什至可以按原样获得信息框的基本标记 - 这对我来说已经足够了。喜欢:

国家名称 |信息框原始文本

如果需要,我可以亲自提取坐标和其他详细信息。

我什至尝试从 infochiumps 和 dbpedia 下载第三方数据集,但是 infochimps 的数据集不完整,并且不包含我想要显示的所有信息 - 加上 dbpedia,我完全不知道如何处理我的 csv 文件下载的信息框,恐怕它也可能不完整。

但这只是这里问题的一部分。我想要一种显示维基百科信息的方法 - 我将让所有链接指向维基百科以及来自维基百科的好信息在周围正确显示但问题是我需要一种方法来定期更新我拥有的信息来自维基百科,所以至少我没有完全过时的数据。好吧,让我们说一个可以检查的系统,如果我们有一个新的国家或新的位置,它可以解析信息并以某种方式检索它。我在这里依赖维基百科中的国家和城市类别,但坦率地说,所有这些想法都写在纸上,部分编码并且非常混乱。

我正在使用 PHP 和 MySQL 进行编程,我的截止日期很快就要到了 - 鉴于上述情况和要求,遵循和实施的最佳和最实用的方法是什么。我对想法完全持开放态度-如果有人做过类似的事情,可以举个实际的例子-我很想听听:D

【问题讨论】:

    标签: php mysql wikipedia data-mining


    【解决方案1】:

    我能想到的几件事:

    1. 只需在您网站的 iframe 中显示维基百科数据。

    2. 使用 Curl 从维基百科获取 html,然后使用自定义样式表设置样式和/或隐藏您不想显示的部分。

    尝试实际解析 HTML 并提取您想要的部分将是一个巨大的痛苦,并且很可能必须为每个城市定制。最好先做一些简单的工作,然后再回去改进它,如果你真的需要的话。

    【讨论】:

    • 您可以提出两个解决方案作为 2 个答案,这样更容易投票
    • 我怀疑 iframe 的想法是否可行,因为我只需要在该城市或位置的搜索结果中显示文章的信息框部分。我听说维基百科限制了外部请求等等——这有多真实,维基百科在以这种方式获取信息方面有什么样的限制。
    【解决方案2】:

    使用Wikipedia Geocoding Webservices 之一怎么样

    您可以在其中传递几个可用的位置,例如邮政编码和国家/地区到简短的文章摘要和维基百科文章的链接。

    如果这样就足够了。

    【讨论】:

      【解决方案3】:

      我建议如下

      • 在您的数据库中创建城市(城市)时从维基百科查询城市
      • 解析数据,存储带有上次更新时间戳的本地副本
      • 在访问时,如有必要,请更新数据。您可以显示带有水印的旧版本,说明它已经存在……几天了,现在正在更新。然后在更新完成后更改为新获取的。你说过你使用的是 AJAX,所以这不是问题

      它将最大限度地减少对维基百科的查询,即使无法访问维基百科,您的服务也不会显示空白页面。

      【讨论】:

      • 实际上,我需要一份维基百科上所有可用城市的列表——我指望使用在一个页面上对城市进行分组的类别。然而问题是,我如何从维基百科中提取选定的信息,比如当你说查询城市时,考虑到我们谈论的是数千个条目,我该怎么做。
      • 所有答案都很好——我正在使用你的概念,方法是检索我想要的文章的所有选择 xml 导出并运行一个脚本来解析信息框的导出文件——到目前为止像魅力一样工作。谢谢大家
      【解决方案4】:

      看看 DBPedia,它包含以 CSV 格式很好地提取维基百科数据。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-16
        • 1970-01-01
        • 2020-08-06
        • 2011-05-06
        • 1970-01-01
        • 2020-09-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多