Artificial Language Generator

Published on 10 April 2022 at 23:36

"A language is not just words. It's a culture, a tradition, a unification of a community. A whole history that creates what a community is. It is all embodied in Language" - Noam Chomsky

 

While in deference to Noam Chomsky I am sure this is true in humans I cannot be sure that it is true when discussing the artificial language generator I am about to discuss. This isn't word generation but generating the principles around a whole language and then words.

In essence, we are trying to do what Tolkien did with Elvish or Star Trek did with Klingon we are going to create a Conlang generator. This piece of code that I will walk you through will produce a fake language that is just pronounceable enough that geeks can speak it at a convention.  Or at least that is the aim.

I am not going to lie sometimes you get a language like this... but by and large, that is relatively rare and I recommend if you use this you provide the option to set seed.

 

 

Introduction

 

Ok so it is pretty variable but for some reason, the idea hit home with me for mass-producing fantasy languages for a game idea. There is a technical problem that game developers have with data. You can code up the functions that run a game process and create units, cities, weapons, etc all the things you want in your game. Then you expected to come up with names are the units "Elves" or "Orcs" are the cities "Elf Home" or "Mordor".

The creation of all these naming conventions generates a fair amount of data that then needs to be managed put into code so usually, you end up coding one function that creates a unit and calls it "orc" and another and calls it "elf" sometimes this is so nakedly uncreative its the same stats. If the code base grows exceptionally large, you usually have to generate files, CSVs, and databases that can be loaded in and out of memory to incorporate these different elements. 

There is an alternative to using procedural generation to produce random words and even whole worlds. There is an upside to this as well in that currently a lot of fantasy and Sci-Fi are quite derivative. What does it say about a species when the genre called fantasy is filled with white blonde elves fighting ugly orcs. Does no one seem to ask why are there no fat elves?

And I honestly think it should be pointed out in Tolkien's original works elves are a race of immortal spirits from the land beyond and the orcs are implied to be tortured and abused elves because Sauron being evil could not create only corrupt; a running theme of Tolkien's being that evil cannot create anything new or anything that requires creativity.

Add to this that Tolkien was also a linguist. He created a whole language Elvish and a few of his characters are derivative of normal Anglo Saxon naming and linguistic convention. So it is in that vein I present a computer program that produces a language. Below I have generated a few samples before I go into the nitty-gritty of how it is built. 

 

Samples

 

Language 1: Seems simple..

 

words
['koxa', 'niiko', 'kosa', 'sanii', 'zozo', 'xasa', 'konii', 'xaze', 'konii', 'zezo', 'xanii', 'sapoo', 'xati', 'koko', 'xaxa', 'zeti', 'xaxa', 'kosa', 'koti', 'zaza', 'poolaa', 'titi', 'sazo', 'xaza', 'zonii', 'tixa', 'niixa', 'tisa', 'zoza', 'saze', 'zeza', 'zoza', 'pooko', 'laanii', 'laako', 'sani', 'zezo', 'poozo', 'kopa', 'tinii', 'zapoo', 'zaza', 'zeko', 'xeze', 'xeze', 'pazo', 'xaze', 'zepoo', 'xeti', 'tiza']


names
['kito saki', 'poni xezo', 'papi xasa', 'koxa konii', 'pale xeko', 'pixo tilaa', 'pale zeke', 'kito tixe', 'papi zako', 'poni kiki', 'paxi zeko', 'pixo pooxa', 'lexo tiza', 'xaxa kexe', 'pixo poozo', 'koto xexa', 'paxi niinii', 'papi nini', 'papi tipoo', 'kina kozo', 'pale keki', 'kona niipa', 'paxi xapa', 'paxa tize', 'pixo kono', 'paxa nizo', 'nopa niiko', 'nopa zono', 'paxi zoze', 'koxa zoze', 'koxa saze', 'koxa kinii', 'nopa laake', 'paxa zexe', 'xaxa koti', 'lexo kipa', 'papi kipa', 'kona xeza', 'kito xepoo', 'poni pooxe', 'lexo koni', 'papi pooza', 'xaxa laapa', 'koto laapa', 'noni zoxa', 'kina xeki', 'lexo zoni', 'kona saxe', 'paxi sake', 'koxa zaxe']

 

