def build_lexicon(w, properties): lx = Lexicon() for w0 in w.values(): lx.add_word(build_word(w0)) lx.compile(properties) return lx
def run(): print "QUENYA" qya = Lexicon() telcu = Lexeme(u"telcu", 1, "n", ("0",), "jicesi") qya.add_word(Word(u"telco", telcu, ("s", "N"))) maama = Lexeme(u"roccie", 1, "n", (), "zunbe") qya.add_word(Word(u"roccie", maama, ("s", "N"))) nis = Lexeme(u"niss", 1, "n", (), "dona") qya.add_word(Word(u"nís", nis, ("s", "N"))) z = Inflections() f = z.create_inflection("n", None, ("0",)) f.create_transform(("s", "N"), BASED_ON_ENTRY_FORM) c = f.create_transform(("s", "G")) c.append_step(u"ie$", u"ié") c.append_step(u"cu$", u"qu") c.append_step(u"[ao]?$", u"o") c = f.create_transform(("s", "D"), ("s", "N"), u"[^aeiouáéíóú]$") c.append_step(u"$", u"en") c = f.create_transform(("s", "D"), ("s", "N"), u"[aeiouáéíóú]$") c.append_step(u"$", u"n") c = f.create_transform(("s", "P"), BASED_ON_ENTRY_FORM, u"[iu]$") c.append_step(u"$", u"va") c = f.create_transform(("s", "P"), BASED_ON_ENTRY_FORM, u"ss$") c.append_step(u"$", u"eva") c = f.create_transform(("s", "P"), BASED_ON_ENTRY_FORM, u"c$") c.append_step(u"$", u"qua") c = f.create_transform(("s", "P"), BASED_ON_ENTRY_FORM, u"[^aeiouáéíóú]$") c.append_step(u"$", u"wa") c = f.create_transform(("s", "P"), BASED_ON_ENTRY_FORM, u"[aeiouáéíóú]$") c.append_step(u"$", u"va") c = f.create_transform(("s", "I"), ("s", "D")) c.append_step(u"$", u"en") print f(telcu, [w for w in qya.find_words(telcu.key())]) print f(maama, [w for w in qya.find_words(maama.key())]) print f(nis, [w for w in qya.find_words(nis.key())]) # all_niss = f(u"niss", 1) #inflection table: paradigm = (..), dictionary of generated with none for defective, iterable over words # print all_niss # (niss, niis): [niis, nisso, nissen,...] print "LATIN" lat = Lexicon() rosa = Lexeme(u"rosa", 1, "n", ("f",), "rose") lupo = Lexeme(u"luːpo", 1, "n", ("m",), "wolf") mar = Lexeme(u"maːr", 1, "n", ("n",), "sea") lat.add_word(Word(u"maːre", mar, ("s", "N"))) mar2 = Lexeme(u"maːr", 2, "n", ("m",), "male") lat.add_word(Word(u"maːr", mar2, ("s", "N"))) urb = Lexeme(u"urb", 1, "n", ("f",), "town") lat.add_word(Word(u"urps", urb, ("s", "N"))) nomin = Lexeme(u"noːmin", 1, "n", ("m",), "name") decl = Inflections() decl1 = decl.create_inflection("n", u"a$") decl1.create_transform(("s", "N"), BASED_ON_ENTRY_FORM) decl1G = decl1.create_transform(("s", "G")) decl1G.append_step(u"a$", u"ae", True) decl2 = decl.create_inflection("n", u"o$") decl2N = decl2.create_transform(("s", "N")) decl2N.append_step(u"o$", u"us", True) decl2G = decl2.create_transform(("s", "G")) decl2G.append_step(u"o$", u"iː", True) decl3 = decl.create_inflection("n") decl3N = decl3.create_transform(("s", "N"), BASED_ON_ENTRY_FORM, u"in", ("m",)) decl3N.append_step(u"in$", u"en") decl3N = decl3.create_transform(("s", "N"), BASED_ON_ENTRY_FORM, u"in", ("n",)) decl3N.append_step(u"in$", u"o") decl3G = decl3.create_transform(("s", "G")) decl3G.append_step(u"$", u"iːs", True) print decl(lupo, [w for w in lat.find_words(lupo.key())]) print decl(nomin, [w for w in lat.find_words(nomin.key())]) print decl(rosa, [w for w in lat.find_words(rosa.key())])