RosaeNLG compared to other NLG software

CoreNLG

CoreNLG is a modern open-source Python NLG library published by Société Générale.

Characteristic CoreNLG RosaeNLG

main

developed in

Python

JavaScript & TypeScript

language for data prep and glue

Python

TypeScript or JavaScript

language for text generation

Python code

Pug templates

output languages

English and French

full support with linguistic ressources for French, English, German, Italian and Spanish

open-souce

yes (Apache 2.0)

yes (MIT)

client side execution (browser)

no

yes

standard / templating features

if / else, switch / case

yes (pure Python)

yes (Pug or JavaScript)

textual functions

yes (Python functions)

yes (Pug mixins)

template based

no (pure Python)

yes (based on Pug)

NLG features

enumerations

yes

yes

capitalization, punctuation, contractions

yes

yes

dates, numbers

yes

yes

anaphora

basic using synonyms

yes

agreement on verbs, adjectives and words

no (has to be done manually)

yes (rules & linguistic ressources)

synonyms with modes

yes (random + draw without replacement)

yes (random + draw without replacement + sequence)

synonyms global optimization

no

yes (per section, generates multiple alternatives and chooses the best one)

ability to spot empty elements

yes

yes

safely record what was said

yes

yes

packaging

as a library

? (to be checked, cannot be found on PyPI)

yes (npm)

command-line interface

no

yes

Docker image

no

yes (distroless)

In summary CoreNLG is just perfect:

  • if you use Python

  • if you do not need sophisticated linguistic features likes anaphora, verbs, words and ajectives agreements

  • if you are not afraid of maintaining texts templates as Python code

RosaeNLG can be better:

  • if you want more readable templates

  • if your NLG project requires linguistic resources

  • if you use Javascript or TypeScript

  • if you wish to make browser side rendering

xSpin

Spin generators are a category of tools that are able to generate a huge quantity of different texts for a same dataset. In general, you define a template with plenty of different paths, and the spinner will randomly go through the template and generate different texts. Spin generators are generally considered as basic pre-NLG software and are quite popular among web redactors. They are generally easier to use than NLG engines.

xSpin is a modern SaaS Spin generator with a visual design tool, and more advanced features than what is generally excepted from a Spin generator.

This comparison has been made in collaboration with Sylvain Deauré, the author of xSpin.

Characteristic xSpin RosaeNLG

Licence

proprietary licence

open-source (MIT)

Pricing

monthly cost €32 excl. tax.

free

Hosting

SaaS only

you can run anywhere, on your laptop, your server or on the cloud, but no SaaS as of today

Integration

API + WordPress plugin + RSS feeds as an input

easy integration for JavaScript or Java, or API

Template definition

nice visual interface, with good overview of structure

templating language based on Pug, no visual editor

Share / reuse elements

yes with modules

yes with mixins

Conditional blocks (if/then/else)

yes

yes

Enumerations

yes (with shuffle ability too)

yes

Linguistic features

no agreements on verbs, words and adjectives

linguistic resources for supported languages

Punctuation management

no

yes

Contractions

yes (automatic capitalization and contractions)

yes

Synonyms with modes

yes (random + specific algo to maximize the distance between outputs)

yes (random + draw without replacement + sequence)

Synonyms global optimization

yes with Qualispin (add on service)

yes (per section, generates multiple alternatives and chooses the best one)

Ability to spot empty elements

yes to a certain extend

yes

Safely record what was said

to a certain extend using variables

yes

In summary xSpin is just perfect:

  • if you do not wish to code and need a visual interface to design your templates

  • if you do not need linguistic features likes anaphora, verbs, words and ajectives agreements

RosaeNLG is be better:

  • if you are ok to write some code

  • if you want to use standard developer tools like VSCode, Git versioning, CI, automated testing etc.

  • if your NLG project requires linguistic resources