Language 2: Is it just me but the use of a Z always makes a language feel more "Russian". Ironic given as it's not a part of the Cyrillic alphabet. I can easily Zramkkem is the place where the local warlocks come from.

 

words
['nnomzeim', 'kkem', 'zramppam', 'zeim', 'zramkkem', 'zramkkem', 'ssom', 'ppam', 'ssomppam', 'zeimkkem', 'ssom', 'zeim', 'nsom', 'zramzram', 'zramnsom', 'zromzrom', 'ppam', 'smam', 'zeimnsom', 'nsom', 'zzamssom', 'nnim', 'kkemzeim', 'zromssom', 'nsom', 'zrom', 'nnom', 'zzemssom', 'nnimkkem', 'nsomppam', 'nnimzzem', 'siem', 'zeim', 'zeimsiem', 'zeim', 'smamnsom', 'siemnsom', 'nnomzrom', 'zramzram', 'smamnnom', 'nsomsiem', 'smamssom', 'ppamzeim', 'ppem', 'zrimzeim', 'zrim', 'ssim', 'nsomzzem', 'smamnsom', 'zeimknam']


names


['pmimkas ppamsmam', 'ssimnam ssimsrom', 'zmomkes knam', 'komsmem nnim', 'ssimnam nnim', 'smemkes zramzzam', 'namsnim ppamnsom', 'komzmom zrimsiem', 'messrim zromsrom', 'komssim zrom', 'pmimkes zmom', 'komsmem ssamzram', 'messrim siem', 'pmimkas zrim', 'pmimkas zrim', 'keskpam zrim', 'snimkas kkem', 'zmomkes kkem', 'pmimkas kkem', 'komsmem knamnnim', 'smemkes nnomssam', 'kkomkes nnomssam', 'ssimnam zromnnom', 'messrim ssimzeim', 'komsmem smomppam', 'smemkes zram', 'smemkes zram', 'keskmom zram', 'komsmem nsomsiem', 'pmimkes nsomsiem', 'keskpam ssamsrom', 'snimkas ssimppem', 'keskmom ziimssom', 'kmommes smamziim', 'namsnim ssimzzem', 'kaskpam ssim', 'messrim smom', 'ssimnam zzamppam', 'keskpam nsom', 'kkomkes nsom', 'smemkes siemppam', 'komsmem nnom', 'namsnim zramzrom', 'snimkas nnimzrom', 'komsmem zeimzzam', 'namsnim ssomzeim', 'zmomkes ssomppam', 'kkomkes zzamsiem', 'keskpam zzamsiem', 'kaskpam zzem']

 

Language 3: You can see the languages manage to feel somewhat consistent through a few tricks as will see below, 

 

words


['nislni', 'nikoll', 'kell', 'llsl', 'nillni', 'kekeni', 'llni', 'konill', 'koll', 'niniko', 'slsl', 'slllni', 'nill', 'koko', 'konisl', 'nislko', 'nikoll', 'nikokl', 'kenini', 'nill', 'klsl', 'niko', 'klll', 'llsl', 'slllll', 'nini', 'slke', 'konlni', 'llko', 'kesllll', 'lllnlsl', 'koll', 'slko', 'sllniko', 'nlll', 'nlko', 'llllllnl', 'nlnlke', 'kekoni', 'klslll', 'lllnike', 'nlsll', 'niko', 'lllkl', 'plllll', 'slsll', 'slklnl', 'plllsl', 'llnl', 'lllllni']


names


['klpa nilll', 'sekl kllslke', 'nenl konl', 'nlse nlnlko', 'pakl llllnl', 'pllll sllll', 'lllki slsll', 'lllki kllllke', 'klpl nllll', 'plne kenikll', 'klpl plllkesll', 'kanl klsl', 'pllll sllnlni', 'nenl plllnl', 'kepa llplll', 'pllll nllllni', 'kepa nlllke', 'lllki slplllni', 'nenl klllll', 'sakl klkll', 'kanl llkll', 'sekl kllsl', 'pakl kllkll', 'klpl nikoko', 'nlse kolll', 'plne lllkll', 'kanl nikell', 'pape lllplll', 'kepa niplllsll', 'kanl sllkllkll', 'nenl kokll', 'kepa niplllnl', 'kepl plllkoll', 'kepl plllplllplll', 'sakl plllplllsll', 'plne sllkolll', 'kepa keklke', 'saka llnlplll', 'pekl kllnlkll', 'klpa sllko', 'nlse klniplll', 'kepl sllkl', 'kepa plllplll', 'mlkl lllllsll', 'pakl lllslplll', 'plne slll', 'kanl nlkeko', 'saka lllllplll', 'pekl kllko']

