Firen Word Generator

Words: (Limit 250)
Show IPA:
Show glosses:
Show old orthography: (Sajem Tan only)
Show original IPA: (Sajem Tan only)
Show Ðab Tan: (Sajem Tan only)
Show Ðab Tan IPA: (Sajem Tan only)
Show ABC notation: (Jafren only)
Show alphabetical notation: (Jafren only)
Datafile:
Root Node:
Show All Options:

WordsGloss
tedtt_d_t/e_o-DIR
esuxolFROM-s_x_l/u_o-DIR
pythjenp_th_j/y_e-LOC
áthikylTO-th_k_l/i_y-DIR
ekilapdFROM-k_l_p/i_a-LOC
ebgethiFROM-b_g_th/y_e-GEN
xujakix_j_k/u_a-GEN
anhti'iTO-t_t_'/y_i-GEN
ewxyfdFROM-w_x_f/y_y-LOC
ex'ugiFROM-x_'_g/o_u-GEN
'efup'_f_p/e_u-DIR
egpygiFROM-g_p_g/e_y-GEN
e'a'uthiFROM-'_'_th/a_u-GEN
antoxTO-d_t_x/o_o-DIR
ejso'FROM-j_s_'/y_o-DIR
ezazyjdFROM-z_z_j/a_y-LOC
eludegiFROM-l_d_g/u_e-GEN
zi'a'z_'_'/i_a-DIR
á'wujTO-'_w_j/y_u-DIR
duwudend_w_d/u_u-LOC
xujlenx_j_l/u_y-LOC
fyfpif_f_p/y_y-GEN
ebladFROM-b_l_d/o_a-DIR
áthzysdTO-th_z_s/y_y-LOC
kufadk_f_d/u_a-DIR
kyzusenk_z_s/y_u-LOC
kyludik_l_d/y_u-GEN
sywatis_w_t/y_a-GEN
álazexiTO-l_z_x/a_e-GEN
ethbyjdFROM-th_b_j/o_y-LOC
guffeng_f_f/u_o-LOC
esasiziFROM-s_s_z/a_i-GEN
anguthykTO-g_th_k/u_y-DIR
áluzytTO-l_z_t/u_y-DIR
zywjiz_w_j/y_e-GEN
angbagdTO-g_b_g/e_a-LOC
efthewFROM-f_th_w/o_e-DIR
lythathl_th_th/y_a-DIR
eja'iwdFROM-j_'_w/a_i-LOC
ezpekdFROM-z_p_k/y_e-LOC
so'fs_'_f/o_e-DIR
ang'yzdTO-g_'_z/e_y-LOC
e'ixalFROM-'_x_l/i_a-DIR
e'ujugdFROM-'_j_g/u_u-LOC
añdo'TO-z_d_'/e_o-DIR
añhsoldTO-s_s_l/e_o-LOC
eb'othdFROM-b_'_th/o_o-LOC
añifasiTO-z_f_s/i_a-GEN
fulujif_l_j/u_u-GEN
etpi'iFROM-t_p_'/o_i-GEN
ájazesTO-j_z_s/a_e-DIR
bysizib_s_z/y_i-GEN
ájfifiTO-j_f_f/o_i-GEN
lolwil_l_w/o_o-GEN
fuwusenf_w_s/u_u-LOC
zu'dz_'_d/u_e-DIR
áki'asdTO-k_'_s/i_a-LOC
dywthd_w_th/y_y-DIR
egidethFROM-g_d_th/i_e-DIR
añpyliTO-z_p_l/e_y-GEN
esdufFROM-s_d_f/y_u-DIR
legthenl_g_th/e_e-LOC
'yxaw'_x_w/y_a-DIR
bufupb_f_p/u_u-DIR
fytagif_t_g/y_a-GEN
elaletFROM-l_l_t/a_e-DIR
ejajiliFROM-j_j_l/a_i-GEN
efikukFROM-f_k_k/i_u-DIR
ekzuthFROM-k_z_th/e_u-DIR
bothfenb_th_f/o_y-LOC
eziduthiFROM-z_d_th/i_u-GEN
anulebTO-d_l_b/u_e-DIR
wa'ulw_'_l/a_u-DIR
ebasizdFROM-b_s_z/a_i-LOC
añudydiTO-z_d_d/u_y-GEN
podgip_d_g/o_e-GEN
ji'uwij_'_w/i_u-GEN
lulpl_l_p/u_e-DIR
xetpix_t_p/e_y-GEN
tektt_k_t/e_o-DIR
ewiwigiFROM-w_w_g/i_i-GEN
wetthiw_t_th/e_y-GEN
áthikagdTO-th_k_g/i_a-LOC
ekuji'dFROM-k_j_'/u_i-LOC
á'dyldTO-'_d_l/y_y-LOC
állogdTO-l_l_g/y_o-LOC
epxifiFROM-p_x_f/o_i-GEN
áwxuwTO-w_x_w/o_u-DIR
edagugdFROM-d_g_g/a_u-LOC
áthkelTO-th_k_l/y_e-DIR
áthbufdTO-th_b_f/y_u-LOC
ezazejFROM-z_z_j/a_e-DIR
elxijiFROM-l_x_j/o_i-GEN
egawa'FROM-g_w_'/a_a-DIR
áfudyjdTO-f_d_j/u_y-LOC
esalibFROM-s_l_b/a_i-DIR
esgethiFROM-s_g_th/o_e-GEN
sixss_x_s/i_o-DIR
ang'yfiTO-g_'_f/e_y-GEN
tokidit_k_d/o_i-GEN

