is a toolkit for deployable probabilistic modeling, implemented as a software library in Scala. It provides its users with a succinct language for creating relational factor graphs, estimating parameters and performing inference.


The basic use of a graphical model is to perform inference: making predictions about the values of unobserved variables, conditioned on the values of observed variables and the parameters. FACTORIE has implementations of many common inference algorithms based on both belief propagation and MCMC.

Tutorial »


Through a modular specification of inference, optimization, and learning objectives, FACTORIE supports various paradigms for parameter learning for structured prediction and classification tasks. These include maximum likelihood learning, maximum margin learning, learning with approximate inference, SampleRank, pseudo-likelihood, etc.

Tutorial »


Many learning problems are posed as minimizing a sum of losses per training example plus a regularization term. The FACTORIE optimization package provides a modular framework for specifying per-example losses, regularization, online vs. batch optimization, parameter averaging, and parallel processing patterns. It also includes special-case implementations for modern composite minimization and adaptive step size algorithms.

Tutorial »

Natural Language Processing

FACTORIE supplies out-of-the-box tools for natural language processing and information integration such as segmentation, tokenization, part-of-speech tagging, named entity recognition, dependency parsing, mention finding, coreference, lexicon-matching, and latent Dirichlet allocation. The package provides state-of-the-art pre-trained models for many of these tasks.

Get Started »