A program that generates a language's lexicon
import random
lists=['s','f','a','n','t','v']
s = [
['ʔ','t','ts','d','d3','b'],
['k','ks','p','ʔ','t','ts','d','d3','b'],
['g','ʔ','t','ts','d','d3','b']
]
f = [
['v'],
['s','z','f','v'],
['3','ʃ','v']
]
a = [
['ʋ','w','j','l'],
['ʋ','w','j','l'],
['ʋ','x','w','j','l']
]
n = [
['m','n'],
['m','n'],
['ŋ','m','n']
]
t = [
['r', 'R'],
[],
[]
]
v = [
['ə'],
['æ','y','e','ə'],
['o','a','u','ə']
]
words=[]
def sel(gender,list):
if list==v:
if gender==2:
return v[2][0]
if list==s:
if gender==2:
return s[2][0]
if list==n:
if gender==1:
gender=0
return list[gender][random.randint(0,len(list[gender])-1)]
def checklast(word,phoneme,list,gender):
return [*word][phoneme-1] in list[gender]
def checkword(word):
for sound in [*word]:
if word.count(sound)<=4:
freqany=True
return not ('dt' in word or
'nm' in word or
'vʋ' in word or
'gʋ' in word or
word.endswith(any(s)+any(f)) or
freqany or
word in words)
for generated_word in range(0,1000):
word=''
length=random.randint(2,10)
gender=random.randint(0,2)
# WORD CONSTRUCTION
for phoneme in range(0,length):
if phoneme==0:
psbl_phnms=[f,a,v,s,n]
word+=sel(gender,random.choice(psbl_phnms))
if phoneme>=1:
if checklast(word,phoneme,f,gender):
psbl_phnms=[v,s]
elif checklast(word,phoneme,a,gender):
psbl_phnms=[v]
elif checklast(word,phoneme,v,gender):
psbl_phnms=[f,a,s,n]
elif checklast(word,phoneme,s,gender):
psbl_phnms=[f,a,v]
elif checklast(word,phoneme,n,gender):
psbl_phnms=[s,v]
word+=sel(gender,random.choice(psbl_phnms))
if checklast:
print(word)
words+=word
else:
continue
WIP FOR NOW