# mimno/mallet architecture

> Architecture diagram of the GitHub repository mimno/mallet, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/mimno/mallet
- Repository: https://github.com/mimno/mallet

## Overview

MALLET is a Java toolkit for turning text into machine-learning representations and applying them to classification, clustering, sequence prediction and extraction, topic modeling, embeddings, and regression. A typical workflow starts with input instances, transforms them through reusable pipes, then trains or applies a task-specific model and evaluates its results. The tree and README establish these product areas; sampled code confirms examples such as CRF decoding, classifier training with L-BFGS, topic inference, and embedding training. Several branches are represented at package level because their central implementations were not sampled.

Main entry points: [`src/main/java/cc/mallet/types`](https://github.com/mimno/mallet/tree/master/src/main/java/cc/mallet/types) (Instances and features), [`src/main/java/cc/mallet/fst`](https://github.com/mimno/mallet/tree/master/src/main/java/cc/mallet/fst) (Sequence models), [`src/main/java/cc/mallet/classify`](https://github.com/mimno/mallet/tree/master/src/main/java/cc/mallet/classify) (Classifier training), [`src/main/java/cc/mallet/pipe`](https://github.com/mimno/mallet/tree/master/src/main/java/cc/mallet/pipe) (Text processing pipes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_prep["Data preparation"]
  node_instances["Instances and features"]
  node_pipes["Text processing pipes"]
  node_optimizers["Optimizers"]
end

subgraph group_classify["Classification"]
  node_classifier["Classifier models"]
  node_classifier_train["Classifier training"]
  node_class_eval["Classification evaluation"]
  node_cluster["Clustering models"]
  node_cluster_eval["Clustering evaluation"]
  node_classifier_cli["Classification tools"]
  node_cluster_cli["Clustering tools"]
end

subgraph group_sequence["Sequences and extraction"]
  node_transducers["Sequence models"]
  node_seq_train["Sequence training"]
  node_confidence["Sequence confidence"]
  node_extract["Information extraction"]
end

subgraph group_unsupervised["Unsupervised learning"]
  node_topic_models["Topic models"]
  node_topic_infer["Topic inference"]
  node_embeddings["Word embeddings"]
end

subgraph group_learning["Other learning"]
  node_regression["Linear regression"]
end

node_user(("MALLET user"))

node_user -->|"provides text"| node_pipes
node_pipes -->|"transforms into"| node_instances
node_user -->|"provides vectors"| node_instances
node_instances -->|"training data"| node_classifier_train
node_classifier_train -->|"optimizes parameters"| node_optimizers
node_classifier_train -->|"trains"| node_classifier
node_instances -->|"classifies"| node_classifier
node_classifier -->|"evaluated by"| node_class_eval
node_instances -->|"clusters"| node_cluster
node_cluster -->|"evaluated by"| node_cluster_eval
node_instances -->|"labeled sequences"| node_seq_train
node_seq_train -->|"optimizes parameters"| node_optimizers
node_seq_train -->|"trains"| node_transducers
node_instances -->|"sequence input"| node_transducers
node_transducers -->|"estimates confidence"| node_confidence
node_transducers -->|"produces spans"| node_extract
node_instances -->|"documents"| node_topic_models
node_topic_models -->|"supports inference"| node_topic_infer
node_instances -->|"infers topics"| node_topic_infer
node_instances -->|"trains embeddings"| node_embeddings
node_instances -->|"regression data"| node_regression
node_user -->|"runs commands"| node_classifier_cli
node_user -->|"runs commands"| node_cluster_cli

click node_instances "https://github.com/mimno/mallet/tree/master/src/main/java/cc/mallet/types"
click node_pipes "https://github.com/mimno/mallet/tree/master/src/main/java/cc/mallet/pipe"
click node_optimizers "https://github.com/mimno/mallet/tree/master/src/main/java/cc/mallet/optimize"
click node_classifier "https://github.com/mimno/mallet/tree/master/src/main/java/cc/mallet/classify"
click node_classifier_train "https://github.com/mimno/mallet/tree/master/src/main/java/cc/mallet/classify"
click node_class_eval "https://github.com/mimno/mallet/tree/master/src/main/java/cc/mallet/classify/evaluate"
click node_cluster "https://github.com/mimno/mallet/tree/master/src/main/java/cc/mallet/cluster"
click node_cluster_eval "https://github.com/mimno/mallet/tree/master/src/main/java/cc/mallet/cluster/evaluate"
click node_transducers "https://github.com/mimno/mallet/tree/master/src/main/java/cc/mallet/fst"
click node_seq_train "https://github.com/mimno/mallet/tree/master/src/main/java/cc/mallet/fst"
click node_confidence "https://github.com/mimno/mallet/tree/master/src/main/java/cc/mallet/fst/confidence"
click node_extract "https://github.com/mimno/mallet/tree/master/src/main/java/cc/mallet/extract"
click node_topic_models "https://github.com/mimno/mallet/tree/master/src/main/java/cc/mallet/topics"
click node_topic_infer "https://github.com/mimno/mallet/blob/master/src/main/java/cc/mallet/topics/TopicInferencer.java"
click node_embeddings "https://github.com/mimno/mallet/blob/master/src/main/java/cc/mallet/topics/WordEmbeddings.java"
click node_regression "https://github.com/mimno/mallet/tree/master/src/main/java/cc/mallet/regression"
click node_classifier_cli "https://github.com/mimno/mallet/tree/master/src/main/java/cc/mallet/classify/tui"
click node_cluster_cli "https://github.com/mimno/mallet/tree/master/src/main/java/cc/mallet/cluster/tui"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_instances,node_pipes,node_optimizers,node_user toneBlue
class node_classifier,node_classifier_train,node_class_eval,node_cluster,node_cluster_eval,node_classifier_cli,node_cluster_cli toneAmber
class node_transducers,node_seq_train,node_confidence,node_extract toneMint
class node_topic_models,node_topic_infer,node_embeddings toneRose
class node_regression toneIndigo
```

## Components

### Data preparation

- [Instances and features](https://github.com/mimno/mallet/tree/master/src/main/java/cc/mallet/types): `src/main/java/cc/mallet/types`
- [Text processing pipes](https://github.com/mimno/mallet/tree/master/src/main/java/cc/mallet/pipe): `src/main/java/cc/mallet/pipe`
- [Optimizers](https://github.com/mimno/mallet/tree/master/src/main/java/cc/mallet/optimize): `src/main/java/cc/mallet/optimize`

### Classification

- [Classifier models](https://github.com/mimno/mallet/tree/master/src/main/java/cc/mallet/classify): `src/main/java/cc/mallet/classify`
- [Classifier training](https://github.com/mimno/mallet/tree/master/src/main/java/cc/mallet/classify): `src/main/java/cc/mallet/classify`
- [Classification evaluation](https://github.com/mimno/mallet/tree/master/src/main/java/cc/mallet/classify/evaluate): `src/main/java/cc/mallet/classify/evaluate`
- [Clustering models](https://github.com/mimno/mallet/tree/master/src/main/java/cc/mallet/cluster): `src/main/java/cc/mallet/cluster`
- [Clustering evaluation](https://github.com/mimno/mallet/tree/master/src/main/java/cc/mallet/cluster/evaluate): `src/main/java/cc/mallet/cluster/evaluate`
- [Classification tools](https://github.com/mimno/mallet/tree/master/src/main/java/cc/mallet/classify/tui): `src/main/java/cc/mallet/classify/tui`
- [Clustering tools](https://github.com/mimno/mallet/tree/master/src/main/java/cc/mallet/cluster/tui): `src/main/java/cc/mallet/cluster/tui`

### Sequences and extraction

- [Sequence models](https://github.com/mimno/mallet/tree/master/src/main/java/cc/mallet/fst): `src/main/java/cc/mallet/fst`
- [Sequence training](https://github.com/mimno/mallet/tree/master/src/main/java/cc/mallet/fst): `src/main/java/cc/mallet/fst`
- [Sequence confidence](https://github.com/mimno/mallet/tree/master/src/main/java/cc/mallet/fst/confidence): `src/main/java/cc/mallet/fst/confidence`
- [Information extraction](https://github.com/mimno/mallet/tree/master/src/main/java/cc/mallet/extract): `src/main/java/cc/mallet/extract`

### Unsupervised learning

- [Topic models](https://github.com/mimno/mallet/tree/master/src/main/java/cc/mallet/topics): `src/main/java/cc/mallet/topics`
- [Topic inference](https://github.com/mimno/mallet/blob/master/src/main/java/cc/mallet/topics/TopicInferencer.java): `src/main/java/cc/mallet/topics/TopicInferencer.java`
- [Word embeddings](https://github.com/mimno/mallet/blob/master/src/main/java/cc/mallet/topics/WordEmbeddings.java): `src/main/java/cc/mallet/topics/WordEmbeddings.java`

### Other learning

- [Linear regression](https://github.com/mimno/mallet/tree/master/src/main/java/cc/mallet/regression): `src/main/java/cc/mallet/regression`

### Other components

- **MALLET user**

## Connections

- MALLET user → Text processing pipes: provides text
- Text processing pipes → Instances and features: transforms into
- MALLET user → Instances and features: provides vectors
- Instances and features → Classifier training: training data
- Classifier training → Optimizers: optimizes parameters
- Classifier training → Classifier models: trains
- Instances and features → Classifier models: classifies
- Classifier models → Classification evaluation: evaluated by
- Instances and features → Clustering models: clusters
- Clustering models → Clustering evaluation: evaluated by
- Instances and features → Sequence training: labeled sequences
- Sequence training → Optimizers: optimizes parameters
- Sequence training → Sequence models: trains
- Instances and features → Sequence models: sequence input
- Sequence models → Sequence confidence: estimates confidence
- Sequence models → Information extraction: produces spans
- Instances and features → Topic models: documents
- Topic models → Topic inference: supports inference
- Instances and features → Topic inference: infers topics
- Instances and features → Word embeddings: trains embeddings
- Instances and features → Linear regression: regression data
- MALLET user → Classification tools: runs commands
- MALLET user → Clustering tools: runs commands