Language 4: And to show that sometimes you can get away with long words. I am not sure with the below if this one manages that. 

 

words


["dwowshtd'diw'wmnoew'wt", "d'dewakk'kew'wk", "noew'wtt'tewshmk'kew'wk", "d'dewakdwowshtd'diw'wm", "d'dewaknoew'wt", "noew'wtd'diw'wmt'tewshm", "t'tewshmd'dewakd'diw'wm", "d'dewakk'kew'wkd'diw'wm", "k'kew'wknoew'wtkshewdk", "d'dewakt'tewshm", "d'diw'wmt'tewshmk'kew'wk", "k'kew'wkdwowshtnoew'wt", "noew'wtdwowshtd'dewak", "t'tewshmkshewdkd'diw'wm", "d'dewakkshewdkt'tewshm", "kshewdknoew'wt", "d'dewakdwowsht", "d'dewakdwowshtk'kew'wk", "d'diw'wmd'dewakdwowsht", "d'dewakt'tewshmnoew'wt", "noew'wtk'kew'wk", "dwowshtd'diw'wm", "d'dewakt'tewshmnoew'wt", "d'diw'wmd'dewak", "t'tewshmdwowsht", "k'kew'wkdwowshtkshewdk", "d'diw'wmk'kew'wk", "dwowshtd'diw'wm", "dwowshtkshewdklshew'wk", "l'lewtkl'lewtk", "dwowshtk'kew'wk", "d'dewaknoew'wtd'diw'wm", "k'kew'wkl'lewtkd'dewak", "dwowshtk'kew'wk", "kshiwt'tliow'wkkshewdk", "kshiwt'tl'lewtkd'diw'wm", "liow'wknoew'wtt'tewshm", "noew'wtd'diw'wmd'diw'wm", "kshewdknoew'wtkshiwt't", "k'kew'wknoew'wtt'tewshm", "liow'wkk'kew'wklshew'wk", "l'lewtkd'dewak", "d'diw'wmd'dewak", "d'dewakd'dewak", "k'kew'wkt'tewshmk'kew'wk", "noew'wtk'kew'wk", "kshiwt'tnoew'wtliow'wk", "d'dewakkshewdkl'lewtk", "lshew'wklshew'wkt'tewshm", "kshiwt'tk'kew'wkd'dewak"]


names


