Skip to content
This repository has been archived by the owner on May 24, 2023. It is now read-only.


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

The llamapun library contains language and mathematics processing algorithms, used by the KWARC research group.

As of 2022, this repository can be considered in maintenance mode, as no further development is planned.

Build Status API Documentation license version

At its core, llamapun is a Rust implementation that aims at minimal footprint and optimal runtime, in order to safely scale to corpora of millions of documents and tens of billions ot tokens.

llamapun logo

Requires stable rust, starting from rustc 1.34.0 (91856ed52 2019-04-10).


  • Source Data

  • Preprocessing

    • Unicode normalization,
    • Stopwords - based on widely accepted lists, enhanced for STEM texts,
    • Semi-structured to plain text normalization (math, citations, tables, etc.),
    • [TODO #3] Purification of text and math modality (e.g. move trailing dots left in math back into the sentence text),
    • Stemming - adaptation of the Morpha stemmer,
    • Tokenization - rule-based sentence segmentation, and SENNA word tokenization
  • Shallow Analysis

    • Part-of-speech tagging (via SENNA),
    • Named Entity recognition (via SENNA),
    • Chunking and shallow parsing (via SENNA),
    • Extract token models for GloVe,
    • Pattern-matching library for rule-based extraction and/or bootstrapping,
    • Language identification (via whatlang),
    • N-gram footprints
  • Representation Toolkit

    • Document Narrative Model (DNM) addition to the XML DOM
    • XPointer and string offset annotation support
    • [TOPORT] Shared Packed parse forests for mathematical formulas (aka "disjunctive logical forms")
  • Programming API

    • High-level iterators over the narrative elements of scientific documents
    • Zero-cost abstractions over the source data, as well as over linguistic annotations of various granularity.
    • High-throughput parallel processing via rayon, since 0.3.0.
  • Additional included examples


  1. Please remember that all third-party tools (such as the SENNA NLP toolkit) enforce their own licensing constraints.

  2. This Github repository is a successor to the now deprecated C+Perl LLaMaPUn implementation.