Можно ли использовать регулярные выражения с API Википедии?

Мне приходится выполнять множество запросов в нескольких изданиях Википедии, чтобы найти информацию, которой нет в DBpedia (например, количество слов на странице Википедии). От такого слова, как «Париж», я хотел бы с уверенностью получить страницу Википедии французской столицы, а не Парижа в Онтарио. Поэтому я обязан использовать категории в своих запросах, например:

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

Проблема: категории Википедии несовместимы. В идеале для меня было бы иметь возможность использовать в качестве категории регулярное выражение, например «содержать слово Франция».

Я часами искал в документации по API, но не мог понять, как это сделать. Любая помощь или предложение будут приветствоваться.


person Ettore Rizza    schedule 13.07.2017    source источник


Ответы (2)


Вы можете использовать поисковое выражение, например insource:/\[\[Category:[^\]]{0,32}France]]/. (пример) См. Help:CirrusSearch#Поиск регулярных выражений (ограничение длины подстановочных знаков необходимо, чтобы избежать тайм-аутов).

person Tgr    schedule 14.07.2017
comment
Спасибо за ответ, @Tgr! Я ознакомился с этой страницей документации, но не смог воспроизвести примеры. Я до сих пор не могу справиться с этим. en.wikipedia .org/w/^]]*France]]/ возвращает тайм-аут регулярного выражения. Не могли бы вы привести реальный пример, пожалуйста? - person Ettore Rizza; 14.07.2017
comment
Пожалуйста. - person Tgr; 15.07.2017
comment
Не уверен, как правильно экранировать ссылку в уценке; URL-адрес - https://en.wikipedia.org/w/api.php?action=query&list=search&format=json&srsearch=Lyon+insource:/\[\[Category:[^\]]{0,32}France]]/ (добавлено ограничение длины для части с подстановочными знаками, чтобы избежать тайм-аута регулярного выражения) - person Tgr; 15.07.2017
comment
Этот конкретный запрос не возвращает результатов, но теперь я понимаю логику, поэтому принимаю ваш ответ. +1 за идею сначала запросить Викиданные, хотя я все еще немного боюсь традиционной медлительности конечных точек Sparql. - person Ettore Rizza; 15.07.2017
comment
Гиот какой-то невидимый юникодовый хлам туда замешан. Вот правильный URL запроса. Хотя, как вы можете видеть из результатов, на самом деле это не решает проблему поиска нескольких вещей. - person Tgr; 15.07.2017
comment
Спасибо за ответ, @Tgr. Я вижу, что поиск регулярных выражений очень медленный... Я собираюсь взглянуть на Quarry, который выглядит многообещающе. Еще раз спасибо! - person Ettore Rizza; 15.07.2017

Другой подход, который, вероятно, лучше подходит для вашего варианта использования, заключается в использовании службы запросов Викиданных. Возможности текстового поиска ограничены (но не похоже, что они вам действительно нужны), а синтаксис более сложен (SPARQL + вам нужно получить представление о том, какие соглашения о свойствах есть в Викиданных), но вы можете выразить такие вещи, как «во Франции».

(Для информации наведите указатель мыши на элементы Pxx/Qxx.)

person Tgr    schedule 15.07.2017