Получение всех статей из Википедии о людях

Я пытаюсь найти в Википедии все статьи о людях. В частности, я ищу:

  • только заголовок страницы (и, возможно, идентификатор страницы)
  • статей о людях,
  • разделены по полу (для простоты мужской и женский),
  • из текущей английской Википедии.

Я пробовал несколько вещей, но ни одна из них не сработала:

  • API Википедии позволяет мне искать все страниц в заданной категории. Однако при поиске по категориям «Мужчины» или «Женщины» в основном выбираются страницы подкатегорий, а страницы о реальных людях скрываются ниже по иерархии подкатегорий. Я не могу найти способ автоматического обхода иерархии.

  • PetScan позволяет мне указать глубину иерархии, но время ожидания запросов с глубиной более 3. Также, как Wikipedia API, результаты включают статьи не о людях.

  • Викиданные позволяют мне писать запросы SPARQL для поиска сущностей, имеющих пол «мужской» или «женский». Кажется, этот пример работает, но один раз Я включаю имена сущностей в запрос, время истекает. Кроме того, я не уверен, насколько точно эти данные соответствуют статьям Википедии, гарантированно ли эти данные будут такими же, как и в Википедии?

Как лучше всего достичь того, что я ищу?


person vvye    schedule 03.03.2020    source источник


Ответы (1)


Я создал SPARQL-запрос, выполняющий всю работу. Важно, чтобы запрос был как можно более простым (для оптимизации запроса прочтите: https://www.wikidata.org/wiki/Wikidata:SPARQL_query_service/query_optimization). Вот запрос для SPARQL: https://w.wiki/JhK

Для статей о женщинах это может работать с Wikidata Query Service (WQS), хотя время ожидания истекает. Итак, для мужских статей (их больше) вам нужно добавить LIMIT и пройти через него, добавив увеличивающийся OFFSET. Время ожидания WQS по-прежнему истекает, но есть и другие конечные точки для Викиданных, этот ограничен 100 000 результатов, но работает с увеличением OFFSET: https://wikidata.demo.openlinksw.com/sparql

Результирующий запрос SPARQL выглядит примерно так:

SELECT ?sitelink
WHERE {
  ?item wdt:P21 wd:Q6581097;
        wdt:P31 wd:Q5.
  ?sitelink schema:about ?item;
  schema:isPartOf <https://en.wikipedia.org/>.
} 
LIMIT 100000 OFFSET 100000
person CennoxX    schedule 04.03.2020
comment
@vvye: Сколько времени потребовалось для выполнения этого запроса? - person stackoverflowuser2010; 08.05.2020
comment
@ stackoverflowuser2010 На самом деле я не помню, но прошло не больше минуты. - person vvye; 09.05.2020