COVID-19 ve koronavirüs ile ilgili bilimsel makalelere ait tam metinleri ve meta verileri makine tarafından okunabilecek şekilde iyileştirilmiş olarak içeren ve küresel araştırma topluluğunun kullanımına sunulan veri kümesi.
Allen Institute for AI, COVID-19 pandemisiyle mücadelenin bir parçası olarak, COVID-19 ve koronavirüs ailesi hakkında 36.000’den fazla makaleyi de içeren, 47.000’den fazla bilimsel makalenin eksiksiz biçimde yer aldığı ücretsiz bir kaynak olan COVID-19 Açık Araştırma Veri Kümesini (CORD-19) hazırlayıp dağıtmak için önde gelen araştırma gruplarıyla işbirliği yapıyor. Bu kaynağın, küresel araştırma topluluğunun kullanımına sunulması amaçlanıyor.
Bu veri kümesi, bu bulaşıcı hastalığa karşı verilen savaşı desteklemeye yönelik yeni içgörüler oluşturmak amacıyla araştırmacıların son gelişmeleri doğal dil işlemeye uygulaması için onları mobil hale getirmeyi amaçlar.
Yeni araştırmalar, hakemli yayınlarda ve bioRxiv ile medRxiv gibi pek çok arşiv hizmetinde yayımlandıkça bu derleme güncelleştirilebilir.
Lisans Şartları
Bu veri kümesi Allen Institute of AI ve Semantic Scholar tarafından kullanıma sunuldu. CORD-19 Veri Kümesine erişerek, bunu indirerek veya herhangi bir şekilde içeriğini kullanarak bu veri kümesinin kullanımına ilişkin Veri Kümesi Lisansı’nı kabul etmiş olursunuz. Veri kümesindeki ayrı ayrı makalelere yönelik belirli lisanslama bilgileri, meta veri dosyasında yer alır. Ek lisans bilgilerini PMC web sitesinde, medRxiv web sitesinde ve bioRxiv web sitesinde bulabilirsiniz.
Hacim ve Saklama
Bu veri kümesi Json biçiminde depolanır ve son sürümünde 36.000’in üzerinde tam metin makale yer alır. Her sayfa, tek bir JSON nesnesi olarak gösterilir. Şemaya buradan ulaşabilirsiniz.
Depolama Konumu
Bu veri kümesi Doğu ABD Azure bölgesinde depolanır. Benzeşim için Doğu ABD’deki işlem kaynaklarının ayrılması önerilir.
Alıntı
CORD-19 verilerini bir yayına veya yeniden dağıtıma dahil ederken lütfen veri kümesini aşağıdaki gibi alıntılayın:
Kaynakçada:
COVID-19 Açık Araştırma Veri Kümesi (CORD-19). 2020. Sürüm YYYY-AA-GG. COVID-19 Açık Araştırma Veri Kümesi’nden (CORD-19) alınmıştır. Erişim tarihi: DD.MM.YYYY. doi:10.5281/zenodo.3715505
Metinde: (CORD-19, 2020)
İletişim
Bu veri kümesiyle ilgili sorularınız için partnerships@allenai.org ile iletişime geçin.
Bildirimler
MICROSOFT, AZURE AÇIK VERİ KÜMELERİNİ “OLDUĞU GİBİ” SAĞLAR. MICROSOFT, VERİ KÜMELERİNİ KULLANMANIZLA İLGİLİ AÇIK VEYA ÖRTÜLÜ HİÇBİR GARANTİ VEYA TAAHHÜTTE BULUNMAZ. YEREL KANUNLARINIZIN İZİN VERDİĞİ ÖLÇÜDE, MICROSOFT DOĞRUDAN, BAĞLI, ÖZEL, DOLAYLI, TESADÜFİ VEYA CEZA GEREKTİRENLER DE DAHİL OLMAK ÜZERE HERHANGİ BİR HASAR YA DA KAYIPLA İLGİLİ HİÇBİR SORUMLULUK KABUL ETMEZ.
Access
Available in | When to use |
---|---|
Azure Notebooks | Quickly explore the dataset with Jupyter notebooks hosted on Azure or your local machine. |
Select your preferred service:
Azure Notebooks
from azure.storage.blob import BlockBlobService
# storage account details
azure_storage_account_name = "azureopendatastorage"
azure_storage_sas_token = "sv=2019-02-02&ss=bfqt&srt=sco&sp=rlcup&se=2025-04-14T00:21:16Z&st=2020-04-13T16:21:16Z&spr=https&sig=JgwLYbdGruHxRYTpr5dxfJqobKbhGap8WUtKFadcivQ%3D"
# create a blob service
blob_service = BlockBlobService(
account_name=azure_storage_account_name,
sas_token=azure_storage_sas_token,
)
# container housing CORD-19 data
container_name = "covid19temp"
# download metadata.csv
metadata_filename = 'metadata.csv'
blob_service.get_blob_to_path(
container_name=container_name,
blob_name=metadata_filename,
file_path=metadata_filename
)
import pandas as pd
# read metadata.csv into a dataframe
metadata_filename = 'metadata.csv'
metadata = pd.read_csv(metadata_filename)
metadata.head(3)
simple_schema = ['cord_uid', 'source_x', 'title', 'abstract', 'authors', 'full_text_file', 'url']
def make_clickable(address):
'''Make the url clickable'''
return '<a href="{0}">{0}</a>'.format(address)
def preview(text):
'''Show only a preview of the text data.'''
return text[:30] + '...'
format_ = {'title': preview, 'abstract': preview, 'authors': preview, 'url': make_clickable}
metadata[simple_schema].head().style.format(format_)
# let's take a quick look around
num_entries = len(metadata)
print("There are {} many entries in this dataset:".format(num_entries))
metadata_with_text = metadata[metadata['full_text_file'].isna() == False]
with_full_text = len(metadata_with_text)
print("-- {} have full text entries".format(with_full_text))
with_doi = metadata['doi'].count()
print("-- {} have DOIs".format(with_doi))
with_pmcid = metadata['pmcid'].count()
print("-- {} have PubMed Central (PMC) ids".format(with_pmcid))
with_microsoft_id = metadata['Microsoft Academic Paper ID'].count()
print("-- {} have Microsoft Academic paper ids".format(with_microsoft_id))
# choose a random example with pdf parse available
metadata_with_pdf_parse = metadata[metadata['has_pdf_parse']]
example_entry = metadata_with_pdf_parse.iloc[42]
# construct path to blob containing full text
blob_name = '{0}/pdf_json/{1}.json'.format(example_entry['full_text_file'], example_entry['sha']) # note the repetition in the path
print("Full text blob for this entry:")
print(blob_name)
import json
blob_as_json_string = blob_service.get_blob_to_text(container_name=container_name, blob_name=blob_name)
data = json.loads(blob_as_json_string.content)
# in addition to the body text, the metadata is also stored within the individual json files
print("Keys within data:", ', '.join(data.keys()))
from nltk.tokenize import sent_tokenize
# the text itself lives under 'body_text'
text = data['body_text']
# many NLP tasks play nicely with a list of sentences
sentences = []
for paragraph in text:
sentences.extend(sent_tokenize(paragraph['text']))
print("An example sentence:", sentences[0])
# choose a random example with pmc parse available
metadata_with_pmc_parse = metadata[metadata['has_pmc_xml_parse']]
example_entry = metadata_with_pmc_parse.iloc[42]
# construct path to blob containing full text
blob_name = '{0}/pmc_json/{1}.xml.json'.format(example_entry['full_text_file'], example_entry['pmcid']) # note the repetition in the path
print("Full text blob for this entry:")
print(blob_name)
blob_as_json_string = blob_service.get_blob_to_text(container_name=container_name, blob_name=blob_name)
data = json.loads(blob_as_json_string.content)
# the text itself lives under 'body_text'
text = data['body_text']
# many NLP tasks play nicely with a list of sentences
sentences = []
for paragraph in text:
sentences.extend(sent_tokenize(paragraph['text']))
print("An example sentence:", sentences[0])
# get and sort list of available blobs
blobs = blob_service.list_blobs(container_name)
sorted_blobs = sorted(list(blobs), key=lambda e: e.name, reverse=True)
# we can now iterate directly though the blobs
count = 0
for blob in sorted_blobs:
if blob.name[-5:] == ".json":
count += 1
print("There are {} many json files".format(count))
metadata_multiple_shas = metadata[metadata['sha'].str.len() > 40]
print("There are {} many entries with multiple shas".format(len(metadata_multiple_shas)))
metadata_multiple_shas.head(3)
container_name = "covid19temp"
blobs = blob_service.list_blobs(container_name)
sorted_blobs = sorted(list(blobs), key=lambda e: e.name, reverse=True)
import re
dirs = {}
pattern = '([\w]+)\/([\w]+)\/([\w.]+).json'
for blob in sorted_blobs:
m = re.match(pattern, blob.name)
if m:
dir_ = m[1] + '/' + m[2]
if dir_ in dirs:
dirs[dir_] += 1
else:
dirs[dir_] = 1
dirs
import azureml.core
print("Azure ML SDK Version: ", azureml.core.VERSION)
from azureml.core import Dataset
cord19_dataset = Dataset.File.from_files('https://azureopendatastorage.blob.core.windows.net/covid19temp')
mount = cord19_dataset.mount()
import os
COVID_DIR = '/covid19temp'
path = mount.mount_point + COVID_DIR
with mount:
print(os.listdir(path))
import pandas as pd
# create mount context
mount.start()
# specify path to metadata.csv
COVID_DIR = 'covid19temp'
metadata_filename = '{}/{}/{}'.format(mount.mount_point, COVID_DIR, 'metadata.csv')
# read metadata
metadata = pd.read_csv(metadata_filename)
metadata.head(3)
simple_schema = ['cord_uid', 'source_x', 'title', 'abstract', 'authors', 'full_text_file', 'url']
def make_clickable(address):
'''Make the url clickable'''
return '<a href="{0}">{0}</a>'.format(address)
def preview(text):
'''Show only a preview of the text data.'''
return text[:30] + '...'
format_ = {'title': preview, 'abstract': preview, 'authors': preview, 'url': make_clickable}
metadata[simple_schema].head().style.format(format_)
# let's take a quick look around
num_entries = len(metadata)
print("There are {} many entries in this dataset:".format(num_entries))
metadata_with_text = metadata[metadata['full_text_file'].isna() == False]
with_full_text = len(metadata_with_text)
print("-- {} have full text entries".format(with_full_text))
with_doi = metadata['doi'].count()
print("-- {} have DOIs".format(with_doi))
with_pmcid = metadata['pmcid'].count()
print("-- {} have PubMed Central (PMC) ids".format(with_pmcid))
with_microsoft_id = metadata['Microsoft Academic Paper ID'].count()
print("-- {} have Microsoft Academic paper ids".format(with_microsoft_id))
# choose a random example with pdf parse available
metadata_with_pdf_parse = metadata[metadata['has_pdf_parse']]
example_entry = metadata_with_pdf_parse.iloc[42]
# construct path to blob containing full text
filepath = '{0}/{1}/pdf_json/{2}.json'.format(path, example_entry['full_text_file'], example_entry['sha'])
print("Full text filepath:")
print(filepath)
import json
try:
with open(filepath, 'r') as f:
data = json.load(f)
except FileNotFoundError as e:
# in case the mount context has been closed
mount.start()
with open(filepath, 'r') as f:
data = json.load(f)
# in addition to the body text, the metadata is also stored within the individual json files
print("Keys within data:", ', '.join(data.keys()))
from nltk.tokenize import sent_tokenize
# the text itself lives under 'body_text'
text = data['body_text']
# many NLP tasks play nicely with a list of sentences
sentences = []
for paragraph in text:
sentences.extend(sent_tokenize(paragraph['text']))
print("An example sentence:", sentences[0])
# choose a random example with pmc parse available
metadata_with_pmc_parse = metadata[metadata['has_pmc_xml_parse']]
example_entry = metadata_with_pmc_parse.iloc[42]
# construct path to blob containing full text
filename = '{0}/pmc_json/{1}.xml.json'.format(example_entry['full_text_file'], example_entry['pmcid']) # note the repetition in the path
print("Path to file: {}\n".format(filename))
with open(mount.mount_point + '/' + COVID_DIR + '/' + filename, 'r') as f:
data = json.load(f)
# the text itself lives under 'body_text'
text = data['body_text']
# many NLP tasks play nicely with a list of sentences
sentences = []
for paragraph in text:
sentences.extend(sent_tokenize(paragraph['text']))
print("An example sentence:", sentences[0])
metadata_multiple_shas = metadata[metadata['sha'].str.len() > 40]
print("There are {} many entries with multiple shas".format(len(metadata_multiple_shas)))
metadata_multiple_shas.head(3)