Загрузка дампа викиданных

Я загружаю все географические записи (Q56061) из дампа wikidata json. По данным страницы Викиданные: Статистика, весь дамп содержит около 16 миллионов записей.

При использовании python3.4 + ijson + libyajl2 для анализа файла требуется около 93 часов процессора (AMD Phenom II X4 945 3 ГГц). Использование последовательных онлайн-запросов элементов для 2,3 млн интересующих записей занимает около 134 часов.

Есть ли более оптимальный способ выполнить эту задачу? (возможно, что-то вроде формата pdf openstreetmap и инструмента осмоса)


person QwiglyDee    schedule 12.01.2017    source источник
comment
это странно, в моих экспериментах анализ всего дампа занимает всего несколько часов с процессором 2,5 ГГц. Я извлекал все экземпляры людей вот так: curl https://dumps.wikimedia.org/wikidatawiki/entities/latest-all.json.gz |gzip -d |wikidata-filter --claim P31:Q5 > humans.ndjson. Точно не могу вспомнить, но это заняло определенно меньше 5 часов   -  person maxlath    schedule 12.01.2017
comment
Что это за фильтр викиданных?   -  person QwiglyDee    schedule 12.01.2017
comment
Если фильтр викиданных может фильтровать только по одному утверждению, это неудовлетворительно, потому что территориальные единицы обычно находятся в глубокой иерархии классов (необходимо получить wdt: P31 / wdt: P279 *)   -  person QwiglyDee    schedule 12.01.2017
comment
wikidata-filter github.com/maxlath/wikidata-filter   -  person maxlath    schedule 12.01.2017
comment
что вы используете, чтобы ходить по графику?   -  person maxlath    schedule 12.01.2017
comment
Граф не хожу. Я запросил все классы с помощью службы запросов, а затем отфильтровал их по любому из них. Их более 4000. Итак, фильтр викиданных - это не вариант.   -  person QwiglyDee    schedule 14.01.2017


Ответы (1)


Мой код загрузки и оценки были неправильными.

Использование ijson.backends.yajl2_cffi дает около 15 часов на полный анализ + фильтрацию + сохранение в базе данных.

person QwiglyDee    schedule 12.01.2017