Пример #1
0
def detect_genders(results):
    d = gender.Detector(case_sensitive=False)
    genders = []

    for record in results:
        try:
            for name in record['message']['author']:

                name = HumanName(name['given'])

                # Check for people with a first initial rather than a first name
                if name.is_an_initial(name.first):
                    # These people may use a middle name as their given name
                    if len(name.middle) > 1:
                        genders.append(d.get_gender(name.middle))
                else:
                    # Seems like a first name we can process
                    genders.append(d.get_gender(name.first))

        except:
            # No author record - possibly citing an organisation, or invalid DOI
            pass

    return genders
Пример #2
0
print('\n\n\tFound {} references.'.format(len(refs.entries)))
print('\tReferences without a DOI cannot be processed.\n\n')

for ref in refs.entries:
    try:
        doi = url.quote(ref['doi'])
        query = 'https://api.crossref.org/works/{}'.format(doi)
        r = requests.get(query, headers=headers)
        try:
            for author in r.json()['message']['author']:
                name = author['given']
                name = HumanName(name)

                # Check for people with a first initial rather than a first name
                if name.is_an_initial(name.first):
                    # These people may use a middle name as their given name
                    if len(name.middle) > 1:
                        genders.append(d.get_gender(name.middle))
                else:
                    # Seems like a first name we can process
                    genders.append(d.get_gender(name.first))

        except:
            # No author record - possibly citing an organisation, or invalid DOI
            pass

    except:
        # Call to Crossref has failed in a bad way
        pass