Доступ Sickle к записям OAI в случайном порядке? - PullRequest
0 голосов
/ 09 июля 2019

Я работал с библиотекой Sickle в Python, чтобы получить доступ к записям OAI-PMH из Каталога журналов открытого доступа.Я заметил, что следующий код будет давать похожие, но немного отличающиеся результаты по количеству статей на английском языке из первых 4000 статей, к которым обращался sickle.ListRecords () каждый раз, когда он запускается (хотя ~ 2500-2600 каждый раз).В другом фрагменте кода, который я запускал ранее для извлечения и загрузки полных текстов статей, я заметил, что статьи менялись каждый раз.Кажется, что Серп не захватывает записи OAI каждый раз в одном и том же порядке, что заставляет меня задаться вопросом, захватываются ли они в случайном (ish) порядке?Я новичок в формате OAI, поэтому я не уверен, является ли это (на первый взгляд) случайное упорядочение чем-то, что является свойством того, как обычно хранятся записи OAI, свойством того, как DOAJ может их хранить, или свойствомспособ, которым библиотека Sickle захватывает записи OAI перед размещением их в своем объекте OAIIterator.

from sickle import Sickle
import time
from langdetect import detect

def get_time_estimate():
    sickle = Sickle('https://doaj.org/oai.article')
    records = sickle.ListRecords(metadataPrefix='oai_doaj')
    tot = 0
    num_eng = 0
    start_time = time.time()
    for rec in records:
        tot += 1
        metadata = rec.metadata
        if 'abstract' not in metadata:
            continue
        if 'fullTextUrl' not in metadata:
            continue
        abs = metadata['abstract'][0]
        full = metadata['fullTextUrl'][0]
        language = detect(abs)
        if language == 'en':
            num_eng += 1
        if tot == 4000:
            break
    print("Completed in %.2f seconds" % (time.time() - start_time))
    print("Number of English records: %s" % num_eng)
...