["frau pansshdos kshewdknoew'wtkwow'wk", "frau mokswmosh d'diw'wmd'dewakt'tew'wn", "herr sess'smos d'diw'wmliow'wk", "frau mokswmosh lshew'wkkshewdk", "herr meps'sdash t'tewshmkshewdk", "herr seks'smosh dwowshtdwowsht", "frau spkishpan t'tew'wnkshewdklshew'wk", "frau pans'sdos d'dewakdwaw'wpkshewdk", "frau slkaskip d'dewakdwowshtkshewdk", "herr meps'sdash kshewdkl'lewtk", "herr sesswkis liow'wkkshiwt't", "frau moks'stas liow'wkkshewdk", "herr sesswkis lshew'wkd'dewak", "herr mepsidosh t'tew'wnkshewdk", "frau pansshdos noew'wtk'kew'wkl'lewtk", "frau pansshdos k'kew'wkdwaw'wpl'lewtk", "herr seks'smosh t'tew'wnkwow'wk", "herr meps'sdash lshew'wkd'diw'wm", "frau mokswmosh lshew'wkdwaw'wp", "frau panswses l'lewtknoew'wtt'tewshm", "herr sess'smos k'kew'wkkwow'wkdwowsht", "frau pans'sdos lshew'wknoew'wtnoew'wt", "herr sesswkis kshewdkdwowshtliow'wk", "frau pans'sdos t'tew'wnd'dewakt'tewshm", "herr sameshsek dwaw'wpt'tewshm", "frau slkaskip kwow'wkd'diw'wm", "frau panswses liow'wknoew'wt", "frau spkishpan kshewdklshew'wk", "frau panswses d'dewakdwaw'wp", "frau pansshdos lshew'wkkwow'wk", "herr sess'smos kwow'wkt'tewshm", "herr sameshsek dwaw'wpk'kew'wk", "herr smtassek noew'wtdwaw'wpd'dewak", "frau slkaskip t'tewshml'lewtkd'dewak", "herr meps'sdash lshew'wknoew'wtkshiwt't", "frau panswses t'tew'wnt'tew'wn", "herr meps'sdash dwaw'wpkshewdk", "frau pans'sdos l'lewtkt'tewshm", "herr sess'smos kshiwt'tnoew'wtliow'wk", "herr smtassek kshewdkkshewdkk'kew'wk", "frau panswses l'lewtkdwaw'wpkwow'wk", "herr mepsshsis l'lewtknoew'wtlshew'wk", "frau slkaskip lshew'wkk'kew'wk", "herr meps'sdash lshew'wkk'kew'wk", "herr sesswkis kwow'wkliow'wkdwowsht", "herr smtassek kwow'wkkwow'wkkshewdk", "frau panswses d'diw'wmd'diw'wmlshew'wk", "frau slkaskip l'lewtkkshiwt't", "frau slkaskip kwow'wkt'tew'wnk'kew'wk", "herr seks'smosh k'kew'wkdwaw'wp"]

 

Comments

 

Though perhaps it benefits from being seen in context. The trick here is to create it so it is just about pronounceable. The below is randomly generated and then added on top of a map at a random place. Though your brain is trying to tell you there the place names. If you were particularly imaginative you may start even filling in details.

Is Lomona a democracy? What race exists at Komimama? What is the current tax policy in Nisimako? (maybe not that last one). In this, there is the trick that procedural generation brings to fantasy I only have to insist that the funny word is a place and talk about it consistently. I reckon as it stands just giving a random name is a bit cheap but if I started using it consistently so I start telling you the evil Lich lives in Lomona and resisted by the valiant Ninipeninl kingdom and keep adding layers you'd buy into it.

There is a downside to this if it generates something like Mini as a place name a user may make expectations back from the language they know and rather than increasing immersion, it might break it. I did at one point generate a language where a fairly common morpheme (a common sound fragment within the language) was "poo". Now I am not a 13-year-old child and I doubt you are either but I am sure given enough randomness someone would find something somewhere that offends them; some people seem to actively seek this...sighs.

Therefore that's the second part of the Random Language Generator it also is a database and when new words are generated it records a translation table back into English. I intend to keep this method by tracking relationships and building meanings we can add this as a back-end table to any game or system development of the back of the work.

Though I am getting ahead of myself. The below shows how effective this can be just creating a rando work and adding it to a label of a fantasy location the brain has a tendency to fill in the blanks and this is what we are exploiting with the translation programme two principles.

 

1) Make it sort of pronounceable by enforcing a few rules.

2) Be consistent when breaking those rules.

 

 

A Guide Through Made Up Linguistics

 

So how does it work? I have disabled manipulating the alphabet so it would be possible for me to add in Cyrillic or letters from the Hebrew alphabet. Which I find to be beautiful but additional work and I am often uncertain how to pronounce. 

The first trick is figuring out that a language is a series of sounds and the alphabet exists to codify these sounds. It is from 

First, need lists of constants and vowels. These are the same for all the languages the program produces.

The two first parts are lists of consonants and Vowels to randomly choose from see below for examples.

 

Consonants:

 

constant=['b','c','d','f','g','j','k','q','s','v','x','z']

 

Vowels:

 

self.vowel=['a','e','i','o','u']

 

Not all languages use all consonants equally. Z and X are relatively rare in English and languages where they are common and suddenly feel very different. So while all values are chosen at random with even distribution for constants a normal distribution is chosen so within the languages some consonants are given a higher weight and therefore more comment.

