Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Frequently Asked Questions
Welcome to the RiTa FAQ!
- What is RiTa?
- Why is it called RiTa?
- How do I install RiTa for ...?
- On what platform/language/environment can I use RiTa?
- Does RiTa use machine learning techniques?
- But wouldn’t machine-learning approaches be better?
- What does RiTa's heuristic approach mean for the toolkit?
- Are there any simple tutorials I can go through?
- Are there any simple examples I can see?
- Where can I find other works using RiTa?
- How to build RiTa from source?
- How do I build the documentation?
- What is the usual workflow for developers?
- How should I setup my development environment?
- How do I test a new release?
What is RiTa?
RiTa is a software toolkit for computational or generative literature. It provides tools for artists and writers working with natural language in programmable media. It is free/libre and open-source, and is designed to be simple while still enabling powerful features: context-free grammars, n-grams, conjugation, tokenization, pluralization, feature-analysis (part-of-speech, phonemes, stresses), etc.
Why is it called RiTa?
The name comes from the old Norse, meaning to mark, scratch, or scribble.
On what platform or language or environment can I use RiTa?
Does RiTa use machine learning techniques?
No. RiTa is a set of heuristic solutions to a constrained set of natural language tasks. Each algorithm has been hand-crafted to handle the specific complexities of English (by myself or by one of the many authors I've borrowed from). During the years of writing and improving the library, I've learned a great deal about these complexities and continue to understand the English language (and context-sensitive languages in general) in ways I would not have predicted.
What does RiTa's heuristic approach mean for the toolkit?
The short answer is that the library will remain small, fast, and perhaps most importantly, transparent -- it should be relatively clear to other coders what it is doing and why. On the other hand, it will be difficult (though not impossible) to extend to other languages, as this would require extensive knowledge of both the target language and the RiTa code itself. Finally there are tasks for which no good heuristic solutions have been found (this is both a shortcoming and an opportunity), and as such they are absent in the toolkit.
But wouldn’t machine-learning (ML) approaches do better?
Yes, ML techniques may well be more successful at some of the specific tasks performed by RiTa. However, as an author I am not only interested in performance. I want RiTa to be approachable (and understandable) for as large and diverse a set of users as possible. I also want it to run in as wide a range of environments as possible, including the browser, which is still the best way we have of quickly sharing work. Perhaps more importantly, I would argue that creative tools should not only be useful, but should help us to better understand the domain in which we work. For RiTa, this means that users and developers should also always be learning about aesthetically-oriented language, not only about neural networks or optimization. The most successful ML models, thus far at least, have been able to tell us very little about the domain under investigation.
How should I setup my development environment?
- Download and install Eclipse for Java.
- In the Eclipse menu, select 'File' > 'Import...'
- In the 'Import Window' select 'Git' > 'Projects from Git', then press Next.
- Select 'Clone URI' > then Next and copy and paste the 'HTTPS clone URL' https://github.com/dhowe/RiTa.git from RiTa's Github page into the URI field.
- Press Next to proceed with the default master branch or (optionally) configure the project directory.
- Press Next and select 'Import existing projects' to finish.
- Right click on 'pom.xml' from RiTa root directory in Package Explorer panel in Eclipse and select 'Run as' > 'Maven install'.
- (If you are also working on RiTaJS) In terminal, run
ln -s /path/to/ritajs jsfrom rita folder. An alias of RiTaJS will be created in your rita folder. If you have it right, when you build, it should say:
[echo] Checking for rita.js... [echo] "RiTaJS found..." include.js: [echo] Copying js files ...
How to build RiTa from source?
In the Eclipse menu, select 'Window' > 'Show View' -> 'Ant
Click the 'Add buildfile' button to add a buildfile in the newly added Ant panel, and navigate to RiTa/resources/build.xml
Click to expand the 'RiTa' menu and reveal the various tasks, then double-click 'build' (or run $ cd RiTa/resources && ant build from the terminal)
(Optional) Ignore this step if you are on Mac or step 9a to c if you are on Windows, install ant and use cygwin to run the command
$ cd RiTa/resources && ant build.
When the build is complete, project resources can be found in RiTa/dist
How do I build docs?
You can build the docs either by running
$ cd RiTa/resources && ant build or
$ cd RiTa/resources && ant make.docs.
What is the usual workflow for developers?
Working on Known issues
The most common task is working on a test case in KnownIssues-tests.
In most of the cases, the same issue is valid for both JAVA and JS. You can start fixing the issue either from JAVA or JS, and make sure to make the same changes later to the other one.
After fixing the issue, please remove the test case from KnownIssues-tests and place it to a proper location in another corresponding test file.
Working on rita dictionary
Please always change the dictionary in
You can update the changes to JAVA by running
scripts/update-dict.sh in RiTa
How do I test a new release?
- Step carefully through all 'quickstart' installation [instructions] (http://rednoise.org/rita/quickstart.php)
- Go through WordNet README file
- Go through Android README file
- Run each of the RiTa examples on each of the platforms:
- In the browser with dom (Chrome/Firefox)
- In the browser with p5.js
- Test 'Analysis' and 'RandomRhymes' examples with no lexicon, using rita.js, rather than rita-full.js and verify that the correct warning message is shown
- In Processing
- In Processing for Android (Ignore the example: ReplaceableWriting for Android tests)
- As a standalone Java program (jar)
- As a standalone Android app (jar)
Pay attention to any error or warning message during the process:
Install RiTa via
npm installand test instructions on npm README page
- Test the npm/runkit example here: https://runkit.com/npm/rita
- Test RiTa In the browser via browserify instructions
- Download from the library tool within the Processing IDE
- Check that processing library tool is prompting for update if older rita exists
- Verify the version # on RiTa downloads page
- Verify 3 new versions (6 including minified) exist on RiTa downloads
- Verify the existence and version # of the RiTa lib on cdnjs
- Verify the existence and version # of the rita.txt file on rednoise
- Verify that both download links work: rita.zip and RiTa.zip
Testing RiTa website
- Check and fix errors in the console tab of developer tools for each page
- Check links (with a link-checker) and fix any errors