AllenNLP

raw JSON →
2.10.1 verified Fri May 01 auth: no python maintenance

An open-source NLP research library built on PyTorch, providing flexible abstractions for building and training deep learning models. Current version is 2.10.1 (stable, maintenance mode). Release cadence: irregular, with minor releases every few months.

pip install allennlp
error ModuleNotFoundError: No module named 'allennlp.common'
cause Importing from incorrect package path or missing installation.
fix
Use correct import path: e.g., 'from allennlp.common import JsonDict'. Ensure package installed: pip install allennlp.
error RuntimeError: Expected all tensors to be on the same device, but found at least two devices
cause Moving model/data between CPU and GPU incorrectly.
fix
Use 'model = model.cuda()' or 'model.to(device)' before training, and ensure tensors are moved similarly.
error ImportError: cannot import name 'AllenNlpModel' from 'allennlp.models'
cause Outdated import style from pre-2.0 versions.
fix
Use 'from allennlp.models import Model' instead.
error AttributeError: 'AllennlpDataset' object has no attribute 'to_torch_dataset'
cause Using deprecated dataset API.
fix
Use 'allennlp.data.DataLoader' and 'allennlp.data.Vocabulary' directly (see updated examples).
breaking AllenNLP 2.0+ removed the old 'allennlp.commands' and many APIs changed. Projects using AllenNLP <1.x will not work.
fix Migrate to new API (see migration guide: https://github.com/allenai/allennlp/blob/main/CHANGELOG.md)
deprecated The 'allennlp.data.DatasetReader' abstract class is being phased out in favor of 'allennlp.data.dataset_readers' concrete classes. Custom readers may need updates.
fix Inherit from 'allennlp.data.dataset_readers.DatasetReader' instead.
gotcha Installing allennlp from pip may pull incompatible PyTorch versions. Always ensure torch matches your system.
fix Install PyTorch first from pytorch.org, then pip install allennlp (without torch dependency).
pip install allennlp[all]

Minimal model example demonstrating class structure and forward pass.

import torch
from allennlp.common import JsonDict
from allennlp.data import Instance
from allennlp.data.fields import TextField
from allennlp.data.token_indexers import SingleIdTokenIndexer
from allennlp.data.tokenizers import SpacyTokenizer
from allennlp.models import Model
from allennlp.modules.text_field_embedders import BasicTextFieldEmbedder
from allennlp.modules.token_embedders import Embedding
from allennlp.nn import util

# Example: simple text classifier (not runnable without training data)
class SimpleClassifier(Model):
    def __init__(self, vocab, embed_dim=10):
        super().__init__(vocab)
        self.embedder = BasicTextFieldEmbedder({"tokens": Embedding(embedding_dim=embed_dim, num_embeddings=vocab.get_vocab_size('tokens'))})
        self.linear = torch.nn.Linear(embed_dim, vocab.get_vocab_size('labels'))

    def forward(self, text, label=None):
        embedded = self.embedder(text)
        logits = self.linear(embedded)
        output = {"logits": logits}
        if label is not None:
            output["loss"] = torch.nn.functional.cross_entropy(logits, label)
        return output

print("AllenNLP ready.")