Получение всех статей Википедии о людях - PullRequest
0 голосов
/ 04 марта 2020

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

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

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

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

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

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

Каков наилучший способ добиться того, что я ищу?

1 Ответ

0 голосов
/ 04 марта 2020

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

Для женских статей это может работать со службой запросов Wikidata (WQS), хотя время ожидания истекло. Таким образом, для мужских статей (их больше) вам нужно добавить LIMIT и пройти через него, добавив OFFSET. Тайм-аут WQS все еще истекает, но есть другие конечные точки для Wikidata, эта ограничена 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
...