【问题标题】:Can regular expressions be used with the Wikipedia API?正则表达式可以与 Wikipedia API 一起使用吗?
【发布时间】:2017-07-13 16:03:48
【问题描述】:

我必须在几个 Wikipedia 版本中进行大量查询才能找到 DBpedia 中没有的信息(例如,Wikipedia 页面中的单词数)。从一个词,例如“巴黎”,我想确定的是法国首都的维基百科页面,而不是安大略省的巴黎。因此,我有义务在我的查询中使用这些类别,如下所示:

https://en.wikipedia.org/w/api.php?action=query&list=search&format=json&srsearch=paris+incategory:Departments_of_France

问题:维基百科的分类不一致。对我来说,理想的情况是能够将正则表达式用作类别,例如“包含法国一词”。

我在 API 文档中搜索了几个小时,但无法理解如何执行此操作。欢迎任何帮助或建议。

【问题讨论】:

    标签: wikipedia wikipedia-api


    【解决方案1】:

    您可以使用insource:/\[\[Category:[^\]]{0,32}France]]/ 之类的搜索表达式。 (example) 见Help:CirrusSearch#Regular expression searches(通配符长度限制似乎是避免超时所必需的)。

    【讨论】:

    • 感谢您的回复,@Tgr!我在无法重现示例的情况下查阅了文档的这一页。我仍然无法管理它。 "en.wikipedia.org/w/…^]]*France]]/" 返回正则表达式超时。请提供一个真实的例子好吗?
    • 不确定如何在markdown中正确转义链接; URL 是https://en.wikipedia.org/w/api.php?action=query&list=search&format=json&srsearch=Lyon+insource:/\[\[Category:[^\]]{0,32}France]]/(在通配符部分添加了长度限制以避免正则表达式超时)
    • 这个特定的查询没有返回任何结果,但我现在理解逻辑,所以我接受你的回答。 +1 对于首先查询 Wikidata 的想法,尽管我仍然有点害怕 Sparql 端点传统的缓慢。
    • Giot 混入了某种看不见的 Unicode 垃圾。 Here 是正确的查询 URL。尽管从结果中可以看出,这并不能真正解决查找多个事物的问题。
    【解决方案2】:

    另一种可能更适合您的用例的方法是使用 Wikidata 查询服务。文本搜索功能有限(但听起来您实际上并不需要它们)并且语法更复杂(SPARQL + 您需要了解 Wikidata 具有哪些属性约定),但是您可以表达诸如“在法国”之类的内容。

    (将鼠标悬停在 Pxx/Qxx 上以获取信息。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-14
      • 2015-03-21
      • 1970-01-01
      • 1970-01-01
      • 2012-08-28
      • 1970-01-01
      相关资源
      最近更新 更多