EvaluatedApplications.Prose 1.0.0

dotnet add package EvaluatedApplications.Prose --version 1.0.0
                    
NuGet\Install-Package EvaluatedApplications.Prose -Version 1.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="EvaluatedApplications.Prose" Version="1.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="EvaluatedApplications.Prose" Version="1.0.0" />
                    
Directory.Packages.props
<PackageReference Include="EvaluatedApplications.Prose" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add EvaluatedApplications.Prose --version 1.0.0
                    
#r "nuget: EvaluatedApplications.Prose, 1.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package EvaluatedApplications.Prose@1.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=EvaluatedApplications.Prose&version=1.0.0
                    
Install as a Cake Addin
#tool nuget:?package=EvaluatedApplications.Prose&version=1.0.0
                    
Install as a Cake Tool

Prose

A grammar-driven synthetic corpus generator for .NET. Prose reads plain text through the rules of grammar, keeps what it learns in a HoloDb database, and recombines it into new sentences that are grammatical, use words suited to their slots, and read plausibly. It exists to grow a training corpus: mine the knowledge already in your text, then generate more of it.

It works the way a person who has learned grammar does — find the subject, the verb, which adjectives modify which noun — rather than by pasting fragments together. No word is locked to one role: shoots is a noun after "bamboo" and a verb after "panda", decided by context. The canonical example is Eats, Shoots & Leaves: the comma changes the parse, and the meaning with it.

Pipeline

  1. Parse (rules, zero training). Sentence splitting, a closed-class + morphology + distributional POS tagger, phrase chunking, and role assignment (subject, coordinate finite verbs, objects, copular predicate).
  2. Mine → HoloDb. A lexicon, subject→verb / verb→object / adjective→noun selectional tables, syntax templates and bigrams, written with BulkLoad.
  3. Generate. Sample a clause shape from the mined templates, fill each slot with a word that is the right category, suitable (respects the selectional tables) and plausible, realize it with correct agreement (a/an, subject–verb), and emit only sentences that pass a validity gate (which re-parses each candidate).
  4. Plausibility (optional). A small HoloFormer language model over content-word lemmas ranks candidates so meaning improves while grammar stays guaranteed.
  5. Q&A pairs. Because each generated sentence keeps its role structure (subject / verb / object / predicate), Prose emits reading-comprehension pairs — a context, a question, and the answer derivable from it — as a prompt\ttarget TSV. This includes multi-sentence passages whose sentences reuse the same entities (definite references and pronouns), so questions refer back across the passage and answers require coreference — long-context training data.

Usage

var prose = new ProseEngine();
prose.Mine(@"C:\corpus\text");                 // parse every *.txt and mine it
prose.Save(@"prose.wal");                        // persist the tables to HoloDb (optional)

prose.TrainPlausibility(@"C:\corpus\text");      // optional mini-HoloFormer scorer

foreach (var sentence in prose.Generate(1000))   // new, grammatical, plausible sentences
    Console.WriteLine(sentence);

prose.WriteCorpus(@"C:\corpus\synthetic", 100_000);   // write them out as .txt for an LM
prose.WriteQaPairs(@"C:\corpus\qa", 50_000);           // context+question -> answer, as prompt\ttarget TSV

Parse a single sentence directly:

var p = ProseEngine.ParseSentence("The panda eats, shoots, and leaves.");
Console.WriteLine(ProseEngine.Explain(p));   // subject, verbs, objects, template

License

Proprietary — this package ships the compiled library only; source is not distributed. Every capability in it is free to use. See LICENSE. Copyright (c) 2026 Dongyang Stephen Chen, trading as Evaluated Applications. All rights reserved.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.0 71 8/17/2026