This is the first way the program distinguishes one language versus another by using certain consonants more or less often.

 

Liquids

 

I then create a set of Liquid sounds. Liquid, in phonetics, is a consonant sound in which the tongue produces a partial closure in the mouth, resulting in a resonant, vowel-like consonant, such as English l and r. Liquids may be either syllabic or monosyllabic; i.e., they may sometimes, like vowels, act as the sound carrier in a syllable.

The choices are r on their own as in ru, 'l' as in that long lu sound, 'was in the wi sound. Here are some more details on Liquids within the English language What Are Liquids In Phonetics? – ICPHS (icphs2019.org)

 

Sibilants

 

Chooses Sibilants these are the s or hissing sounds within a language Pronunciation of S in English (grammar.cl). Options are 's','sh','f'. And then picking finals that finish morphemes the below are grouped finals that are options. 

['m','n'], ['s','k'], ['m','n','ng'], ['s','sh','z','zh'], ['s','sh','ch'].

These values decide the sounds common in that language which are then arranged into morphemes. Arranging the morphemes this way is meant to give the biggest chance of getting something that is pronounceable out at the end. The morphemes are randomly chosen and stably used. 99% of the time the program uses the same morpheme construction method which is created as a list of letters that indicates if constant, vowel, random, and sibilant. or final. 1% of the time it uses another random morpheme construction method. 

This means that a morpheme construction method will be used across the whole language and by generating a few morphemes at the start we have a good chance that the same morphemes will be found across the language. This will build a sense of completness and uniqueness to the language being generated.

Below is some examples of how we could construct individual sound morphemes for the language to then construct more complete words from these morphemes. 

 

Methods For Morphemes

 

First step choose a method of constructing the Morphemes from the below list of options that will create a stable sound structure.

 

Example 1: consonant-vowel-consonant. Examples bab, bec, vox
Example 2: Consonant-vowel-vowel-?-consonant. Examples beelt,coelg,doubv
Example 3: Consonant-vowel-vowel-consonant-?. Examples beelo,caeli,voolu
Example 4: Consonant-vowel. Examples ca, bu, zi
Example 5: Consonant-vowel. Examples cash, bus, ruf
Example 6: Consonant-?-vowel-consonant. Examples clac, shak, toam 
Example 7: Consonant-vowel-final-?. Examples cozho,bachl,fengo
Example 8: Consonant-liquid-?-vowel-final. Examples zrulosh, djuyh, lwudech
Example 9: Sibilant-?-consonant-vowel-consonant. Examples mrana,zhlano,chaevo

Example 10: Sibilant-?-consonant-vowel-final. Examples mransh,zhlanch,chaevsh
Example 11: Consonant-?-Vowel-Final. Examples closh,kauzh,juas
Example 12: Consonant-?-Vowel-Final-?. Examples closhe,kauzhn,juaso
Example 13: Consonant-Vowel-liquid-?-Consonant-?. Examples corunlo,luwuign,poluhvu
Example 14: Consonant-?-liquid-?-Vowel-Consonant. Examples ciluhov,lowuoup,psjugeg
Example 15: Consonant-Vowel-liquid-?-Consonant-?. Examples camluici,lusuibo,pojukovu
Example 16: Consonant-Vowel-liquid-?-Consonant-?. Examples camluici,lusuibo,pojukovu
Example 17: Consonant-Vowel-liquid-?-Consonant-?. Examples coulumn,piujubv,wtolunb

Example 18: Consonant-?-Vowel-Liquid-Consonant-?. Examples cioluni,ptwucg,pioluch

 

I swear I generated these all fairly randomly I might have tried to repeat the same letter in a few places between lines but you can see that they generate a syllable sound. 

The trick here is not to generate full words but sounds that in conjunction with what you already know from English you feel that you could make that sound. Thereafter by combining with other syllables into words and making our random words out of random parts that we have already identified as being most likely pronounceable we maximise the likelihood the final language is pronounceable.

Not all combinations create permissible sounds. There are a lot of permissible sounds but you cannot type random letters and generate words. The thing to grasp here is to generate random words we have to generate a series of random sounds. The above equate well enough to different formulations you might create sounds from and so can be used as templates to generate a list of sounds for later word generation. 