Process returned 0

Utility Functions: Clear, Permalink

Noteworthy nodes in each datafile include:

LanguageDatafile nameRoot nodes (Click a root to generate from it)Remarks
Firensyllables.ymlSentence, Noun, Verb, NominalRoot, VerbalRoot, More information about Firen can be found on the Wiki.
Sajem Tansajemtan.ymlWord, Root, Suffix, UnlikelyWord, UnlikelyRoot, UnlikelySuffix, Sajem Tan is a collaborative conlang. It has a website here.
Englishenglish.ymlSentence, My (possibly poorly-considered) attempt to encode basic English grammar in WordGen. I apologise in advance to anyone who tries to make sense out of it.
Dab vi Suxi Kidapffb.ymlSentence, Word, Compound, Syllable, DVSK is a very simple isolating language that was created as a collaboration between me and 4 other people from the Sajem Tan tribe, however it was abandoned after working out the foundations.
Xanzxanz.ymlword, tricons, root, word1, Another collaborative language in the Sajem Tan universe. It is the source of triconsonantal roots in Sajem Tan.
Jafrenjafren.ymlSentence, Word, ChordL, Chord, Chord1, Chord2, Chord3, Chord4, Chord5, A musical language used in the same setting as Firen. It is currently much less well-developed.
Jokesjokes.ymlGender, Someone on Mastodon posted a silly CFG for making gender jokes, so I encoded it as a WordGen datafile. Nothing more to it.
Numbersnumbers.ymlnumber, phoneNumber, internationalPhoneNumber, This is one of the first files I ever wrote, and it shows. It makes use of outdated and deprecated features of WordGen and made the very questionable choice of using 'val' for a phonetic English reading of the number and 'ipa' for the digits.
TestsCFGs.ymlDyck, binPalindrome, Node, This file exists as a testing ground for things that are too simple to need their own files, and for new or experimental features. You will need to uncrease the recursion depth to use some of these roots, particularly Node or else get a million errors.

Note that CFGs.yml is not allowed on this web interface due to higher resource use than the other files and its reliance on WordGen/Cpp features.

Feel free to look at the sources for WordGen/Py and WordGen/Cpp. wordgen.py is the current version of the script, and syllables.yml is the current version of the Firen data file.

This is the web frontend for a Python program that will produce random words using a (rather nifty) weighted-randomized macro expansion approach. IPA transcriptions are generated from the same file, and are not directly attached to the orthography. This means that "digraph recognition" is not even a concept to worry about.

In a second phase, regular expressions and Mealy-type finite state machines are applied to transform the output.

The Firen datafile is generally quite well-developed, and produces generally good results. The IPA transcriptions are sometimes non-obvious because they include synchronic sound changes, and sometimes unnatural but generally still correct, such as with the overzealous syllabification.

The other datafiles are in various stages of development.

Not that it matters or anything, but unless you provide your own seeds, this web frontend has worse randomness because it is simply using Unix time as the seed. (It's required that the server generates the seed for the permalink to work, and time is the standard easy choice for these things.) When run from the command line without an explicit seed parameter, the randomness is much better (Python seeds its random generator from the system's main entropy source). Maybe I could make this Base64-encode some bytes from /dev/urandom or something for the seed instead, it wouldn't change too much.

Working-1.py is a less flexible earlier (Python 2 only) draft, which technically knows nothing about words, and only generates syllables. You may find it interesting or even useful. syllables1.yml is the data file for that version. The two versions are not compatible, but are mostly similar and a single file could in theory be agnostic between them.

Once this is "done", my next plan is to implement something with Markov chains, the more classical way to generate natural language.

Top