130 lines
2.2 KiB
Python
130 lines
2.2 KiB
Python
from language import types
|
|
|
|
from .rules import rules
|
|
|
|
vowels = types.WeightedSet(
|
|
("a", 1.0),
|
|
("e", 1.0),
|
|
("i", 0.3),
|
|
("o", 0.8),
|
|
("u", 0.7),
|
|
("y", 0.3),
|
|
("j", 0.05),
|
|
("ä", 0.1),
|
|
("ë", 0.1),
|
|
("ö", 0.1),
|
|
("ü", 0.1),
|
|
)
|
|
consonants = types.WeightedSet(
|
|
("b", 0.5),
|
|
("c", 0.3),
|
|
("d", 0.3),
|
|
("f", 0.4),
|
|
("g", 0.3),
|
|
("h", 0.5),
|
|
("k", 0.05),
|
|
("l", 1.0),
|
|
("m", 1.0),
|
|
("n", 1.0),
|
|
("p", 0.5),
|
|
("r", 1.0),
|
|
("s", 1.0),
|
|
("t", 0.7),
|
|
("v", 0.3),
|
|
("w", 0.2),
|
|
("y", 0.3),
|
|
) + types.equal_weights(
|
|
[
|
|
"ch",
|
|
"cl",
|
|
"cr",
|
|
"cw",
|
|
"cy",
|
|
"dh",
|
|
"dj",
|
|
"dr",
|
|
"dw",
|
|
"dy",
|
|
"fl",
|
|
"fn",
|
|
"fr",
|
|
"fw",
|
|
"fy",
|
|
"gl",
|
|
"ll",
|
|
"ly",
|
|
"ml",
|
|
"mw",
|
|
"my",
|
|
"ny",
|
|
"rh",
|
|
"ry",
|
|
"sh",
|
|
"sl",
|
|
"sm",
|
|
"sn",
|
|
"st",
|
|
"sv",
|
|
"sw",
|
|
"sy",
|
|
"th",
|
|
"tr",
|
|
"tw",
|
|
"ty",
|
|
"vy",
|
|
"wh",
|
|
"wr",
|
|
"wy",
|
|
"yh",
|
|
]
|
|
)
|
|
|
|
suffixes = types.equal_weights(
|
|
[
|
|
"a",
|
|
"i",
|
|
"e",
|
|
"t",
|
|
"s",
|
|
"m",
|
|
"n",
|
|
"l",
|
|
"r",
|
|
"d",
|
|
"a",
|
|
"th",
|
|
"ss",
|
|
"ieth",
|
|
"ies",
|
|
"ier",
|
|
"ien",
|
|
"iath",
|
|
"ias",
|
|
"iar",
|
|
"ian",
|
|
"ioth",
|
|
"ios",
|
|
"ior",
|
|
"ion",
|
|
],
|
|
weight=1.0,
|
|
)
|
|
|
|
Language = types.Language(
|
|
name="elvish",
|
|
vowels=vowels,
|
|
consonants=consonants,
|
|
prefixes=None,
|
|
suffixes=suffixes,
|
|
syllables=types.SyllableSet(
|
|
(types.Syllable(template="vowel|consonant") * 3, 0.4),
|
|
(types.Syllable(template="vowel|consonant") * 3, 0.5),
|
|
(types.Syllable(template="vowel|consonant") * 4, 1.0),
|
|
(types.Syllable(template="vowel|consonant") * 5, 0.5),
|
|
(types.Syllable(template="vowel|consonant") * 6, 0.1),
|
|
(types.Syllable(template="vowel|consonant") * 7, 0.1),
|
|
),
|
|
rules=rules,
|
|
minimum_grapheme_count=3,
|
|
)
|