In linguistics the simple sounds we use to create more fuller words are called Morphemes. 

The final thing is that this creates a pool of sounds or morphemes from which we can generate the words. Each word is made up of a minimum of between 1-2 morphemes to a maximum of 1-5. This represents that some languages are really long and prefer longer words, other languages are made up of series of short barks. 

When I wrote my code. some robustness is built in if a word is generated and it has already been generated then a new morphemes  is generated and in exceptional cases the max size of the number of morphemes in a word is increased. This means that word size increases overtime. This means the code is unlikely to crash and will resize upwards as the dictionary of language added to it increases.

To create a language whole cloth you ought to identify conjunctives like 'and', 'the' and the like as they are very likely to be commonly used and therefore to be very short. If you wanted to think more deeply on this you could try and identify what words are used most and make sure they are shorter before hand. 

To go a level deeper we might also ensure that certain morphemes where more or less common in certain related words. Think about how the morpheme 'burgh' is used in city names but not other objects. 

 

Too Much Of  A Good Thing

 

You should note if followed the above morpheme system then sometimes by combining morphemes you could get the same letter 2-3 times.

Most of the times you get a language that is unpronounceable to the Anglo Saxons is where we get repeats of the same letter multiple times. Two vowels is sometimes ok we do this in English but we don't get 3 in a row. Example below.

 

['laaomselaliiis', 'viiensasalooal', 'paaalsososaaos', 'viiensasipiien', 'sasalooavviien', 'saaavooenpaaal', 'viiensoshipooal', 'paaalsisipooal', 'paaalsikekooos', 'sisheneeavlaaom']

 

So we will generate some rules to deal with multiple instances off the same letter. In natural languages where we would type multiple letters in a row like e or ee sound different i.e. when placing multiple same letters in a row the sound produced change. We may then adopt several different conventions to represent this.

We therefore generate a rule from one of the below that will resolve the error.

The default is perhaps the easiest let the reader figure it out what sound does aa and aaa have compared to just an a? Well the anthropologists don't know dear reader it has been presumed that the tribes that make those noise's have vocal chords dissimilar to the humans...not buying it? Well this option doesn't usually make a "safe" language for user pronunciation. 

Other options is that multiple letters represent something else such a gottural stop i.e. "-". A gottural stop is a pause mid word 

Lastly sometimes I just put a ' no linguistic reason but it seems to trick people into thinking it means something and breaks up long words where there are several e's in the wrong place. People naturally seem to conclude the ' makes it ok. In English the apostrophe is used for a missing letter so people assume where a apostrophe they should ignore the normal pronunciation method. 

 

tlui'illluoil

tlui'ilsluluok

 

Tell me I am wrong about the '. Most English speaking people having been so abused by the oxford comma won't even question the ' in a wrong place. They will probably tell you it means a silent letter even though they will miss in the word tlui'illluoil it is between two i's. A apostrophe between two i's would mean a whole consonant is missing.... is it tluitillluoil or tluikillluoil or does it have a pause i.e. a gottoral stop such as tlui-illluoil. We don't care, we are English the apostrophe tells us to stop thinking about it.

Ok, so some options one is redaction anytime you would have more than one e, it isn't added. The code checks the rule and doesn't add. This shows a rule we can abuse rules as long as we are consistent in the abuse then people will accept the language as long as they can pronounce enough of it and guess at the rest. 

As a coder I don't have to pronounce what the computer produces perfectly I have to pretend I can and dare you to call me a liar. The adoption of these consistent rules will make you struggle to call me a liar. If it is just about pronounceable and at any point I can guess at the rules the computer generated I can sort of pronounce it and it is consistent how is it not a language?

 

Practical Examples

 

So I am going to do Tyger by William Blake a version found here The Tyger by William Blake | Poetry Foundation.

 

Translated into a language created by a computer a few milliseconds ago. I decided that anything with less than 3 syllables was a conjunctive and treated accordingly generating a shorter word for translation purposes. It also generated the word love so I regenerated it which then randomly included the word mate. So I went back to the love and regenerated it as timama if you can spot the .unfortunate pronunciation that made me do that and work out why that is even more unfortunate hats of to you

