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
sethass_th_s/e_a
tethkt_th_k/e_e
dek'd_k_'/e_y
thazibth_z_b/a_i
puddp_d_d/u_y
tyjpt_j_p/y_e
gethxg_th_x/e_y
pyfuwp_f_w/y_u
jyx'j_x_'/y_e
'ywd'_w_d/y_o
dytdd_t_d/y_e
bisxb_s_x/i_y
gosijg_s_j/o_i
kajujk_j_j/a_u
peswp_s_w/e_e
dazpd_z_p/a_o
so'zs_'_z/o_y
'idug'_d_g/i_u
thapi'th_p_'/a_i
xulpx_l_p/u_o
dyzbd_z_b/y_y
duxdd_x_d/u_o
sifths_f_th/i_y
sutjs_t_j/u_e
biwagb_w_g/i_a
gikikg_k_k/i_i
zyskz_s_k/y_o
duzdd_z_d/u_o
'edj'_d_j/e_o
dutathd_t_th/u_a
pybudp_b_d/y_u
fokwf_k_w/o_o
sotuds_t_d/o_u
bexixb_x_x/e_i
jexawj_x_w/e_a
lez'l_z_'/e_e
thyklth_k_l/y_o
fuwbf_w_b/u_o
gopizg_p_z/o_i
gisxg_s_x/i_e
lykpl_k_p/y_y
sofuks_f_k/o_u
gabdg_b_d/a_o
sejts_j_t/e_y
te'uft_'_f/e_u
'udul'_d_l/u_u
'yza''_z_'/y_a
diw'd_w_'/i_o
wodthw_d_th/o_e
thybsth_b_s/y_e
xoxpx_x_p/o_o
gylilg_l_l/y_i
begzb_g_z/e_y
xythtx_th_t/y_o
fefixf_f_x/e_i
be'abb_'_b/e_a
zesibz_s_b/e_i
tubitht_b_th/u_i
thydgth_d_g/y_o
solts_l_t/o_y
gylaxg_l_x/y_a
zothisz_th_s/o_i
lopbl_p_b/o_y
betpb_t_p/e_o
tudakt_d_k/u_a
kupaxk_p_x/u_a
pylusp_l_s/y_u
sezuds_z_d/e_u
xadawx_d_w/a_a
tofixt_f_x/o_i
lyzizl_z_z/y_i
zytgz_t_g/y_y
lythiwl_th_w/y_i
gebjg_b_j/e_e
kexkk_x_k/e_y
'alz'_l_z/a_o
zuthibz_th_b/u_i
zujfz_j_f/u_o
kiwfk_w_f/i_o
joxibj_x_b/o_i
xotlx_t_l/o_o
pyjpp_j_p/y_e
lujdl_j_d/u_o
jizajj_z_j/i_a
fydwf_d_w/y_e
go'upg_'_p/o_u
lepuxl_p_x/e_u
jelbj_l_b/e_e
wawdw_w_d/a_y
tytha't_th_'/y_a
zi'u'z_'_'/i_u
gu'ajg_'_j/u_a
thygkth_g_k/y_e
do'add_'_d/o_a
thexzth_x_z/e_e
kawsk_w_s/a_y
xifwx_f_w/i_e
bufikb_f_k/u_i
bykthb_k_th/y_e
dujxd_j_x/u_e

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