Skip to main content

Data set loading and annotation facilities for the Simple Annotation Framework

Project description

SAF-Datasets

Dataset loading and annotation facilities for the Simple Annotation Framework

The saf-datasets library provides easy access to Natural Language Processing (NLP) datasets, and tools to facilitate annotation at document, sentence and token levels.

It is being developed to address a need for flexibility in manipulating NLP annotations that is not entirely covered by popular dataset libraries, such as HuggingFace Datasets and torch Datasets, Namely:

  • Including and modifying annotations on existing datasets.
  • Standardized API.
  • Support for complex and multi-level annotations.

saf-datasets is built upon the Simple Annotation Framework (SAF) library, which provides its data model and API.

It also provides annotator classes to automatically label existing and new datasets.

Installation

To install, you can use pip:

pip install saf-datasets

Usage

Loading datasets

from saf_datasets import STSBDataSet

dataset = STSBDataSet()
print(len(dataset))  # Size of the dataset
# 17256
print(dataset[0].surface)  # First sentence in the dataset
# A plane is taking off
print([token.surface for token in dataset[0].tokens])  # Tokens (SpaCy) of the first sentence.
# ['A', 'plane', 'is', 'taking', 'off', '.']
print(dataset[0].annotations)  # Annotations for the first sentence
# {'split': 'train', 'genre': 'main-captions', 'dataset': 'MSRvid', 'year': '2012test', 'sid': '0001', 'score': '5.000', 'id': 0}

# There are no token annotations in this dataset
print([(tok.surface, tok.annotations) for tok in dataset[0].tokens])
# [('A', {}), ('plane', {}), ('is', {}), ('taking', {}), ('off', {}), ('.', {})]

Available datasets: AllNLI, CODWOE, CPAE, EntailmentBank, STSB, Wiktionary, WordNet (Filtered).

Annotating datasets

from saf_datasets import STSBDataSet
from saf_datasets.annotators import SpacyAnnotator

dataset = STSBDataSet()
annotator = SpacyAnnotator()  # Needs spacy and en_core_web_sm to be installed.
annotator.annotate(dataset)

# Now tokens are annotated
for tok in dataset[0].tokens:
    print(tok.surface, tok.annotations)

# A {'pos': 'DET', 'lemma': 'a', 'dep': 'det', 'ctag': 'DT'}
# plane {'pos': 'NOUN', 'lemma': 'plane', 'dep': 'nsubj', 'ctag': 'NN'}
# is {'pos': 'AUX', 'lemma': 'be', 'dep': 'aux', 'ctag': 'VBZ'}
# taking {'pos': 'VERB', 'lemma': 'take', 'dep': 'ROOT', 'ctag': 'VBG'}
# off {'pos': 'ADP', 'lemma': 'off', 'dep': 'prt', 'ctag': 'RP'}
# . {'pos': 'PUNCT', 'lemma': '.', 'dep': 'punct', 'ctag': '.'}

Using with other libraries

saf-datasets provides wrappers for using the datasets with libraries expecting HF or torch datasets:

from saf_datasets import CPAEDataSet
from saf_datasets.wrappers.torch import TokenizedDataSet
from transformers import AutoTokenizer

dataset = CPAEDataSet()
tokenizer = AutoTokenizer.from_pretrained("gpt2", padding_side="left", add_prefix_space=True)
tok_ds = TokenizedDataSet(dataset, tokenizer, max_len=128, one_hot=False)
print(tok_ds[:10])
# tensor([[50256, 50256, 50256,  ...,  2263,   572,    13],
#         [50256, 50256, 50256,  ...,  2263,   572,    13],
#         [50256, 50256, 50256,  ...,   781,  1133,    13],
#         ...,
#         [50256, 50256, 50256,  ...,  2712, 19780,    13],
#         [50256, 50256, 50256,  ...,  2685,    78,    13],
#         [50256, 50256, 50256,  ...,  2685,    78,    13]])

print(tok_ds[:10].shape)
# torch.Size([10, 128])

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

saf_datasets-0.6.6.tar.gz (29.4 kB view details)

Uploaded Source

Built Distribution

saf_datasets-0.6.6-py3-none-any.whl (35.5 kB view details)

Uploaded Python 3

File details

Details for the file saf_datasets-0.6.6.tar.gz.

File metadata

  • Download URL: saf_datasets-0.6.6.tar.gz
  • Upload date:
  • Size: 29.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.11.5

File hashes

Hashes for saf_datasets-0.6.6.tar.gz
Algorithm Hash digest
SHA256 a257912a301c50201a72ff11e1f128648cfed53cf6d30ece0965e4dfbf21a55c
MD5 b1a53d5c4e96ebf89b09d0d84fc900ab
BLAKE2b-256 8963a0e75dab60e299a609d263a6208d6d3306d2ef61d1daedeff833e0bcfa61

See more details on using hashes here.

File details

Details for the file saf_datasets-0.6.6-py3-none-any.whl.

File metadata

  • Download URL: saf_datasets-0.6.6-py3-none-any.whl
  • Upload date:
  • Size: 35.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.11.5

File hashes

Hashes for saf_datasets-0.6.6-py3-none-any.whl
Algorithm Hash digest
SHA256 6f5f53786a2870f2984cecd188e7d12a45bc28dfbaf27a33d6e3e01538b87b79
MD5 99d8f9c8143971193af7e5c5df8ff880
BLAKE2b-256 aeb0dab424c0f85fba630ea6cc7e5a824227704bd17e47dd40fe46db420f50eb

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page