Minimum JDK: 11
Generic word-aware parsing, construction and processing tool for generating sentences based on word types. You can generate random sentences based on defined structure by parsing or constructing a sentence based on word types and generating random output using the parsed structure.
Phonemix transformer is included to convert a word to the way it sounds (based on various algorithms) to allow better search term matching.
- Original compacting algorithm is very loosely based on ideas in Russell Soundex (1918)
- Compacting algorithm designed in 1993 by Alex Chachanashvili for Dada Wallpaper Poem BBS art project (updated in 2004)
- Aggressive algorithm designed in 2017 by Alex Chachanashvili for Dada poem generator and Discord bot, wider search results
- Enhanced algorithm designed in 2021 by Alex Chachanashvili for better rhyming and more accurate search results
Source maintained at: https://github.com/AlexChachanashviliOss/DadaWordEngine
Maven Repository: https://mvnrepository.com/artifact/io.github.achacha/DadaWordEngine
Releases at Maven Repository:
<groupId>io.github.achacha</groupId>
<artifactId>DadaWordEngine</artifactId>
<version>[latest version]</version>
- Support for multiple word sets (WordData)
- Parsing will detect word and its possible type (Sentence)
- Word hyphenation (HyphenData)
- Transformation to phonetic form useful for search and match based on what it sounds like
- Integrated as custom JSP tags for easier dynamic content generation
See /src/main/java/org/achacha/dada/examples
Display phonetic representation forward and reverse:
mvn compile exec:java -Dexec.mainClass="io.github.achacha.dada.examples.PhonemixExample"
Parse sentence, try to determine parts and replace with other random words of same type:
mvn compile exec:java -Dexec.mainClass="io.github.achacha.dada.examples.ParseAndRegenerateSentenceExample"
Reads word/sentence and tries to find a rhyme:
mvn compile exec:java -Dexec.mainClass="io.github.achacha.dada.examples.FindWordsThatRhymeExample"
mvn compile exec:java -Dexec.mainClass="io.github.achacha.dada.examples.RhymeWithSentenceExample"
- Copy TLD file from {this jar}/WEB-INF/tlds to {your webapp resources}/WEB-INF/tlds
- Initialize TagSingleton with WordData and HypenData during container/context initialization
- TagSingleton.setWordData(new WordData("resource:/data/extended2018"));
- TagSingleton.setHypenData(new HyphenData("resource:data/hyphen"));
- Add tags to your JSP page (see provided examples in {this jar}/WEB-INF/*.jsp)
- All data is converted to lower case
- Leading # is used as a comment
- Whitespace is trimmed front and back