37.2227, Software: NLP++ and VisualText
The LINGUIST List
linguist at listserv.linguistlist.org
Tue Jun 30 16:05:02 UTC 2026
LINGUIST List: Vol-37-2227. Tue Jun 30 2026. ISSN: 1069 - 4875.
Subject: 37.2227, Software: NLP++ and VisualText
Moderator: Steven Moran (linguist at linguistlist.org)
Managing Editor: Valeriia Vyshnevetska
Team: Helen Aristar-Dry, Mara Baccaro, Daniel Swanson
Jobs: jobs at linguistlist.org | Conferences: callconf at linguistlist.org | Pubs: pubs at linguistlist.org
Homepage: http://linguistlist.org
Editor for this issue: Daniel Swanson <daniel at linguistlist.org>
================================================================
Date: 30-Jun-2026
From: David de Hilster [david at visualtext.org]
Subject: NLP++ and VisualText
NLP++ AND VISUALTEXT
OVERVIEW
NLP++ is a rule-based, knowledge-driven programming language designed
specifically for natural language processing. It was created in 1998
by Amnon Meyers and David de Hilster, based on a cognitive model of
how humans read and understand natural language, and is now in active
development under the NLP Foundation. NLP++ takes a fundamentally
different approach from the statistical and neural methods that
dominate contemporary NLP. Rather than learning patterns from large
training corpora, NLP++ allows developers to encode linguistic and
world knowledge explicitly as rules and conceptual structures,
producing analyzers whose behavior is deterministic, inspectable, and
editable. It is the only computer language exclusively dedicated to
natural language processing. VisualText is the integrated development
environment for NLP++, currently distributed as a Visual Studio Code
extension backed by the NLP Engine, which executes NLP++ analyzers.
NLP++, VisualText, and the NLP Engine are all open source under the
MIT license.
THE NLP++ LANGUAGE
NLP++ is built around the idea that human language understanding
requires both grammatical analysis and access to structured knowledge
about the world. To support this, the language pairs a
pattern-matching rule system with a persistent knowledge
representation facility.
At the parsing level, NLP++ operates over a sequence of tokens
organized into a parse tree. Analyzers are written as a sequence of
passes, each pass applying rules that recognize patterns in the
evolving tree and rewrite, group, annotate, or reduce them. The
architecture combines bottom-up, island-driven, and recursive grammar
methods, elaborating a best-first parse tree. This pass-based design
lets developers build understanding incrementally: early passes might
identify low-level units such as numbers, dates, or noun phrases,
while later passes assemble these into clauses, relationships, and
higher-level semantic structures. Because each pass is a discrete,
human-readable program, the analysis pipeline can be traced step by
step, and any unexpected behavior can be located and corrected at its
source. This transparency contrasts sharply with opaque statistical
models, where the reasons for a particular output are difficult to
recover.
A distinctive feature of NLP++ is its knowledge base, a hierarchical
knowledge base management system called Conceptual Grammar (CG). The
knowledge base stores concepts in hierarchical structures with
attributes and values, allowing analyzers to consult and update world
knowledge during parsing. A rule can check whether a recognized phrase
corresponds to a known entity, retrieve associated attributes, add
newly discovered facts, or build conceptual structures that accumulate
as text is processed. This tight integration of grammar and knowledge
means NLP++ analyzers can perform context-sensitive disambiguation and
information extraction that depends on more than surface form.
Similar to LISP, NLP++ is a loosely-typed language. In addition to
integer, string, and array data types, it includes parse tree and
knowledge base data types, so the user can naturally address rules,
parse trees, and the knowledge base while using C++-like code to embed
heuristics. NLP++ supports what its creators call Concept Oriented
Programming (COP), enabling developers to focus on heuristics, the
domain, and the task rather than the underlying data structures. The
language embraces the irregularities of natural language rather than
abstracting them away, treating each linguistic phenomenon as
something a developer can name, model, and refine.
VISUALTEXT AND THE NLP ENGINE
VisualText is the development environment that makes building NLP++
analyzers practical. Originally a standalone Windows application that
ran for roughly two decades, VisualText is now delivered as an
open-source extension for Visual Studio Code, bringing NLP++
development into a modern, cross-platform editor. Through VisualText,
developers create and organize analyzers, write and edit pass
sequences, manage knowledge bases, and run text through the analysis
pipeline.
A central strength of VisualText is its visualization and debugging
support. Because VisualText supports an interpreted environment,
developers can modify and test analyzers without waiting for code to
compile, accelerating development. After running an analyzer over a
text, developers can inspect the resulting parse tree, examine which
rules fired at each pass, and see how the knowledge base evolved. This
makes the otherwise abstract process of linguistic analysis concrete
and observable, supporting a tight edit-run-inspect development loop.
When an analyzer produces an incorrect result, the developer can
pinpoint the responsible pass and rule and adjust it directly.
The NLP Engine is the runtime that executes NLP++ analyzers. Written
in C++, it runs on Linux, Windows, and macOS, and supports Unicode
(UTF-8 via the ICU C++ package), including emojis. It can be invoked
as a command-line executable, which is how the VS Code extension
drives it, or called directly from C++ or other languages. The engine
and its supporting tools are maintained as open-source projects under
the VisualText organization, and the broader effort is coordinated
through the NLP Foundation.
TEXTBOOK AND TEACHING
A textbook on NLP++, co-authored by David de Hilster and Amnon Meyers,
is being prepared for publication under an Open Access model,
consistent with the language's open-source ethos. The book centers on
a technical description of the NLP++ language, accompanied by example
analyzers illustrating typical uses and guidance on integrating NLP++
analyzers into larger computer systems. It is intended to support
university coursework in rule-based NLP, including a course at RV
College of Engineering (RVCE) in India, and reflects a broader effort
to develop high school and college-level curricula built on NLP++.
APPLICATIONS AND PHILOSOPHY
NLP++ is well suited to information extraction, text analysis, and any
task where precision, explainability, and domain control are
priorities. Applications range from simple syntactic processing to
full natural language understanding. Because knowledge is encoded
explicitly, analyzers can be audited and corrected, an important
property in settings where the rationale behind an output matters or
where training data for a statistical approach is scarce or
unavailable. The philosophy underlying NLP++ is that language
understanding can be approached as an engineering discipline grounded
in explicit knowledge, positioning it as a principled, deterministic
alternative to probabilistic and neural methods.
LINKS
NLP Foundation: https://nlp.foundation
NLP++ and VisualText overview:
https://nlp.foundation/index.php/nlp-and-visualtext/
VisualText website: https://visualtext.org
About NLP++: https://visualtext.org/nlp/
NLP++ textbook: https://book.visualtext.org
VisualText GitHub organization: https://github.com/VisualText
VS Code extension (source): https://github.com/VisualText/vscode-nlp
VS Code Marketplace listing:
https://marketplace.visualstudio.com/items?itemName=dehilster.nlp
NLP Engine (source): https://github.com/VisualText/nlp-engine
Tutorial videos: http://vttutorials.visualtext.org
Community forum: https://nlp.discourse.group
Linguistic Field(s): Computational Linguistics
------------------------------------------------------------------------------
********************** LINGUIST List Support ***********************
Please consider donating to the Linguist List, a U.S. 501(c)(3) not for profit organization:
https://www.paypal.com/donate/?hosted_button_id=87C2AXTVC4PP8
LINGUIST List is supported by the following publishers:
Australian Linguistics Society https://als.asn.au/Home
Bloomsbury Publishing http://www.bloomsbury.com/uk/
Cambridge University Press http://www.cambridge.org/linguistics
Cascadilla Press http://www.cascadilla.com/
De Gruyter Brill https://www.degruyterbrill.com/?changeLang=en
Edinburgh University Press http://www.edinburghuniversitypress.com
European Language Resources Association (ELRA) http://www.elra.info
John Benjamins http://www.benjamins.com/
Language Science Press http://langsci-press.org
Lincom GmbH https://lincom-shop.eu/
MDPI Languages https://www.mdpi.com/journal/languages
MIT Press http://mitpress.mit.edu/
Multilingual Matters http://www.multilingual-matters.com/
Narr Francke Attempto Verlag GmbH + Co. KG http://www.narr.de/
Netherlands Graduate School of Linguistics / Landelijke (LOT) http://www.lotpublications.nl/
Peter Lang AG http://www.peterlang.com
SIL International Publications http://www.sil.org/resources/publications
Wiley http://www.wiley.com
----------------------------------------------------------
LINGUIST List: Vol-37-2227
----------------------------------------------------------
More information about the LINGUIST
mailing list