So see below id Tyger Tyger or as we say in this language Vaka Vaka by William Blake translated by a computer into god only knows what.

Sounds Latin. There is also a funny translation issue at the last verse that means I could imagine it as graffiti on a roman bath house. 

 

Vaka Vaka, ka va,
mako va fapi timama li Vaka;
faka fapi pi sifo sa,
ka Vaka ve kato toka?

mako la la pito sifo kafa. 
vovi li vila love to ka?
nivo pifa vi voto fo pipi?
faka li pi, voto fafa li vila?

fevi pifa to, somi pifa si,
fa lava li vama love ve vavo?
fevi vafa ve vavo vapi ke vo,
faka vave pi? somi pifa vave vavo?

faka li mata? pifa li va,
mako pifa mama ma ve nove?
faka li kano? pifa vave to,
pi savo vote na nota!

noma li pi ve ta fa to
fevi pi fika vi vava mefa
vi fo fito kale kama ke veva?
sano fo fefe mete li ta tena laka?


Vaka Vaka ka va, 
mako li fapi timama li na
faka vapi pi sifo sa,
vame la ve kato toka?

 

Conclusion

 

I for one prefer the original, but it is hard reading it without the belief this is a fully functioning language. Sounds like a crazy occult magic ritual I am reading sure; somewhere between Mordor and Latin. Or maybe it is simply the beautiful nature of William Blake's poetry you would believe it was a language even if it was made up nonsense; or well maybe the nonsense generator was well designed. 

Though I think you can see from Vaka Vaka what it takes to make a language. Consistent syllable structures repeat use of common morphemes and weighted biases to certain consonants. This way even poetry sounds as if it is in the right ball park. 

The below is a harder to pronounce language (at least for me) and I guess it shows the limitation of this technique but when it takes milliseconds to produce the language and in Python F5 is rerun it would seem easier to try again till satisfied. And I have to say I have found this project very artistic, fun and enjoyable. I hope you feel the same.

The highpoint of building this for me was when my spell checker started detecting random words I had generated as English and started correcting them.

My Grandad used to have the saying it is all French to me... I wonder what he would make of this. 

 

Alternative Tyger Tyger - Kluluil  Kluluil by William Blake.

 

Kluluil Kluluil, lluzallluzal lluzalsluean,
ni loli nlulual sike loli lluluos;
kluluillluluos lluzal lluluosnlulual sisa lesa, 
nlulualkluluil lluzalllutin sono nilulunlkluluil lluzalnilulunl?

ni kluluilllutin kluluilllutin nlulualnlulual sisa tlui'il. 
nilulunlnilulunl loli tlui'il sike tlui'il lluluos?
ze kluluilllutin slueannluluil tlui'il toti tlui'il?
kluluillluluos loli lluluosnlulual, lluluoslluluos lluzal loli llutinnilulunl?

she kluluilllutin nilulunl, ta kluluilllutin shiko,
nlulualkluluil llusoksluluok loli nluluilsluluok sike sono llusokllusok?
she nluluilllutin sono llusokllusok tlui'il se kluluil,
kluluillluluos tlui'ilsluluok lluluosnlulual? ta kluluilllutin tlui'ilsluluok nlulualnluluil?

kluluillluluos loli lluzal? kluluilllutin loli slueanmlukat,
ni kluluilllutin sluean leme sono mlukat?
kluluillluluos loli nluluil? kluluilllutin tlui'ilsluluok sluean,
tlui'illluzal mo mlukat lluluoslluluos llusoklluluil!

lluluoskluluil loli nilulunllluluos mlukatmluo'os llutinsluluok tlui'illluoil nilulunllluzal
she mlukat kluluit nluluil tlui'illluoil nilulunl
tomo toti kluluilmlukat nise nilulunl se le?
tomo toti mela mlukatlluluil loli llulual lluluilkluluit llusoktlui'il?

kluluil kluluil lluzallluzal lluzalsluean,
ni loli nlulual sike loli llusok
kluluillluluos lluzal lluluosnlulual sisa lesa,
tlui'illluzal lluzalllutin sono nilulunlkluluil lluzalnilulunl?

Add comment

Comments

There are no comments yet.