From 34b20045a80c0d004e58e8c86b036b5117911db4 Mon Sep 17 00:00:00 2001 From: corpus-team Date: Fri, 18 Jul 2025 10:55:24 +0200 Subject: [PATCH 1/7] =?UTF-8?q?Versions=20JJ=20Juillet=202025=20-=20NB:=20?= =?UTF-8?q?.pyc=20non=20mis-=C3=A0-jour=20!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- daba/dabased.py | 528 ++++++++++++- daba/formats.py | 264 ++++++- daba/gdisamb.py | 1140 +++++++++++++++++++++++++-- daba/gparser.py | 142 +++- daba/grammar.py | 8 +- daba/meta.py | 170 +++- daba/mparser.py | 302 ++++++- daba/newmorph.py | 16 +- daba/plugins/bamlatinold.py | 10 +- daba/plugins/dukure.py | 83 ++ daba/plugins/nko.py | 95 ++- daba/plugins/thoyer.py | 67 ++ daba/plugins/ytcisse.py | 79 ++ daba/wordparser.py | 179 ++++- docs/DABA-gdisamb-documentation.odt | Bin 0 -> 164530 bytes docs/DABA-gparser-documentation.odt | Bin 0 -> 202635 bytes docs/DABA-meta-documentation.odt | Bin 0 -> 318454 bytes docs/samples/bamana.gram.txt | 564 +++++++++++-- docs/samples/maninka.nko.gram.txt | 253 +++++- docs/samples/meta.xml | 51 +- 20 files changed, 3642 insertions(+), 309 deletions(-) mode change 100644 => 100755 daba/dabased.py mode change 100644 => 100755 daba/formats.py mode change 100644 => 100755 daba/gdisamb.py mode change 100644 => 100755 daba/gparser.py mode change 100644 => 100755 daba/grammar.py mode change 100644 => 100755 daba/meta.py mode change 100644 => 100755 daba/newmorph.py create mode 100644 daba/plugins/dukure.py create mode 100644 daba/plugins/thoyer.py create mode 100644 daba/plugins/ytcisse.py create mode 100644 docs/DABA-gdisamb-documentation.odt create mode 100644 docs/DABA-gparser-documentation.odt create mode 100644 docs/DABA-meta-documentation.odt diff --git a/daba/dabased.py b/daba/dabased.py old mode 100644 new mode 100755 index 4e0f009..b06038b --- a/daba/dabased.py +++ b/daba/dabased.py @@ -172,15 +172,17 @@ def parse_gloss(self, gloss_string): daba.grammar.tokenize(gloss_string) ) gt = daba.formats.WordToken([gloss], stage='dabased') + #print("*** parse_gloss / gt :",gt) return gt def parse_token(self, token_expression): try: toktype, tokvalue = token_expression[1:].split(':') - tokvalue = re.compile("^" + tokvalue + "\Z", re.UNICODE) + tokvalue = re.compile(r"^" + tokvalue + r"\Z", re.UNICODE) except (ValueError): toktype = token_expression[1:] tokvalue = '' + #print("--- parse_token returns:",daba.formats.PlainToken((toktype, tokvalue))) return daba.formats.PlainToken((toktype, tokvalue)) def parse_expr(self, expr): @@ -201,9 +203,18 @@ def parse_expr(self, expr): return result def parse_command(self, command): - command = u.normalize( - 'NFKD', command - ).strip('\n') + # command = u.normalize('NFKD', command).strip('\n') + # normalize should concern lemmas, not gloss + def normalizeLex(m): + lx=m.groups()[0] + lx=u.normalize('NFKD', lx) + psgloss=m.groups()[1] + psgloss=u.normalize('NFC',psgloss) # is this faster than tomonolith() ? + return lx+psgloss + + command = command.strip('\n') + command = re.sub(r'([^\:\< ]+)(\:[^\:\< ]*\:[^\:\< ]*)',normalizeLex,command) + m = re.match(r'\s*(.+?)\s*>>\s*(.+?)\s*$', command, re.U) try: source, target = m.groups() @@ -212,6 +223,7 @@ def parse_command(self, command): return sourcelist = self.parse_expr(source) targetlist = self.parse_expr(target) + #print("=== parse_command / targetlist:", targetlist) # OK return ReplaceRule(sourcelist, targetlist) @@ -253,50 +265,516 @@ def replace(self, token, target): outgloss = token.union(target) if outgloss.gloss is not None: target = outgloss + #print("replace / target:", target) return target - def recursive_replace(self, gloss, pattern, target): + def recursive_replace(self, gloss, pattern, target, filler): + #if gloss is None : return gloss # why do I need this protection??? + filler+=" " + #print(filler+"gloss, pattern, target :\n"+filler,gloss,"\n"+filler, pattern,"\n"+filler, target) if gloss.matches(pattern, psstrict=True): out = gloss.union(target, psoverride=True) else: out = gloss - if gloss.morphemes: + # print(filler+"+++ recursive_replace / before gloss.morphemes : out :",out) + + lpattern=len(str(pattern)) + # question: is it relevant to compare size of pattern and size of glosses in all cases, are there exceptions ? + if out.morphemes: + # print(filler+"+++ recursive_replace / gloss.morphemes :",out.morphemes) + outstr0=str(out) + if lpattern<=len(outstr0): + outstr=outstr0[:outstr0.find("[")+1] #: "kɛ́ra:v: [" + isNone=False + for subgloss in out.morphemes: + if subgloss is None: + print("recursive_replace WHY? outstr0=",outstr0) + isNone=True + else: + if lpattern<=len(str(subgloss)): + subgloss=self.recursive_replace(subgloss,pattern,target,filler) + outstr+=str(subgloss)+" " + outstr=outstr[:-1]+"]" + # print(filler+"outstr:",outstr) + if isNone or outstr[outstr.find("["):].startswith("[ ")\ + or outstr[outstr.find("["):].endswith("[ "): # suppression cases + print(filler+"recursive_replace strange outstr=",outstr) + outstr,ignore=outstr.split(" [",1) + if outstr != outstr0 : + toks = daba.grammar.str_tokenize(outstr) + try: + out = daba.grammar.stringgloss_parser().parse(toks) + # print(filler+"daba.grammar out=",out) + except: + print("stringloss_parser failed on:",outstr) + # no change to out ? + + # else: print(filler+"no gloss.morphemes") + + """ + print(filler+"self.recursive_replace(morph, pattern, target) for morph in gloss.morphemes :\n"+filler,\ + tuple(self.recursive_replace(morph, pattern, target, filler) for morph in gloss.morphemes)) out = out._replace( morphemes=tuple( - self.recursive_replace(morph, pattern, target) - for morph in gloss.morphemes) + self.recursive_replace(morph, pattern, target,filler) + for morph in out.morphemes) ) + """ + + + # print(filler+"+++ recursive_replace / returns out :",out) return out + + def make_replace_func(self, rule): + # print("\n!!! make_replace_func rule:",self.getstr(rule.inlist)," >> ",self.getstr(rule.outlist)) + global textscript if not rule.symmetric: def replace_func(tokens, rule): + # in rule.outlist, words should be compatible with meta-data text-script + # example outlist: + # [w ('bɛ́', 'dabased', [Gloss(form='bɛ́', ps=('cop',), gloss='BE', morphemes=())]) None, + # w ('kà', 'dabased', [Gloss(form='kà', ps=('pm',), gloss='INF', morphemes=())]) None] + # print("modify outlist per text-script:", textscript) + for w in rule.outlist: + # print ("w.token:",w.token) + if textscript=='Ancien orthographe malien': # ref corbama/meta.xml + w.token=re.sub(r'[̀́̌̂]','',w.token) # remove tones + w.token=w.token.replace('ɛɛ','èe') + w.token=w.token.replace('ɔɔ','òo') + w.token=w.token.replace('ɛ','è') + w.token=w.token.replace('ɔ','ò') + w.token=w.token.replace('ɲ','ny') + w.token=w.token.replace('ƐƐ','ÈE') + w.token=w.token.replace('ƆƆ','ÒO') + w.token=w.token.replace('Ɛ','È') + w.token=w.token.replace('Ɔ','Ò') + + w.token=w.token.replace('Ɲ','Ny') + elif textscript=="N’Ko": # ref cormani/meta.xml + def s(a,b,text): + return(re.sub(a,b,text,0,re.U|re.MULTILINE)) + + def gbarali(m): + #text=s(r'([^ߊߍߋߌߐߏߎ ])(?P[ߊߍߋߌߐߏߎ])([́̀̂̌]*)([^ߊߍߋߌߐߏߎ́̀̂̌])(?P=WOV1)([^\u07F2])','\g<1>\g<4>\g<2>\g<3>\g<5>',text) + cons1=m.groups()[0] + cons2=m.groups()[3] + voy=m.groups()[1] # unique since voy1=voy2 + ton1=m.groups()[2] + nonasal=m.groups()[4] + ton2="" + if nonasal in '\u0300\u0301\u0302\u030C\u07EF\u07F0\u07EE\u07F1': ton2=nonasal # latin tones + nko tones for already identified long wovels + + if cons1==cons2 : return cons1+voy+ton1+cons2+voy+nonasal + else: + if ton2==ton1 : return cons1+cons2+voy+nonasal + else : + if ton1=='\u0301': # high tone + if ton2=="": return cons1+cons2+voy+nonasal # pas de ton2=high tone too + else: return cons1+voy+ton1+cons2+voy+nonasal + # is the reverse situation ton1=="" and ton2="\u301" the same ??? + else: return cons1+voy+ton1+cons2+voy+nonasal + + def lat2nko(text): + text=text.strip().lower() + + texts="" + # + # text should end with a punctuation + if text[-1] not in " ,.;:!?\n": text=text+"\n" + scan=re.findall(r'([^ ,\.;:!\?\n]+)([ ,\.;:!\?\n]+)',text) + #print(scan) + nitem=len(scan) + iitem=0 + for item in scan: + iitem+=1 + w=item[0] + punct=item[1] + + w=re.sub(r'([aeiouɛɔ][\u0300\u0301\u0302\u030C]*)n([^aeiouɛɔ])',r'\g<1>~\g<2>',w) + w=re.sub(r'([aeiouɛɔ][\u0300\u0301\u0302\u030C]*)n$',r'\g<1>~',w) + + first=re.findall(r'(^([aeiouɛɔ])([\u0300\u0301\u0302\u030C]*)(~?))',w) + lfirst=0 + if first: + lfirst=len(first[0][0]) + # print(w,'first',first[0][0]) + syllabs=re.findall(r'(([^aeiouɛɔ])([aeiouɛɔ])([\u0300\u0301\u0302\u030C]*)([aeiouɛɔ]?)(~?))',w[lfirst:]) + # caution long vowels : formula above assumes up to two vowels but they could be different!!! + # print(w,"\nsyllabs",syllabs) + + # do something useful with syllabs data + nsyl=len(syllabs) + if nsyl>1: + if first: basetone=first[0][2] + else: basetone=syllabs[0][3] + # print("basetone",basetone.encode("unicode_escape")) + # is basetone a low tone ? + if basetone=="\u0300": + # check tone of next word if any + basetone2="" + if iitem!=nitem: # next word not to be checked on last word + w2=scan[iitem][0] + # print("next word",w2) + if w2[0] in "aeiouɛɔ": basetone2=w2[1] + else: basetone2=w2[2] + # print("basetone2",basetone2.encode("unicode_escape")) + if basetone2!="\u0301": + # update final tone to high + wnew='' + if first: wnew=first[0][0] + isyl=0 + for syl in syllabs: + isyl+=1 + if isyl==nsyl: + wnew=wnew+syl[1]+syl[2]+"\u0301"+syl[4]+syl[5] + else: + wnew=wnew+syl[0] + w=wnew + + w=w.replace("~","n") + texts=texts+w+punct + text=texts + # print("new text\n",text,"\n") + + ###### NY closed list follows: ###### + text=s(r'\bbɛnnyɔɔnya\b','ߓߍ߲ߢߐ߲߱ߧߊ',text) + text=s(r'\bdɛnnyɔgɔnnya\b','ߘߍ߲߬ߢߐ߬ߜߐ߲߬ߧߊ',text) + text=s(r'\bsiginyɔgɔnnya\b','ߛߜߌ߬ߢߐ߬ߜߐ߲߬ߧߊ',text) + text=s(r'\byilanyilan\b','ߦߌߟߊ߲ߦߌߟߊ߲',text) + + text=s(r'\bdɛnyɔonnu\b','ߘߍ߲߬ߢߐ߲߰ߣߎ',text) + # опечатка, должно быть dɛ̀nɲɔɔnnu + text=s(r'\bdɛnyɔɔ\b','ߘߍ߬ߢߐ߲߰',text) + # неправильное написание, надо dɛ̀ɲɔɔn + text=s(r'\bnadanya\b','ߣߊߘߊ߲ߢߊ',text) + # nadanya = nadannya + text=s(r'(ɲinynkali|ɲunynkali)','ɲininkali',text) + # some typo + ##################################### + text=s(r'\bny','ߢ',text) + + + ###### nny -> nɲ -> n+NYA-woloso + text=s(r'\bnny','ߒߧ',text) + text=s(r'nny','\u07F2\u07E7',text) # ߲ Nazalization Mark + ߧ Nya Woloso + ###### ny -> ɲ + text=s(r'ny','ߢ',text) + ##################################### + + #text=s(r'ng','ߢ߭',text) # incompatible avec le gb ! julakolongbɛ + text=s(r'\bng','ߢ߭',text) # est seul possible + text=s(r'ŋ','ߢ߭',text) + + text=s(r'\bn\'','ߣߴ',text) + + #? essai de traitement des nasales voyelle + U+07F2=߲ + #!!! LES TONS NE SONT PAS TRAITES DANS lat2nko.pl !!! + # NB: IMPORTANT! la nasalisation doit précéder le ton + text=s(r'([aeiouɛɔ])([́̀̂]*)n\b',r'\g<1>\u07F2\g<2>',text) + text=s(r'([aeiouɛɔ])([́̀̂]*)n([bcdefghjklmnprstwyz])',r'\g<1>\u07F2\g<2>\g<3>',text) + + # Replace initial n followed by a wovel with ߒ , others initial n with ߣ + text=s(r'\bn([^aeiouɛɔn])',r'ߒ\g<1>',text) + text=s(r'\bn','ߣ',text) + + # où sont traitées les nasales ? <---------------------------- + + # Replace n at the end of a word with ߒ # ??? + text=s(r'([aeiouɛɔ])n\b',r'\g<1>ߒ',text) + text=s(r'([aeiouɛɔ])n([^aeiouɛɔ])',r'\g<1>ߒ\g<2>',text) + text=s(r'\bn\b','ߒ',text) + text=s(r'n','ߣ',text) + + text=s(r'gb','ߜ',text) + text=s(r'sh','ߛ߭',text) + text=s(r'ʃ','ߛ߭',text) + text=s(r'th','ߛ߳',text) + text=s(r'θ','ߛ߳',text) + text=s(r'kp','ߜ߳',text) + text=s(r'rr','ߚ',text) + text=s(r'g','ߜ߭',text) + text=s(r'v','ߝ߭',text) + text=s(r'z','ߖ߭',text) + text=s(r'ħ','ߤ߭',text) + text=s(r'kh','ߞ߭',text) + text=s(r'x','ߞ߭',text) + text=s(r'q','ߞ߫',text) + text=s(r'gh','ߜ߫',text) + text=s(r'ɣ','ߜ߫',text) + text=s(r'zh','ߗ߭',text) + text=s(r'dj','ߗ߭',text) + text=s(r'ʒ','ߗ߭',text) + text=s(r'ð','ߗ߭',text) + text=s(r'ʕa','ߊ߳',text) + text=s(r'ʕ','ߊ߳',text) + text=s(r'bh','ߓ߭',text) + text=s(r'ɓ','ߓ߭',text) + text=s(r'dh','ߘ߳',text) + text=s(r'ɗ','ߘ߳',text) + + text=s(r'b','ߓ',text) + text=s(r'c','ߗ',text) + text=s(r'd','ߘ',text) + text=s(r'f','ߝ',text) + text=s(r'h','ߤ',text) + text=s(r'j','ߖ',text) + text=s(r'k','ߞ',text) + text=s(r'l','ߟ',text) + text=s(r'm','ߡ',text) + text=s(r'ɲ','ߢ',text) + text=s(r'p','ߔ',text) + text=s(r's','ߛ',text) + text=s(r't','ߕ',text) + text=s(r'r','ߙ',text) + text=s(r'w','ߥ',text) + + text=s(r'y','ߦ',text) + + text=s(r'aa','ߊ߯',text) + text=s(r'ɛɛ','ߍ߯',text) + text=s(r'ee','ߋ߯',text) + text=s(r'ii','ߌ߯',text) + text=s(r'ɔɔ','ߐ߰',text) # erreur ? + text=s(r'oo','ߏ߯',text) + text=s(r'uu','ߎ߯',text) + + # add transforms with inside latin tone + # high + # with tonal article + text=s(r'áa`','ߊ߮',text) + text=s(r'ɛ́ɛ`','ߍ߮',text) + text=s(r'ée`','ߋ߮',text) + text=s(r'íi`','ߌ߮',text) + text=s(r'ɔ́ɔ`','ߐ߮',text) + text=s(r'óo`','ߏ߮',text) + text=s(r'úu`','ߎ߮',text) + # without + text=s(r'áa','ߊ߯',text) + text=s(r'ɛ́ɛ','ߍ߯',text) + text=s(r'ée','ߋ߯',text) + text=s(r'íi','ߌ߯',text) + text=s(r'ɔ́ɔ','ߐ߯',text) + text=s(r'óo','ߏ߯',text) + text=s(r'úu','ߎ߯',text) + # low + # with tonal article + text=s(r'àa`','ߊ߱',text) + text=s(r'ɛ̀ɛ`','ߍ߱',text) + text=s(r'èe`','ߋ߱',text) + text=s(r'ìi`','ߌ߱',text) + text=s(r'ɔ̀ɔ`','ߐ߱',text) + text=s(r'òo`','ߏ߱',text) + text=s(r'ùu`','ߎ߱',text) + # without + text=s(r'àa','ߊ߰',text) + text=s(r'ɛ̀ɛ','ߍ߰',text) + text=s(r'èe','ߋ߰',text) + text=s(r'ìi','ߌ߰',text) + text=s(r'ɔ̀ɔ','ߐ߰',text) + text=s(r'òo','ߏ߰',text) + text=s(r'ùu','ߎ߰',text) + + # single wowels + text=s(r'a','ߊ',text) + text=s(r'á','ߊ',text) # usage ??? + text=s(r'ɛ','ߍ',text) + text=s(r'e','ߋ',text) + text=s(r'i','ߌ',text) + text=s(r'ɔ','ߐ',text) + text=s(r'o','ߏ',text) + text=s(r'u','ߎ',text) + + # text=s(r'^(.)',' \1',text) ; text=s(r'(.)$','\1 ',text) + # text=s(r'([^\d])(\d)(\d)(\d)(\d)(\d)(\d)(\d)([^\d])','\1\8\7\6\5\4\3\2\9',text) + # text=s(r'([^\d])(\d)(\d)(\d)(\d)(\d)(\d)([^\d])','\1\7\6\5\4\3\2\8',text) + # text=s(r'([^\d])(\d)(\d)(\d)(\d)(\d)([^\d])','\1\6\5\4\3\2\7',text) + # text=s(r'([^\d])(\d)(\d)(\d)(\d)([^\d])','\1\5\4\3\2\6',text) + # text=s(r'([^\d])(\d)(\d)(\d)([^\d])','\1\4\3\2\5',text) + # text=s(r'(\D)(\d)(\d)(\D)','\1\2\3\4',text) + # + # s/^ //g ; s/ $//g + + text=s(r'0','߀',text) + text=s(r'1','߁',text) + text=s(r'2','߂',text) + text=s(r'3','߃',text) + text=s(r'4','߄',text) + text=s(r'5','߅',text) + text=s(r'6','߆',text) + text=s(r'7','߇',text) + text=s(r'8','߈',text) + text=s(r'9','߉',text) + + text=s(r'<ߤ>','',text) + text=s(r'<\/ߤ>','',text) + # s/<\/ߤ>/<\/h>/g + text=s(r'<ߛ>','',text) + text=s(r'<\/ߛ>','',text) + # s/<\/ߛ>/<\/s>/g + text=s(r'<ߕ>','',text) + text=s(r'<\/ߕ>','',text) + # s/<\/ߕ>/<\/t>/g + text=s(r'<ߕߓ>','',text) + text=s(r'<\/ߕߓ>','',text) + # s/<\/ߕߓ>/<\/tb>/g + text=s(r'<ߓߙ>','
',text) + text=s(r'<\/ߓߙ>','
',text) + text=s(r'<ߓߙ\/>','
',text) + # s/<ߓߙ\/>//g + + # GBARALI - ex bála + # NB: check wovels with latin tones included, + # skipped if nazalisation character ex bálan + # (1st wovel :not included with tones) + # (2d wovel: explicit) + + # checkit=re.findall(r'([^ߊߍߋߌߐߏߎ])(?P[ߊߍߋߌߐߏߎ])([́̀̂̌]*)([^ߊߍߋߌߐߏߎ́̀̂̌])(?P=WOV1)([^\u07F2])',text) + # if checkit: print(checkit) + # else : print("not found") + + # à revoir : le ton initial n'est pas à reporter, du coup la règle nɔnɔ ne peut pas être traitée comme ça. + #text=s(r'([^ߊߍߋߌߐߏߎ ])(?P[ߊߍߋߌߐߏߎ])([́̀̂̌]*)([^ߊߍߋߌߐߏߎ́̀̂̌])(?P=WOV1)([^\u07F2])','\g<1>\g<4>\g<2>\g<3>\g<5>',text) + # solution : renvoi à une fonction adhoc - tons latins : [\u0300\u0301\u0302\u030C] + tones for long wovels: 07EF et 07F0 + text=re.sub(r'([^ߊߍߋߌߐߏߎ ])(?P[ߊߍߋߌߐߏߎ])([\u0300\u0301\u0302\u030C\u07EF\u07F0\u07EE\u07F1]*)([^ߊߍߋߌߐߏߎ́̀̂̌])(?P=WOV1)([^\u07F2])',\ + gbarali,text,0,re.U|re.MULTILINE) + + # tones character references checked / https://unicodeplus.com + # reference latin + # high ́ Combining Acute Accent (U+0301) + # low ̀ Combining Grave Accent (U+0300) + # descending ̂ Combining Circumflex Accent (U+0302) + # raising ̌ Combining Caron (U+030C) + # tonal article Grave Accent (U+0060) ` + # + # reference N'ko + # long wovels + # H+flottant B Nko Combining Long Descending Tone (U+07EE) ߮ + # H Nko Combining Long High Tone (U+07EF) ߯ + # B Nko Combining Long Low Tone (U+07F0) ߰ + # Ascendant+flottant B Nko Combining Long Rising Tone (U+07F1) ߱ + # + # short wovels + # H Nko Combining Short High Tone (U+07EB) ߫ + # H+flottant B (none, default) + # B Nko Combining Short Low Tone (U+07EC) ߬ + # Ascendant+flottant B Nko Combining Short Rising Tone (U+07ED) ߭ + + # remove high tones + #? text=s('́','',text) + + # high tones + # long wovels + # no final tone=high tone??? + text=s(r'(?P[ߊߍߋߌߐߏߎ])(?P=WOV1)\b',r'\g<1>\u07EE',text) + # high tone expressed + text=s(r'(?P[ߊߍߋߌߐߏߎ])\u0301(?P=WOV1)',r'\g<1>\u07EF',text) + + # short wovels + # no final tone=high tone??? + text=s(r'([ߊߍߋߌߐߏߎߒ][\u07F2]*)([ ,;\.\:\?\!])',r'\g<1>\u07EB\g<2>',text) # en fin de mot sans autre indication !!! fin=espace ici ??? \b fails + text=s(r'([ߊߍߋߌߐߏߎߒ][\u07F2]*)$',r'\g<1>\u07EB',text) # en fin de mot sans autre indication !!! fin=espace ici ??? \b fails + + text=s(r'([ߊߍߋߌߐߏߎߒ][\u07F2]*)\u0060',r'\g<1>',text) + # high tone expressed + text=s(r'([ߊߍߋߌߐߏߎߒ][\u07F2]*)\u0301([ ,;\.\:\?\!])',r'\g<1>\u07EB\g<2>',text) # ex bɔ́ en fin de mot ON SUPPOSE QUE C'EST UN VERBE!!!!!! fin=espace ici ??? \b fails + text=s(r'([ߊߍߋߌߐߏߎߒ][\u07F2]*)\u0301\u0060',r'\g<1>',text) # ex bɔ́` art tonal indique un NOM: supprimer + text=s(r'([ߊߍߋߌߐߏߎߒ][\u07F2]*)\u0301',r'\g<1>',text) # ailleurs: supprimer + + # low tones + # long wovels + text=s(r'(?P[ߊߍߋߌߐߏߎ])\u0300(?P=WOV1)\u0060',r'\g<1>\u07F1',text) # mɔ̀ɔ` + text=s(r'(?P[ߊߍߋߌߐߏߎ])\u0300(?P=WOV1)',r'\g<1>\u07F0',text) # mɔ̀ɔnin + # short wovels + text=s(r'([ߊߍߋߌߐߏߎ][\u07F2]*)\u0300\u0060',r'\g<1>\u07ED',text) # l'art tonal indique un NOM + text=s(r'([ߊߍߋߌߐߏߎ][\u07F2]*)\u0300',r'\g<1>\u07EC',text) + + # descending tones + # long wovels + text=s(r'(?P[ߊߍߋߌߐߏߎ])\u0302(?P=WOV1)',r'\g<1>\u07F1',text) # aâ ? test case to find! + # short wovels + text=s(r'([ߊߍߋߌߐߏߎߒ][\u07F2]*)\u0302',r'\g<1>',text) # supprimer? (comme ce qui est fait pour ân 1PL) + + # remove leftover art. tonal [some cases not handled properly] + text=s(r'[\u0060\u0300\u0301\u0302]','',text) + + # 1SG et 2SG sans ton # 07/01/2023 : + # NB: done in sentence scan (latin script preparation) but no effect ??? + # \b not working here but ok in Sublime text ??? + # text=s(r'\b([ߒ|ߌ])\u07EB\b','\g<1>',text) # \b([ߒ|ߌ])߫\b + text=s(r'^([ߒ|ߌ])\u07EB ',r'\g<1> ',text) + text=s(r' ([ߒ|ߌ])\u07EB ',r' \g<1> ',text) # relies on proper punctuation ;-) + + + # déplacer les ponctuations APRES LES TONS as it kills \b and latin punctuation tests fail + + text=s(r',','،',text) + text=s(r'\?','؟',text) + text=s(r'!','߹',text) + text=s(r';','؛',text) + text=s(r'\'','ߴ',text) + + text=s(r'([߹؟،߸!\.:\(\)\-\u2329\u232A«»])\s*$',r'\g<1>\u200F',text) # 〈 Left-Pointing Angle Bracket + 〉 Right-Pointing Angle Bracket + # RTL mark after punctuation (U+200F Right-To-Left Mark) + text=s(r'([߹؟،߸!\.:\(\)\-\u2329\u232A«»])\s*<',r'\g<1>\u200F<',text) + # RTL mark after punctuation + + return(text[:-1]) # in dabased, remove trailing \n + + w.token=lat2nko(w.token) # simplified version ignores -la -da in verbs - still too big a hammer! + # print ("-> w.token:",w.token) return rule.outlist domatch = True else: # FIXME special case for 1:1 replacement: allows deep matching + # now supposedly fixed : need restructuring all this code instead of the following dirty fix! if rule.winsize == 1 and rule.inlist[0].type == 'w': - if rule.inlist[0].gloss.morphemes and rule.outlist[0].gloss.morphemes: + if rule.inlist[0].gloss.morphemes and rule.outlist[0].gloss.morphemes and False: # ============dirty fix + # print("¹¹¹ rule si morphemes G et D :",self.getstr(rule.inlist)," >> ",self.getstr(rule.outlist)) def replace_func(tokens, rule): token = tokens[0] target = rule.outlist[0] gt = self.replace(token, target) outgloss = gt.gloss._replace(morphemes=target.gloss.morphemes) gt = daba.formats.WordToken([outgloss], token=tokens[0].token, stage='dabased') + # print("### make_replace_func / gt:",gt) return [gt] domatch = True + #tried domatch = False else: + # print("²²² rule si pas morphemes G et D :",self.getstr(rule.inlist)," >> ",self.getstr(rule.outlist)) def replace_func(tokens, rule): + # print("###2 make_replace_func / tokens, rule:",tokens, rule) token = tokens[0].gloss + # print("###2 make_replace_func / token:",token) pattern = rule.inlist[0].gloss + # print("###2 make_replace_func / pattern :",pattern) target = rule.outlist[0].gloss - outgloss = self.recursive_replace(token, pattern, target) + # print("###2 make_replace_func / target:",target) + outgloss = self.recursive_replace(token, pattern, target,"") + # print("###2 make_replace_func / outgloss:",outgloss) # NOT OK gt = daba.formats.WordToken([outgloss], token=tokens[0].token, stage='dabased') + # print("replace_func gt:",gt) + + """ + # what is the justification for this test, it blocks changes + # like prn -> mrph in gloss like in + # jɛ̀ɲɔgɔn:n:associé [jɛ̀:v:assembler ɲɔ́gɔn:prn:RECP] >> jɛ̀ɲɔgɔn:n:associé [jɛ̀:v:assembler ɲɔgɔn:mrph:RECP] + # it will return jɛ̀ɲɔgɔn:n:associé [jɛ̀:v:assembler ] + # ... which fails if pattern.ps == target.ps: + print("###2 make_replace_func / same ps / tokens[0].union(gt):",tokens[0].union(gt)) + print("###2 make_replace_func / same ps / au lieu de gt :",gt) return [tokens[0].union(gt)] + else: + print("###2 make_replace_func / different ps / gt:",gt) return [gt] + """ + return [gt] domatch = False + # tried (stops early!) domatch = True else: def replace_func(tokens, rule): return [self.replace(token, target) @@ -306,9 +784,13 @@ def replace_func(tokens, rule): return (domatch, replace_func) def apply_rule(self, rule, stream): + global nchanges + # print("\n??? apply_rule / rule :",self.getstr(rule.inlist)," >> ",self.getstr(rule.outlist),"\n") # OK domatch, replace_func = self.make_replace_func(rule) # sys.stderr.write(u'Domatch {}\n'.format(str(domatch))) success = -rule.winsize + #print("rule, rule.winsize, stream:",rule, rule.winsize, stream) + #print("self.feed_tokens(rule.winsize, stream) : ",self.feed_tokens(rule.winsize, stream)) for pos, tokens in self.feed_tokens(rule.winsize, stream): if pos < success + rule.winsize: continue @@ -320,19 +802,27 @@ def apply_rule(self, rule, stream): # sys.stderr.write( # u'match: {}\n'.format(self.getstr(tokens)) # ) + # print("??? apply_rule / tokens passed to replace_tokens :",self.getstr(tokens)) # NOT OK + # print("??? apply_rule / rule passed to replace_rule :",self.getstr(rule.inlist)," >> ",self.getstr(rule.outlist)) replacement = replace_func(tokens, rule) + # print("??? apply_rule / replacement :",self.getstr(replacement)) # NOT OK # sys.stderr.write( # u'replacement: {}\n'.format(self.getstr(replacement)) # ) + # print("check all =") + # for g, r in zip_longest(tokens, replacement, fillvalue=daba.formats.PlainToken()): + # print("g, r, = : ",g,r, g == r) + # print("-?-",all(g == r for g, r in zip_longest(tokens, replacement, fillvalue=daba.formats.PlainToken()))) if not all(g == r for g, r in zip_longest( tokens, replacement, fillvalue=daba.formats.PlainToken())): self.dirty = True + nchanges+=1 if self.verbose: sys.stderr.write( - u'{0} -> {1}\n'.format( + u'\033[1m{0}\033[0m -> \033[92m{1}\033[0m\n'.format( self.getstr(tokens), self.getstr(replacement)) ) @@ -343,13 +833,16 @@ def apply_rule(self, rule, stream): continue yield tokens[0] else: - for token in tokens[1:]: - yield token + if 'tokens' in locals(): # why did I need to protect from an error here? + for token in tokens[1:]: + yield token def apply_script(self, script, stream): tokens = stream for rule in script: + # if self.verbose: print("~~~ apply_script / rule in script :",rule, "list(tokens):",list(tokens)) # OK tokens = self.apply_rule(rule, list(tokens)) + #if self.verbose: print("~~~ apply_script / returns tokens :",list(tokens)) return tokens @@ -369,12 +862,19 @@ def main(): sed = StreamEditor(verbose=args.verbose) script = ScriptParser(args.script) in_handler = daba.formats.HtmlReader(args.infile, compatibility_mode=False) + #print("metadata:",in_handler.metadata) + #print("textscript",in_handler.metadata['text:script']) + global textscript + textscript=in_handler.metadata['text:script'] + # print("script, in_handler:",script, in_handler) + global nchanges + nchanges=0 processed_tokens = list(sed.apply_script(script, in_handler)) if sed.dirty: out_handler = daba.formats.HtmlWriter((in_handler.metadata, in_handler.make_compatible_glosses(processed_tokens)), args.outfile) out_handler.write() if args.verbose: - sys.stderr.write(u'Written {0}\n'.format(args.outfile)) + sys.stderr.write(u'Written {0} : \033[3m{1} changes\033[0m\n'.format(args.outfile,nchanges)) if __name__ == '__main__': diff --git a/daba/formats.py b/daba/formats.py old mode 100644 new mode 100755 index 07fd70b..6844188 --- a/daba/formats.py +++ b/daba/formats.py @@ -37,7 +37,7 @@ from abc import abstractmethod import daba.grammar -from daba.ntgloss import Gloss +from daba.ntgloss import Gloss, __str__ from daba.orthography import detone #FIXME: duplicate, move to common util @@ -205,7 +205,7 @@ class SentenceListReader(BaseReader): def __init__(self, filename, encoding="utf-8"): self.isdummy = True self.metadata = {} - sent_re = '(?P)(?P(.|\n(?!)' + sent_re = r'(?P)(?P(.|\n(?!)' out = [] with open(filename, encoding=encoding) as f: txt = f.read() @@ -479,6 +479,7 @@ def __init__(self, metadata_para, filename, encoding="utf-8"): html = e.Element('html') head = e.SubElement(html, 'head') e.SubElement(head, 'meta', {'http-equiv': "Content-Type", 'content': "text/html; charset={0}".format(self.encoding)}) + # what about sorting metadata by key ? sortedmetadata=dict(sorted(metadata.items())) for (name, content) in self.metadata.items(): md = e.SubElement(head, 'meta', {'name': name, 'content': content}) body = e.SubElement(html, 'body') @@ -524,6 +525,7 @@ def _make_header(self): root = e.Element('html') head = e.SubElement(root, 'head') meta = e.SubElement(head, 'meta', {'http-equiv': 'Content-Type', 'content': 'text/html; charset={0}'.format(self.encoding)}) + # what about sorting metadata by key ? sortedmetadata=dict(sorted(metadata.items())) for (name, content) in self.metadata.items(): md = e.SubElement(head, 'meta', {'name': name, 'content': content}) style = e.SubElement(head, 'style', {'type': 'text/css'}) @@ -660,17 +662,38 @@ def __init__(self, udict, filename, lang='', name='', ver='', add=False, encodin def write(self): def makeGlossSfm(gloss,morpheme=False): - if not morpheme: - sfm = r""" -\lx {0} -\ps {1} -\ge {2} - """.format(gloss.form, '/'.join(gloss.ps), gloss.gloss) - for m in gloss.morphemes: - sfm = sfm + makeGlossSfm(m, morpheme=True) - else: - sfm = r'\mm ' + ':'.join([gloss.form or '', '/'.join(gloss.ps or ()), gloss.gloss or '']) + os.linesep + # example str(gloss): álalandiya:n:piété3 [álalandi:n:personne.pieuse [Ála:n:Dieu landi:adj:qui.aime] ya:mrph:ABSTR] + sfm="\n\\lx "+gloss.form + sfm+="\n\\ps "+'/'.join(gloss.ps) + sfm+="\n\\gf "+gloss.gloss + if gloss.morphemes: + lxroot,mrphx=str(gloss).split(" ",1) + sfm+=mmlist(str(mrphx[1:-1])) + sfm+="\n" return sfm + + def mmlist(mrphx): # can handle multiple level mm ( source: wordparser1 ) + mrphx=mrphx.replace("[","[ ") + mrphx=mrphx.replace("]"," ]") + mrphelem=mrphx.split(" ") + mmprefix="\n\\mm" + level=0 + mms="" + for elem in mrphelem: + if elem=="[": + level+=1 + mmprefix=mmprefix+"m" + elif elem=="]": + level-=1 + mmprefix=mmprefix[:-1] + else: + if ":" in elem: + mmlx,mmps,mmgloss=elem.split(":",2) + mms+=mmprefix+" "+mmlx+":"+mmps+":"+mmgloss # or tomonolith(mmgloss) ? + else: + mms+=mmprefix+" "+elem # ??? what happened ??? + return mms+"\n" + with codecs.open(self.filename, 'w', encoding=self.encoding) as dictfile: dictfile.write(u'\\lang {0}\n'.format(self.lang)) @@ -761,7 +784,8 @@ def __getitem__(self, gloss): if gs: lookup.append((form, (ps, gs))) if ms: - stems = [m for m in ms if 'mrph' not in m.ps] + stems = [m for m in ms if 'mrph' not in m.ps] # tried replace by JJM - tried keepmrph first + # stems = [m for m in ms ] # JJ removed: if 'mrph' not in m.ps if len(stems) == 1: g = stems[0] lookup.append((g.form, (g.ps, g.gloss))) @@ -799,10 +823,26 @@ def __delitem__(self, gloss): class DictReader(object): def __init__(self, filename, encoding='utf-8', store=True, variants=False, polisemy=False, keepmrph=False, - normalize=True, ignorelist=('i',), inverse=False, - lemmafields=('lx', 'le'), - variantfields=('ve', 'va', 'vc', 'a'), - glossfields=('gf', 'ge', 'dff'), canonical=False): + normalize=True, ignorelist=('i'), inverse=False, + lemmafields=('lx', 'le', 'va'), # JJM changed 'va',) to 'va') + variantfields=('vc', 'a'), # JJM removed 've', 28/12/2024 'vt', 06/04/2025 (but consequences if has mm: aded to lx/va twice! see edit 26-06-2025) + conditionalavoidfields=('ve'), # JJM added 06/01/2025 + glossfields=('gf', 'ge', 'gr', 'dff'), canonical=False): + # JJM moved va vt from variantfields to lemmafields as per our discussion 17 jan 2022 + # JJM added 'gr' to glossfields (malidaba) 22/6/2024 + # JJM question : are gvf gve gvr relevant here (gvf should be for polysemy) + # JJM 28/12/2024 remove 've' completely, not wanted as possible choice in gdisamb: kó = gó + # IMPORTANT! : 've' moved to ignorelist / existings tests and paragraphs about 've' to be ignored + # 06/01/2025: rolled back! + # JJM 06/01/2025 've' conditional avoid fields ("variants to avoid"): + # important to keep for gparser to guess. Example twa = tɔgɔ (bam) + # but some introduce too much unwanted ambiguity : + # Example (bam) : kó ve of gó (bad) as there are already other legitimate "ko" (lemmafields) + # => need to create a first pass to load all values of lemmafields in a list (avoidlist) + # then in 2d (normal) pass, check if ve already in avoidlist, then avoid, else add + # This handling is not ideal : + # One could with that "a man ko" would display ve "ko" (="go") if preceded by "man" or "ka" + # but this sentence analysis is beyond the scope of gparser self._dict = DabaDict() self._variants = VariantsDict(canonical=canonical) @@ -814,6 +854,7 @@ def __init__(self, filename, encoding='utf-8', store=True, self.inverse = inverse self.lemmafields = lemmafields self.variantfields = variantfields + self.conditionalavoidfields = conditionalavoidfields self.glossfields = glossfields ignore = False lemmalist = [] @@ -835,7 +876,8 @@ def parsemm(v): def normalize(value): try: - return normalizeText(value.translate({ord(u'.'): None, ord(u'-'):None}).lower()) + #return normalizeText(value.translate({ord(u'.'): None, ord(u'-'):None}).lower()) # JJM removes lower + return normalizeText(value.translate({ord(u'.'): None, ord(u'-'):None})) except AttributeError: return value @@ -891,57 +933,209 @@ def process_record(key, lemmalist, ps, glossdict): self._variants.add(list(zip(*lemmalist))[1]) with codecs.open(filename, 'r', encoding=encoding) as dictfile: + # print("open 1st pass:",filename) + # first pass: created avoid list later used to filter through conditionalavoidfields + avoidlist=[] + for line in dictfile: + if line.startswith('\\'): + #line = unicodedata.normalize('NFKD', line) = normalizeText + tag, space, value = line[1:].partition(' ') + value = value.strip() + if tag in self.lemmafields: + value = normalizeText(value) + if value not in avoidlist: + avoidlist.append(value) + + # normal pass: + with codecs.open(filename, 'r', encoding=encoding) as dictfile: + # print("open 2d pass:",filename) + mmlevel=0 + morphemetext="" + key="" for line in dictfile: self.line = self.line + 1 - # end of the artice/dictionary + # end of the article/dictionary if not line or line.isspace(): - if not ignore: - process_record(key, lemmalist, ps, glossdict) + if key and not ignore: + lemmalist2=[] # build lemmalist2 with key and Gloss + for x in lemmalist: + lkey=x[0] + lxkey=lkey + if ":" in lkey: lkey,lxkey=lkey.split(":",1) # special case generated by 've' + morphemetext=x[1] + if morphemetext: + #balance closing brackets + nrb=morphemetext.count("]") + nlb=morphemetext.count("[") + if nlb > nrb: + morphemetext+="]"*(nlb-nrb) + # elif nlb < nrb : # should not happen + + morphemetext=morphemetext.replace(" ]","]").strip() + morphemetext=" ["+morphemetext+"]" + morphemetext=lxkey+":"+pstext+":"+glosstext+morphemetext + + # morpheme as a Gloss + #print("morphemetext:",morphemetext) + try: + toks = daba.grammar.str_tokenize(morphemetext) + g = daba.grammar.stringgloss_parser().parse(toks) + except: + #print("erreur de mm sur : ",morphemetext) + continue + + lemmalist1=[] + lemmalist1.append(lkey) + lemmalist1.append(g) + lemmalist2.append(lemmalist1) + + process_record(key, lemmalist2, ps, glossdict) + + mmlevel=0 + morphemetext="" + ignore = False lemmalist = [] ps = () + glosstext="" glossdict = {} key = None lemma = None + elif line.startswith('\\'): - line = unicodedata.normalize('NFKD', line) + # line = unicodedata.normalize('NFKD', line) tag, space, value = line[1:].partition(' ') value = value.strip() + if tag in glossfields: + value = unicodedata.normalize('NFC',value) + else: + value = normalizeText(value) + if tag in ['lang', 'ver', 'name']: self._dict.__setattr__(tag, value) + elif tag in self.ignorelist: ignore = True + elif tag in self.lemmafields: if self.normalize: key = normalize(value) else: key = value - lemmalist.append(make_item(value)) - if not lemma: - lemma = value - elif tag in self.variantfields: - if lemma: - lemmalist.append(make_item(lemma, key=value)) - else: + + if " " in key : + key=key.replace(" "," ") # replace by hard space (cf enciclop "famous names") + # print("\033[1mILLEGAL\033[0m space in ",key," replaced by hard space") + + lemmalist1=[] + lemmalist1.append(key) + lemmalist1.append('') # Gloss in text form (morphemes) + lemmalist.append(lemmalist1) + morphemetext="" + mmlevel=0 + ignoremm=False + + elif tag in self.variantfields and tag not in self.conditionalavoidfields: # ve should inherit gloss from lx + if " " in value : + value=value.replace(" "," ") # replace by hard space (cf enciclop "famous names") + # print("\033[1mILLEGAL\033[0m space in ",key," '",tag,"' variant for ",value," replaced by hard space") + lemmalist1=[] + lemmalist1.append(value) + lemmalist1.append('') # Gloss in text form (morphemes) + lemmalist.append(lemmalist1) + # print("va? lemmalist:",lemmalist) + morphemetext="" + mmlevel=0 + ignoremm=False + #else: # shouldn't happen: variant should not come before lemma - lemmalist.append(make_item(value)) - elif tag in ['mm']: - lemmalist[-1][1] = lemmalist[-1][1]._replace(morphemes=lemmalist[-1][1].morphemes+(parsemm(value),)) + #lemmalist.append(make_item(value)) + + elif tag in self.conditionalavoidfields: + if value not in avoidlist: + # print("add ve:",value) + if " " in value : + value=value.replace(" "," ") # replace by hard space (cf enciclop "famous names") + # print("\033[1mILLEGAL\033[0m space in ",key," 've' variant for ",value," replaced by hard space") + try: + lemmalist1=[] + #lemmalist1.append(value) # try: value+":"+key and split before process to keep key ? (check for ":" in lkey string) + lemmalist1.append(value+":"+key) # tried lemmalist1.append("?"+value+":"+key)= never picked in gparser + lemmalist1.append(lemmalist[0][1]) # inherits lx gloss + lemmalist.append(lemmalist1) + # print("ve? lemmalist:",lemmalist) + # [['gó', ''], ['kó:gó', '']] + except: + print("error / value, key",value,key) + ignoremm=True + + elif tag=="vt": # JJM 26-06-2025 side effect of removing vt from variantfields + morphemetext="" + mmlevel=0 + ignoremm=True + + elif tag.startswith("mm") and not ignoremm : # caveat : supposed to be something like "mmmm" BUT could be as well "mmaa" + morphemetext="" + thislevel=len(tag)-2 + if mmlevelthislevel: + morphemetext+="]"*(mmlevel-thislevel)+" " + mmlevel=thislevel + morphemetext+=value+" " + lemmalist[-1][1] = lemmalist[-1][1]+morphemetext + elif tag in ['ps'] and not ps: if value: ps = tuple(value.split('/')) + pstext=value else: ps = () + elif tag in self.glossfields: + + if " " in value : + value=value.replace(" ",".") + # print("\033[1mILLEGAL\033[0m space in gloss for ",key," replaced by dot:",value) + glossdict[tag] = value - elif tag in ['gv']: + if tag=="gf": glosstext=value # otherwise the last glossfields will be published, eg russian! + + elif tag in ['gv','gvf']: # JJM added gvf 22/6/24 if polisemy: self._polisemy[key][select_gloss(glossdict)].append(value) dk = detone(key) if not dk == key: self._polisemy[dk][select_gloss(glossdict)].append(value) - else: - process_record(key, lemmalist, ps, glossdict) + + else: # when the for loop is finished, do the following (last line) + if key and not ignore: + lemmalist2=[] # build lemmalist2 with key and Gloss + for x in lemmalist: + lkey=x[0] + lxkey=lkey + if ":" in lkey: lkey,lxkey=lkey.split(":",1) # special case generated by conditionalavoidfields + morphemetext=x[1] + if morphemetext: + if mmlevel!=0: + morphemetext+="]"*mmlevel + morphemetext=morphemetext.replace(" ]","]").strip() + morphemetext=" ["+morphemetext+"]" + morphemetext=lxkey+":"+pstext+":"+glosstext+morphemetext + + # morpheme as a Gloss + try: + toks = daba.grammar.str_tokenize(morphemetext) + g = daba.grammar.stringgloss_parser().parse(toks) + except: + # print("ERR erreur de mm sur : ",morphemetext) + continue + lemmalist1=[] + lemmalist1.append(key) + lemmalist1.append(g) + lemmalist2.append(lemmalist1) + + process_record(key, lemmalist2, ps, glossdict) if not self._dict.attributed(): print(r"Dictionary does not contain obligatory \lang, \name or \ver fields.\ diff --git a/daba/gdisamb.py b/daba/gdisamb.py old mode 100644 new mode 100755 index 5839fcc..a1be0b3 --- a/daba/gdisamb.py +++ b/daba/gdisamb.py @@ -54,6 +54,9 @@ LocaldictLookupEvent, EVT_LOCALDICT_LOOKUP = wx.lib.newevent.NewCommandEvent() LocaldictSaveEvent, EVT_LOCALDICT_SAVE = wx.lib.newevent.NewCommandEvent() +global bamananGV, maninkaGV +bamananGV=True # JJM - default value for Gloss Validations specific to Bamanan +maninkaGV=False # JJM 24/03/2024 Settings should be saved # UTILITY functions and no-interface classes @@ -70,8 +73,11 @@ def get_basename(fname): like .pars.html and .dis.html""" basename = os.path.splitext(os.path.basename(fname))[0] pars = basename.rfind('.pars') + repl = basename.rfind('.repl') # added JJM if pars > 0: return basename[:pars] + elif repl > 0: + return basename[:repl] dis = basename.rfind('.dis') if dis > 0 and len(basename)-dis <= 7: return basename[:dis] @@ -96,6 +102,9 @@ def SetValue(self, string): def makeGlossString(gloss, morphemes=False): """string representation of the Gloss object (for labelling buttons and the like)""" + # print("makeGlossString morphemes passed:",morphemes) + # print("makeGlossString gloss.morphemes passed:",gloss.morphemes) + # print("makeGlossString gloss._str_ passed:",str(gloss)) if not ''.join(gloss.ps) and not gloss.gloss and not gloss.morphemes: return gloss.form elif morphemes and gloss.morphemes: @@ -114,9 +123,9 @@ class SentAnnot(object): ---------- pnum (int) : paragraph number (0-based) snum (int) : sentence number (0-based) - senntoken (PlainToken) : sentence token + senttoken (PlainToken) : sentence token senttext (str) : sentence text - glosslist ([WordToken]) : list of anntotations for each token in a sentence + glosslist ([WordToken]) : list of annotations for each token in a sentence selectlist ([[WordToken]]) : list of annotations selected by user (for each token) attrs (dict) : sentence-level attributes (proxy to senttoken.attrs) """ @@ -218,9 +227,18 @@ def write(self, filename): glosstoken.setGlosslist(selectlist) outgloss.append(glosstoken) out[-1].append((sent.senttoken, outgloss)) + # added JJM from format HtmlReader (removed numpar, unkown here) + # these were not updated on save (only on load) + for k, v in [ + ('_auto:words', self.numwords), + ('_auto:sentences', self.numsent) + ]: + self.metadata[k] = str(v) + fwriter = daba.formats.HtmlWriter((self.metadata, out), filename) fwriter.write() + class EditLogger(object): """log token edit operations""" @@ -272,7 +290,7 @@ def _searcher(self, searchstr, searchtype, startsent): self.matches = [] self.searchstr = searchstr self.history.append(self.searchstr) - if self.ignorecase: + if searchtype not in ('gf','in','re',) and self.ignorecase: searchstr = searchstr.lower() glosses = self.processor.glosses if startsent: @@ -287,6 +305,63 @@ def _searcher(self, searchstr, searchtype, startsent): # FIXME: should not happen if all words are proper GlossTokens except (AttributeError): print(word) + elif searchtype == "ps": + for wnum, word in enumerate(sent.glosslist): + try: + s0=":"+self.searchstr+":" + if s0 in str(word.gloss) : + match = (sent.snum, wnum) + self.matches.append(match) + # FIXME: should not happen if all words are proper GlossTokens + except (AttributeError): + print(word) + elif searchtype == "gf": + for wnum, word in enumerate(sent.glosslist): + try: + s1=":"+self.searchstr+" " + s2=":"+self.searchstr+"]" + sgloss=str(word.gloss)+" " + if s1 in sgloss or s2 in sgloss : + match = (sent.snum, wnum) + self.matches.append(match) + # FIXME: should not happen if all words are proper GlossTokens + except (AttributeError): + print("except in searcher searchtype 'gf' :",word) + elif searchtype == "lx": + for wnum, word in enumerate(sent.glosslist): + try: + s1=self.searchstr+":" + s2="["+s1 + s3=" "+s1 + sgloss=str(word.gloss) + if sgloss.startswith(s1) or s2 in sgloss or s3 in sgloss: + match = (sent.snum, wnum) + self.matches.append(match) + # FIXME: should not happen if all words are proper GlossTokens + except (AttributeError): + print("except in searcher searchtype 'lx' :",word) + elif searchtype == "in": + for wnum, word in enumerate(sent.glosslist): + try: + sgloss=str(word.gloss) + if searchstr in sgloss: + match = (sent.snum, wnum) + self.matches.append(match) + # FIXME: should not happen if all words are proper GlossTokens + except (AttributeError): + print("except in searcher searchtype 'in' :",searchstr,word) + elif searchtype == "re": + # print("_searcher 're' searchstr:",searchstr) + for wnum, word in enumerate(sent.glosslist): + try: + sgloss=str(word.gloss) + # print("_searcher 're' sgloss:",sgloss, re.search(searchstr,sgloss)) + if re.search(searchstr,sgloss): + match = (sent.snum, wnum) + self.matches.append(match) + # FIXME: should not happen if all words are proper GlossTokens + except (AttributeError): + print("except in searcher searchtype 're' :",searchstr,word) elif searchtype == 'sentence part': for matchobj in re.finditer(self.searchstr, sent.senttext): self.matches.append((sent.snum, matchobj)) @@ -302,6 +377,21 @@ def find(self, searchstr, startsent=0): """ if ' ' in searchstr: searchtype = 'sentence part' + elif searchstr.startswith(':::'): + searchtype = "gf" + searchstr=normalizeText(searchstr[3:]) + elif searchstr.startswith('::'): + searchtype = "ps" + searchstr=searchstr[2:] + elif searchstr.startswith(":"): + searchtype='lx' + searchstr=searchstr[1:] + elif searchstr.startswith('**'): + searchtype = "re" + searchstr=searchstr[2:] + elif searchstr.startswith("*"): + searchtype='in' + searchstr=searchstr[1:] else: searchtype = 'word part' matches = self._searcher(searchstr, searchtype, startsent) @@ -349,9 +439,31 @@ def onMouseEvent(self, event): self.GetTopLevelParent().sentpanel.OnSaveResults(event) self.GetTopLevelParent().ShowSent(self.num) self.GetTopLevelParent().Layout() - + self.GetTopLevelParent().notebook.ChangeSelection(0) # added JJM: switches to sentpanel event.Skip() +class MetaText(wx.StaticText): + """Meta data overview widget""" + def __init__(self, parent, id, num=None, *args, **kwargs): + wx.StaticText.__init__(self, parent, *args, **kwargs) + self.num = num + self.parent = parent + + font = wx.Font(12, wx.FONTFAMILY_MODERN, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL) + self.SetFont(font) + + + """def onMouseEvent(self, event): + + if event.Moving(): + self.SetCursor(wx.StockCursor(wx.CURSOR_HAND)) + elif event.LeftDown(): + self.GetTopLevelParent().metapanel.OnSaveResults(event) + self.GetTopLevelParent().ShowSent(self.num) + self.GetTopLevelParent().Layout() + + event.Skip() + """ class GlossButton(wx.Panel): """Single button widget for selecting a gloss variant @@ -365,13 +477,13 @@ class GlossButton(wx.Panel): children (list) : a list of the nested morphemes of a gloss gloss (Gloss) : widget's Gloss """ - def __init__(self, parent, gloss, statecolours, disabled=False, + def __init__(self, parent, gloss, statecolours, disabled=False, addbylocaldict=False, *args, **kwargs): """GlossButton constructor :param gloss: Gloss to be displayed on the button :type gloss: Gloss - :param statecolors: colors for vairous state of the selector + :param statecolors: colors for various state of the selector :type statecolors: dict""" wx.Panel.__init__(self, parent, *args, **kwargs) self.selected = False @@ -379,18 +491,24 @@ def __init__(self, parent, gloss, statecolours, disabled=False, self.gloss = gloss self.disabled = disabled self.statecolours = statecolours + self.addbylocaldict = addbylocaldict box = wx.BoxSizer(wx.VERTICAL) # prepare main gloss button + textforbutton=makeGlossString(gloss) + if self.addbylocaldict: textforbutton="*"+textforbutton if self.disabled: - self.main = wx.Button(self, -1, makeGlossString(gloss)) + self.main = wx.Button(self, -1, textforbutton) self.main.Disable() else: - self.main = wx.ToggleButton(self, -1, makeGlossString(gloss)) + self.main = wx.ToggleButton(self, -1, textforbutton) self.main.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggled) fore, back = self.statecolours['deselected'] self.main.SetForegroundColour(fore) - self.main.SetBackgroundColour(back) + if self.addbylocaldict: + self.main.SetBackgroundColour((255, 230, 200, 255)) # some sort of beige? + else: + self.main.SetBackgroundColour(back) self.Refresh() box.Add(self.main, 0, wx.EXPAND) # prepare morphemes buttons recursively @@ -418,11 +536,17 @@ def DoToggle(self): if self.selected: fore, back = self.statecolours['selected'] self.main.SetForegroundColour(fore) - self.main.SetBackgroundColour(back) + if self.addbylocaldict: + self.main.SetBackgroundColour((255, 230, 200, 255)) # some sort of beige? + else: + self.main.SetBackgroundColour(back) else: fore, back = self.statecolours['deselected'] self.main.SetForegroundColour(fore) - self.main.SetBackgroundColour(back) + if self.addbylocaldict: + self.main.SetBackgroundColour((255, 230, 200, 255)) # some sort of beige? + else: + self.main.SetBackgroundColour(back) self.Refresh() self.ToggleChildren() @@ -453,6 +577,7 @@ def __init__(self, parent, id, title, gloss, *args, **kwargs): wx.Dialog.__init__(self, parent, id, title, style=wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER, *args, **kwargs) + self.as_gloss = gloss self.morphemes = [] self.save = True @@ -463,8 +588,12 @@ def __init__(self, parent, id, title, gloss, *args, **kwargs): config.Read('colors/deselected/back', 'White'))} vbox_top = wx.BoxSizer(wx.VERTICAL) + global bamananGV,maninkaGV + texte_à_afficher="Composez votre glose | x:ps:gloss [y...] | Gloss string" + if bamananGV: texte_à_afficher="(bam) "+texte_à_afficher + elif maninkaGV: texte_à_afficher="(emk) "+texte_à_afficher vbox_top.Add(wx.StaticText(self, wx.ID_ANY, - "Gloss string (edit inplace):")) + texte_à_afficher,size=(600,20))) # JJM dirty trick to enlarge dialog glossstring = str(self.as_gloss) self.glosstext = wx.ComboBox(self, wx.ID_ANY, glossstring, choices=[glossstring]) @@ -491,12 +620,43 @@ def FitGlosstextWidth(self): self.GetSizer().SetItemMinSize(self.glosstext, (gwidth + 15, gheight + 10)) self.Layout() self.Fit() + + def tomonolith(m) : + mapping = { 'à':'à', 'â':'â', 'é':'é', 'ê':'ê', 'è':'è', 'ë':'ë', 'î':'î', 'ï':'ï', 'ô':'ô', 'û':'û', 'ù':'ù', 'ç':'ç', 'À':'À', 'Ç':'Ç', 'Ê':'Ê', 'Ô':'Ô'} + lxps=m.groups()[0] + gloss=m.groups()[1] + for k, v in mapping.items(): + if k in gloss: + gloss = gloss.replace(k, v) + return lxps+gloss def UpdateInterface(self, gloss): + """ + def tomonolith(m) : + mapping = { 'à':'à', 'â':'â', 'é':'é', 'ê':'ê', 'è':'è', 'ë':'ë', 'î':'î', 'ï':'ï', 'ô':'ô', 'û':'û', 'ù':'ù', 'ç':'ç', 'À':'À', 'Ç':'Ç', 'Ê':'Ê', 'Ô':'Ô'} + lxps=m.groups()[0] + gloss=m.groups()[1] + for k, v in mapping.items(): + if k in gloss: + gloss = gloss.replace(k, v) + return lxps+gloss + """ """update dialog (gbutton, glosstext) given a gloss""" self.freeze = True - glossstring = str(gloss) + glossstring = str(gloss) # ou bien self.glosstext ? + # glossstring = re.sub(r'([^\:\[ ]+\:[^\:\[ ]*\:)([^\: ]+)',tomonolith,glossstring) # JJM temp fix cursor = self.glosstext.GetInsertionPoint() + #print("'"+glossstring+"', len(glossstring):",len(glossstring), ", cursor:", cursor) + diacritics="\u0301\u0300\u0302\u030c\u00B8\u0308\u005e\u02c6" # high, low, decreasing, increasing tone diacritics + cedilla and diaeresis (trema as in ë) + #print("fin de glossstring=",glossstring[-1]) + if glossstring[-1] in diacritics: + cursor=len(glossstring) # JJM in case monolith characters are split : ê -> e ̂ + elif cursor",savedglosses) + # font = wx.Font(10, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, True) + # N'ko: essayer aussi en enlevant l'article tonal final (?), ou en l'ajoutant + elif textscript=="N’Ko" : + if formlookup[-1]=="`" : + formlookup=formlookup[:-1] + if formlookup in self.GetTopLevelParent().localdict: + savedglosses = self.GetTopLevelParent().localdict[formlookup] + else: + formlookup=formlookup+"`" + if formlookup in self.GetTopLevelParent().localdict: + savedglosses = self.GetTopLevelParent().localdict[formlookup] + + if len(savedglosses)>0: + for gloss in savedglosses: + if gloss not in alreadyAdded: + self.gbutton = GlossButton(self, gloss, self.statecolours,addbylocaldict=True) + self.children.append(self.gbutton) + self.sizer.Add(self.gbutton, 0, *self.sizerflags) + alreadyAdded.append(gloss) + # end JJM + if len(self.glosslist) > 1: + # above JJM code was here in 1st implementation - but red button could not benefit from localdict + for gloss in glosslist: - gbutton = GlossButton(self, gloss, self.statecolours) - self.children.append(gbutton) - self.sizer.Add(gbutton, 0, *self.sizerflags) + # JJM add : screen already added buttons + if gloss not in alreadyAdded: + gbutton = GlossButton(self, gloss, self.statecolours) + self.children.append(gbutton) + self.sizer.Add(gbutton, 0, *self.sizerflags) self.SetSizer(self.sizer) self.Layout() @@ -868,10 +1213,10 @@ def GetWordToken(self): def OnContextMenu(self, evt): """context menu shown on right-click on selector's area""" if not hasattr(self, "joinfwID"): - self.joinfwID = wx.NewId() - self.joinbwID = wx.NewId() - self.splitID = wx.NewId() - self.changeID = wx.NewId() + self.joinfwID = wx.NewIdRef(count=1) # was NewId() JJM + self.joinbwID = wx.NewIdRef(count=1) # was NewId() + self.splitID = wx.NewIdRef(count=1) # was NewId() + self.changeID = wx.NewIdRef(count=1) # was NewId() self.Bind(wx.EVT_MENU, self.OnJoinForward, id=self.joinfwID) self.Bind(wx.EVT_MENU, self.OnJoinBackward, id=self.joinbwID) @@ -1130,19 +1475,28 @@ def calcCharSpans(self, tokenbuttons): self.charspans = [] startchar = 0 charlength = 0 + metadict=self.GetTopLevelParent().processor.metadata # added JJM 03/10/24 + + textscript="" + if "text:script" in metadict: + textscript=metadict["text:script"] + for btn in tokenbuttons: token = btn.token.token charlength = len(token) tokenindex = self.text[startchar:].find(token) - if tokenindex == -1: - # FIXME: handle missing tokens properly - tokenindex = startchar - charlength = 0 - notfound = wx.MessageDialog(self, u'Token not found in the source sentence: ' + token, 'Token not found', wx.OK) - notfound.ShowModal() - notfound.Destroy() - else: + if textscript=="N’Ko": # FIX THIS (charlength irrelevant)/do not call calcCharSpans for N'ko ? tokenindex += startchar + else: + if tokenindex == -1: + # FIXME: handle missing tokens properly + tokenindex = startchar + charlength = 0 + notfound = wx.MessageDialog(self, u'Token not found in the source sentence: ' + token, 'Token not found', wx.OK) + notfound.ShowModal() + notfound.Destroy() + else: + tokenindex += startchar charspan = (tokenindex, charlength) startchar = tokenindex+charlength self.charspans.append(charspan) @@ -1172,6 +1526,16 @@ def SetSentence(self, senttoken, tokenbuttons): """typeset and color sentence text, attach button ids""" self.token = senttoken self.text = senttoken.value + # two fixes (should be fixed elsewhere) - are there more "sentences" ? + self.GetTopLevelParent().sentpanel.senttext = self.text # fixed JJM : after token split/join OnCopyToClipboard was returning old sentence + # now fixed below : if subsequent sentence split, old sentence before after token split/join still there! created havok + self.GetTopLevelParent().processor.glosses[self.GetTopLevelParent().sentpanel.snum].senttext = self.text + #print("SetSentence - processor.glosses[snum]:") + #sent=self.GetTopLevelParent().processor.glosses[self.GetTopLevelParent().sentpanel.snum] + #print("SetSentence - glosses... senttext=",sent.senttext) + #for g in sent.glosslist: + # print(str(g)) + self.calcCharSpans(tokenbuttons) self.SetText(self.text) self.SetReadOnly(True) @@ -1258,6 +1622,8 @@ def UpdateText(self, start, end, newtext, snum): """replace characters between start and end with newtext, update colors and button bindings""" self.text = ''.join([self.text[:start], newtext, self.text[end:]]) self.token.value = self.text + #print("UpdateText self.token.value",self.token.value) + #print("UpdateText self.token",self.token) sentevent = SentenceEditEvent(self.GetId(), snum=snum, sent=self.token) wx.PostEvent(self.GetEventHandler(), sentevent) @@ -1268,9 +1634,9 @@ def Highlight(self, start, end): def OnContextMenu(self, evt): """pop-up sentence context menu on right-click""" if not hasattr(self, "joinfwID"): - self.splitID = wx.NewId() - self.joinfwID = wx.NewId() - self.joinbwID = wx.NewId() + self.splitID = wx.NewIdRef(count=1) # was NewId() JJM + self.joinfwID = wx.NewIdRef(count=1) # was NewId() + self.joinbwID = wx.NewIdRef(count=1) # was NewId() self.Bind(wx.EVT_MENU, self.OnJoinForward, id=self.joinfwID) self.Bind(wx.EVT_MENU, self.OnJoinBackward, id=self.joinbwID) @@ -1311,12 +1677,15 @@ def OnSplitSentence(self, evt): bytepos = self.GetCurrentPos() charpos = self.calcCharPos(bytepos) last = len(self.text) + #print("OnSplitSentence - text:",self.text) if charpos < last: first = self.intervals.overlap(0, charpos) tnum = len(first) if self.intervals[charpos]: charpos = charpos-1 if self.intervals[charpos]: + #print("OnSplitSentence -impossible- intervals[charpos]=",self.intervals[charpos]) + # On ne peut splitter qu'entre deux "boutons": pas de boutons pour les ponctuations et les Tags... dommage! self.SplitImpossibleError(evt) return # make sure that both parts contain tokens @@ -1325,6 +1694,7 @@ def OnSplitSentence(self, evt): ssplitevent = SentenceSplitEvent(self.GetId(), snum=snum, tnum=tnum, charpos=charpos) wx.PostEvent(self.GetEventHandler(), ssplitevent) else: + #print("OnSplitSentence -impossible- tnum, len(charspan)",tnum,len(self.charspans)) self.SplitImpossibleError(evt) def SplitImpossibleError(self, e): @@ -1373,13 +1743,15 @@ def SetSentence(self, senttoken, snum): self.snum = snum if senttoken.attrs: alist = senttoken.attrs.items() - alist.sort() + #alist.sort() # no longer works in Python 3 + alist=sorted(alist) # mod JJM 6/11/24 for keytext, value in alist: key = wx.StaticText(self, wx.ID_ANY, keytext) field = wx.TextCtrl(self, wx.ID_ANY, value) field.Bind(wx.EVT_TEXT, self.OnEditValue) delbutton = wx.Button(self, wx.ID_ANY, style=wx.BU_EXACTFIT | wx.BU_NOTEXT) - delbutton.SetBitmapLabel(wx.ArtProvider.GetBitmap(wx.ART_DELETE | wx.ART_MENU)) + #delbutton.SetBitmapLabel(wx.ArtProvider.GetBitmap(wx.ART_DELETE | wx.ART_MENU)) + delbutton.SetBitmapLabel(wx.ArtProvider.GetBitmap(wx.ART_DELETE)) # JJM 6/11/24 delbutton.Bind(wx.EVT_BUTTON, self.OnDeleteAttribute) self.fields[keytext] = field self.attrs[keytext] = value @@ -1451,20 +1823,185 @@ def __init__(self, parent, *args, **kwargs): wx.ScrolledWindow.__init__(self, parent, *args, **kwargs) self.SetScrollRate(20, 20) self.parent = parent + self.Sizer = wx.BoxSizer(wx.VERTICAL) + self.isFileShown=False + self.st = SentText(self, -1, num=-1, style=wx.ST_NO_AUTORESIZE) def ShowFile(self, sentlist): """show source text for a file""" - Sizer = wx.BoxSizer(wx.VERTICAL) + + if self.isFileShown: + # print("ShowFile : Clear & Remove") + self.Sizer.Clear(delete_windows=True) # that's the key element missing : delete_windows=True + self.Sizer.Remove(self.Sizer) # proably does not do a thing... + + # added JJM : load html file & html sentences and gloss + #fileIN = open(os.path.join(self.GetTopLevelParent().dirname, self.GetTopLevelParent().filename), "r") # OK on Unix, not windows + fileIN=codecs.open(os.path.join(self.GetTopLevelParent().dirname, self.GetTopLevelParent().filename), 'r', encoding="UTF-8") + htmlfile=fileIN.read() + fileIN.close() + htmlfile=re.sub(r"\r\n","\n",htmlfile,0,re.U|re.MULTILINE) # takes care of windows line endings? + + head,body=htmlfile.split("") + # old format ? + # check if body has strange sentence ending sequence + body=re.sub(r'\n\n','\n\n\n',body,0,re.U|re.MULTILINE) + + if '\n\n\n\n") + + #Sizer = wx.BoxSizer(wx.VERTICAL) for n, senttoken in enumerate(sentlist): - st = SentText(self, -1, num=n, style=wx.ST_NO_AUTORESIZE) - st.SetLabel(senttoken.value) - st.Wrap(self.GetClientSize().GetWidth()-20) - st.Bind(wx.EVT_LEFT_DOWN, st.onMouseEvent) - Sizer.Add(st, 1, wx.EXPAND) + self.st = SentText(self, -1, num=n, style=wx.ST_NO_AUTORESIZE) + stv=senttoken.value # JJM : stv and stv handling - add marker for ambiguity in sentence + stv=re.sub(r'\n','␤',stv) + stv=str(n+1)+". "+stv + padleft="\t \t" - self.SetSizer(Sizer) + # broken html structures may break here + try: + if "lemma var" in sentences[n]: padleft="\t*\t" + except IndexError: + pass + + stv=padleft+stv + self.st.SetLabel(stv) + #st.SetLabel(senttoken.value) + self.st.Wrap(self.GetClientSize().GetWidth()-20) + self.st.Bind(wx.EVT_LEFT_DOWN, self.st.onMouseEvent) + #Sizer.Add(st, 1, wx.EXPAND) + self.Sizer.Add(self.st, 1, wx.EXPAND) + + #self.SetSizer(Sizer) + self.SetSizer(self.Sizer) self.Layout() + self.isFileShown=True +class MetaPanel(wx.ScrolledWindow): + def __init__(self, parent, *args, **kwargs): + wx.ScrolledWindow.__init__(self, parent, *args, **kwargs) + self.SetScrollRate(20, 20) + self.parent = parent + self.isMetaShown=False + self.Sizer = wx.BoxSizer(wx.VERTICAL) + + def ShowMetas(self, metadata): + + if self.isMetaShown: + self.Sizer.Clear(delete_windows=True) # that's the key element missing : delete_windows=True + self.Sizer.Remove(self.Sizer) # probably does not do a thing... + + metas={} + items=[] + authors=False + for x,y in metadata.items(): + item,subitem=x.split(":") + if item=="author": + if subitem=="name": subitem="_name" # force sorting as 1st + elif item in ["source","text"] : + if subitem=="title": subitem="_title" + + if item in items: + if item=="author" and authors: + vy=y.split("|") + authindex=0 + for v in vy: + authindex+=1 + metas[item][authindex][subitem]=v + else: + metas[item][subitem]=y + else: + items.append(item) + if item=="author": + if "|" in y: + vy=y.split("|") + authors=True + authindex=0 + for v in vy: + authindex+=1 + if authindex==1: + metas[item]={authindex: {subitem:v}} + else : metas[item][authindex]={subitem:v} + else: + metas[item]={subitem:y} + #print("\n",metas,"\n") + else: + metas[item]={subitem:y} + + # print sorted metas + metatxt="\n" + for x,y in sorted(metas.items()): + metatxt+=x+"\n" + for w,z in sorted(y.items()): + if x=="author" and authors: + metatxt+="\t"+str(w)+"\n" + for wn,zn in sorted(z.items()): + metatxt+="\t\t"+wn.strip("_")+" :\t "+zn+"\n" + else: + metatxt+="\t"+w.strip("_")+" :\t "+z+"\n" + metatxt=metatxt.replace("\n","\n ") + + self.st= wx.TextCtrl(self,style=wx.TE_MULTILINE|wx.TE_DONTWRAP) + self.st.SetValue(metatxt) + #font = wx.Font(12, wx.FONTFAMILY_MODERN, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL) + #self.SetFont(font) + self.metafont = self.GetFont() + self.metafont.SetPointSize(self.metafont.GetPointSize() + 2) + self.st.SetFont(self.metafont) + self.Sizer.Add(self.st, 1, wx.EXPAND) + + self.SetSizer(self.Sizer) + self.Layout() + self.isMetaShown=True + +class DictPanel(wx.ScrolledWindow): + def __init__(self, parent, *args, **kwargs): + wx.ScrolledWindow.__init__(self, parent, *args, **kwargs) + self.SetScrollRate(20, 20) + self.parent = parent + self.isDictShown=False + self.Sizer = wx.BoxSizer(wx.VERTICAL) + + def ShowDict(self,localdictfile): + global ldtext + if self.isDictShown: + # print("ShowDict : Clear & Remove") + self.Sizer.Clear(delete_windows=True) # that's the key element missing : delete_windows=True + self.Sizer.Remove(self.Sizer) # probably does not do a thing... + + if os.path.exists(localdictfile): + #ldfile=open(localdictfile,'r') # OK only on UNix + ldfile=codecs.open(localdictfile, 'r', encoding="UTF-8") + ldtext=ldfile.read() + ldtext=re.sub(r"\r\n","\n",ldtext,0,re.U|re.MULTILINE) # takes care of windows line endings? + ldfile.close() + else : ldtext="vous n'avez pas de localdict pour l'instant" + self.ldfile=localdictfile + + centeredLabel = wx.StaticText(self, -1, localdictfile) + self.Sizer.Add(centeredLabel, flag=wx.ALIGN_CENTER_HORIZONTAL) + self.st= wx.TextCtrl(self,style=wx.TE_MULTILINE) + self.st.SetValue(ldtext) + self.Sizer.Add(self.st, 1, wx.EXPAND) + submitButton = wx.Button(self, wx.ID_SAVE,'Save') + submitButton.Bind(wx.EVT_BUTTON, self.OnSave) + self.Sizer.Add(submitButton,0,wx.ALIGN_CENTER) + self.SetSizer(self.Sizer) + self.Layout() + self.isDictShown=True + + def OnSave(self,e): + ldfile=codecs.open(self.ldfile, 'w', encoding="UTF-8") + ldtext=self.st.GetValue() + ldfile.write(ldtext) + ldfile.close() + self.GetTopLevelParent().SetLocaldict(self.ldfile) + class SentPanel(wx.Panel): """Manual disambiguation panel @@ -1488,6 +2025,7 @@ class SentPanel(wx.Panel): searchbutton (wx.SearchCtrl) : search query input field findprevbutton : find previous findnextbutton : find next + nextambigbutton : jump to next sentence with ambiguous words navsizer : navigation sizer sentsource (SentenceText) : sentence text widget sentattrs (SentAttributes) : sentence-level attributes panel @@ -1516,8 +2054,9 @@ def __init__(self, parent, vertical=True, *args, **kwargs): savebutton = wx.Button(self, wx.ID_ANY, 'Save results') savebutton.Bind(wx.EVT_BUTTON, self.OnSaveResults) self.searchbutton = wx.SearchCtrl(self, size=(200, -1), style=wx.TE_PROCESS_ENTER) - self.findprevbutton = wx.Button(self, wx.ID_ANY, '') + self.findprevbutton = wx.Button(self, wx.ID_ANY, '←ꙭ') + self.findnextbutton = wx.Button(self, wx.ID_ANY, 'ꙭ→') + self.nextambigbutton = wx.Button(self, wx.ID_ANY, '???►►') self.navsizer = wx.BoxSizer(wx.HORIZONTAL) sentenceno = wx.StaticText(self, wx.ID_ANY, "Sentence No") sentenceno.SetFont(self.sentfont) @@ -1530,6 +2069,7 @@ def __init__(self, parent, vertical=True, *args, **kwargs): self.navsizer.Add(self.sentof, 0) self.navsizer.Add(prevbutton, 0) self.navsizer.Add(nextbutton, 0) + self.navsizer.Add(self.nextambigbutton, 0) self.navsizer.Add(savebutton, 0) self.navsizer.Add(self.searchbutton, 0, wx.EXPAND) self.navsizer.Add(self.findprevbutton, 0) @@ -1537,11 +2077,17 @@ def __init__(self, parent, vertical=True, *args, **kwargs): copybutton = wx.Button(self, wx.ID_COPY) copybutton.Bind(wx.EVT_BUTTON, self.OnCopyToClipboard) self.navsizer.Add(copybutton) + copybutton2 = wx.Button(self, wx.ID_ANY, "Copy2") + copybutton2.Bind(wx.EVT_BUTTON, self.OnCopyToClipboard2) + self.navsizer.Add(copybutton2) + copybuttonrepl = wx.Button(self, wx.ID_ANY, "Copyrepl") # added 14/nov/2024 + copybuttonrepl.Bind(wx.EVT_BUTTON, self.OnCopyToClipboardRepl) + self.navsizer.Add(copybuttonrepl) self.sentsource = SentenceText(self) self.sentattrs = SentAttributes(self) self.Sizer.Add(self.navsizer) self.Sizer.Add(self.sentsource, 0, wx.EXPAND) - self.Sizer.Add(self.sentattrs, 0, wx.EXPAND) + self.Sizer.Add(self.sentattrs, 0, wx.EXPAND) # reset by JJM 6/nov/24 self.SetSizer(self.Sizer) self.Layout() @@ -1559,6 +2105,7 @@ def CreateGlossButtons(self): tokenbuttons = [] self.annotlist = wx.lib.scrolledpanel.ScrolledPanel(self, wx.ID_ANY) self.annotlist.SetScrollRate(20, 20) + self.annotlist.SetBackgroundColour((236, 211, 211, 255)) # was (60, 25, 25, 25) if self.vertical: annotsizer = wx.BoxSizer(wx.HORIZONTAL) else: @@ -1575,11 +2122,22 @@ def ShowSent(self, sentannot): """set sentence data attributes and show widgets""" self.senttoken, self.selectlist, self.tokenlist, self.sentindex = sentannot.as_tuple() self.senttext = sentannot.senttext.strip() + #print ("ShowSent *** sentannot :",sentannot) + """ + print ("*** self.senttoken :",self.senttoken) + print ("*** self.selectlist :",self.selectlist) + #print ("*** self.tokenlist :",self.tokenlist) + print ("*** self.sentindex :", self.sentindex) + print ("self.senttext :",self.senttext) + print ("self.isshown :",self.isshown) + """ + if self.isshown: self.sentsource.ClearSentence() self.sentattrs.ClearSentence() self.Sizer.Remove(self.annotlist.GetSizer()) self.annotlist.Destroy() + self.snum = sentannot.snum self.sentnumbutton.SetValue(self.snum+1) tokenbuttons = self.CreateGlossButtons() @@ -1622,6 +2180,189 @@ def OnCopyToClipboard(self, evt): wx.TheClipboard.SetData(clipdata) wx.TheClipboard.Close() + def OnCopyToClipboard2(self, evt): + """copy sentence text to a clipboard""" + global copy2spacer + if self.senttext: + clipdata2 = wx.TextDataObject() + #clipdata2.SetText(self.senttext) - build it from ligne2 + l2orig="" + l2lx="" + l2ps="" + l2gloss="" + #print("OnCopyToClipboard2: CHECK toknum, (token, selectlist):\n") + glosses = self.GetTopLevelParent().processor.glosses + sent= glosses[self.snum] + # is there a way to generate table only for selected text ??? + # try to get selection + # frm, to = sent.GetSelection() # AttributeError: 'SentAnnot' object has no attribute 'GetSelection' + # frm, to = self.sentsource.GetSelection() + # myselection=self.sentsource.GetStringSelection() + myselectedtext=self.sentsource.GetSelectedText() + myselectedtext=myselectedtext.strip() + myselectedtext=myselectedtext.replace('\u07f8', ",") # N'Ko COMMA - as done in line 2 + myselectedtext=myselectedtext.replace('\u060c', ",") # Arabic comma + myselectedtext=myselectedtext.replace(' , ', ", ") + myselectedtext=myselectedtext.replace('\u061f', "?") # Arabic question mark + myselectedtext=myselectedtext.replace('؛', r":") # U+061B ؛ ARABIC SEMICOLON + myselectedtext=myselectedtext.replace('\u066a', "%") # Arabic Percent sign ٪ + myselectedtext=myselectedtext.replace('\u07f9', "!") # N'Ko EXLAMATION MARK + # selstart=self.sentsource.GetSelectionStart() # same values as frm,to + # selend=self.sentsource.GetSelectionEnd() + # print("GetSelection: frm,to=",frm,to) + # print("selstart, selend=",selstart, selend) + # frm=int(frm/2) # these values seem erratic and unusable!!! + # to=int(to/2) + # rem ; senttext =? sentsource.text - no: sentsource.text should be used, but still, results are impredictable + # print('senttext="'+self.senttext+'"') + # print('sentsource.text="'+self.sentsource.text+'"') + # print("GetSelection:self.senttext[",frm,":",to,"]=",self.senttext[frm:to]) + # print("GetSelection:self.sentsource.text[",frm,":",to,"]=",self.sentsource.text[frm:to]) + # print("GetStringSelection:myselection",myselection) # same as above + #print("GetSelectedText:myselectedtext",myselectedtext) # results OK but position in sentence is unknown- can only select 1st occurrence + # tried and failed with encoder/decoder + # print(self.sentsource.charspans) # how did they get this right ? ah, they don't use mouse selections! + # end try + # print("sent.glosslist=",sent.glosslist) + mysentlist=[] + for w in sent.glosslist: + mysentlist.append(w.token) + """ + print("senttoken=",self.senttoken) + print("senttoken.value=",self.senttoken.value) + #mytoks=enumerate(zip(self.senttoken)) + #print("mytoks=",mytoks) + print("senttext=",self.senttext) + mysent=self.senttext # need a better way!!!?? ????????????? + # this approach fails in case of split / join + #mysent=self.senttoken.value + #mysent=mysent.strip() + mysent=mysent.replace("ߵ","ߵ ") + mysent=mysent.replace("."," .") + mysent=mysent.replace('\u07f8', " \u07f8") # N'Ko COMMA + mysent=mysent.replace('\u060c', " \u060c") # Arabic comma + mysent=mysent.replace('\u061f', " \u061f") # Arabic question mark + mysent=mysent.replace('؛', r" ؛") # U+061B ؛ ARABIC SEMICOLON + mysent=mysent.replace('\u07fa', " \u07fa") # N'KO LAJANYALAN + mysent=mysent.replace('\u066a', " \u066a") # Arabic Percent sign ٪ + mysent=mysent.replace('\u07f9', " \u07f9") # N'Ko EXLAMATION MARK + mysent=mysent.replace('\n', " ") # Newline side-effects + while " " in mysent: + mysent=mysent.replace(" "," ") + mysent=mysent.strip() + mysentlist=mysent.split(" ") + """ + mysentlistselected="" + for (toknum, (token, selectlist)) in enumerate(zip(self.tokenlist, self.selectlist)): + if selectlist: + mytokenlist=selectlist + else: + mytokenlist=token.glosslist + mytoken=mytokenlist[0] + # print("mytoken:", mytoken) + if myselectedtext!="": + if mysentlistselected=="": mysentlistselected=mysentlistselected+mysentlist[toknum] + else: + if mytoken.gloss=="c" or mysentlistselected[-1] in ["'","’","ߴ","ߵ"]: # added N'ko apostrophes (high & low tone) + mysentlistselected=mysentlistselected+mysentlist[toknum] + else: mysentlistselected=mysentlistselected+" "+mysentlist[toknum] + # print("mysentlistselected:",mysentlistselected) + # CAUTION this only handles some punctuations !!! + if not myselectedtext.startswith(mysentlistselected) : + mysentlistselected="" # wrong sequence, start over again - Note this will only get the first occurrence of a selected sequence! + l2orig="" + l2lx="" + l2ps="" + l2gloss="" + continue + mylx=mytoken.form + myps="/".join(mytoken.ps) + mygloss=mytoken.gloss + if mygloss==None: mygloss="" + if mygloss=="" : + for mymorph in mytoken.morphemes: + if mymorph.gloss!=None: mygloss+=mymorph.gloss+"_" + mygloss=mygloss[:-1] + l2orig=l2orig+mysentlist[toknum]+copy2spacer + l2lx+=mylx+copy2spacer + l2ps+=myps+copy2spacer + #print("mygloss:",mygloss) + l2gloss+=mygloss+copy2spacer + if myselectedtext!="": + if mysentlistselected==myselectedtext: break + if myselectedtext!="" and mysentlistselected=="": clipdata2.SetText("Sorry, couln't find "+myselectedtext) + else: clipdata2.SetText(l2orig[:-1]+"\n"+l2lx[:-1]+"\n"+l2ps[:-1]+"\n"+l2gloss[:-1]) + if not wx.TheClipboard.IsOpened(): + wx.TheClipboard.Open() + wx.TheClipboard.SetData(clipdata2) + wx.TheClipboard.Close() + + def OnCopyToClipboardRepl(self, evt): + """copy sentence text to a clipboard""" + metadict=self.GetTopLevelParent().processor.metadata + if "text:script" in metadict: + textscript=metadict["text:script"] + if textscript=="": textscript="Nouvel orthographe malien" # default + else: textscript="Nouvel orthographe malien" # default + if self.senttext: + clipdata2 = wx.TextDataObject() + l2orig="" + l2token="" + glosses = self.GetTopLevelParent().processor.glosses + sent= glosses[self.snum] + myselectedtext=self.sentsource.GetSelectedText() + myselectedtext=myselectedtext.strip() + if textscript=="N’Ko": + myselectedtext=myselectedtext.replace('\u07f8', ",") # N'Ko COMMA - as done in line 2 + myselectedtext=myselectedtext.replace('\u060c', ",") # Arabic comma + myselectedtext=myselectedtext.replace(' , ', ", ") + myselectedtext=myselectedtext.replace('\u061f', "?") # Arabic question mark + myselectedtext=myselectedtext.replace('؛', r":") # U+061B ؛ ARABIC SEMICOLON + myselectedtext=myselectedtext.replace('\u066a', "%") # Arabic Percent sign ٪ + myselectedtext=myselectedtext.replace('\u07f9', "!") # N'Ko EXLAMATION MARK + #print("GetSelectedText:myselectedtext",myselectedtext) # results OK but position in sentence is unknown- can only select 1st occurrence + mysentlist=[] + for w in sent.glosslist: + mysentlist.append(w.token) + mysentlistselected="" + for (toknum, (token, selectlist)) in enumerate(zip(self.tokenlist, self.selectlist)): + if selectlist: + mytokenlist=selectlist + else: + mytokenlist=token.glosslist + mytoken=mytokenlist[0] + # print("mytoken:", mytoken) + if myselectedtext!="": + if mysentlistselected=="": mysentlistselected=mysentlistselected+mysentlist[toknum] + else: + if mytoken.gloss=="c" or mysentlistselected[-1] in ["'","’","ߴ","ߵ"]: # added N'ko apostrophes (high & low tone) + mysentlistselected=mysentlistselected+mysentlist[toknum] + else: mysentlistselected=mysentlistselected+" "+mysentlist[toknum] + # print("mysentlistselected:",mysentlistselected) + # CAUTION this only handles some punctuations !!! + if not myselectedtext.startswith(mysentlistselected) : + mysentlistselected="" # wrong sequence, start over again - Note this will only get the first occurrence of a selected sequence! + l2orig="" + l2token="" + continue + if textscript=="N’Ko": + l2orig+=mysentlist[toknum]+"_" + else: + l2orig+=mytoken.form+"_" + l2token+=str(mytoken)+"_" + if myselectedtext!="": + if mysentlistselected==myselectedtext: break + if myselectedtext!="" and mysentlistselected=="": + clipdata2.SetText("Sorry, couln't find "+myselectedtext) + else: + l2orig=l2orig.replace(",","COMMA") + l2token=l2token.replace(",::c","COMMA") + clipdata2.SetText(l2orig[:-1]+"==="+l2token[:-1]) + if not wx.TheClipboard.IsOpened(): + wx.TheClipboard.Open() + wx.TheClipboard.SetData(clipdata2) + wx.TheClipboard.Close() + def OnSelectorUpdate(self, evt): """pass selector update event to the sentence text widget""" self.sentsource.OnSelectorUpdate(evt) @@ -1687,6 +2428,16 @@ def __init__(self, parent, *args, **kwargs): self.config = wx.Config.Get(False) self.config.SetRecordDefaults() + x=self.config.ReadInt("MainFrame/pos/x",30) # JJM : recover previous layout + y=self.config.ReadInt("MainFrame/pos/y",30) + w=self.config.ReadInt("MainFrame/size/w",1024) + h=self.config.ReadInt("MainFrame/size/h",512) + self.SetPosition(wx.Point(x,y)) + self.SetSize(wx.Rect(x,y,w,h)) + + self.statusbar = self.CreateStatusBar(1) + self.statusbar.SetStatusText('Bienvenue dans la désambiguïsation !') + def savedDefault(name, fore, back): forecolor = self.config.Read("colors/{}/fore".format(name.lower()), fore) backcolor = self.config.Read("colors/{}/back".format(name.lower()), back) @@ -1708,8 +2459,9 @@ def savedDefault(name, fore, back): recent = wx.Menu() menuOpen = filemenu.Append(wx.ID_OPEN, "O&pen", " Open text file") self.Bind(wx.EVT_MENU, self.OnMenuOpen, menuOpen) - filemenu.Append(wx.ID_ANY, "Open &recent", recent) - self.filehistory = wx.FileHistory(maxFiles=9, idBase=wx.ID_FILE1) + #filemenu.Append(wx.ID_ANY, "Open &recent", recent) + filemenu.AppendSubMenu(recent,"Open &recent") + self.filehistory = wx.FileHistory(maxFiles=20, idBase=wx.ID_FILE1) self.filehistory.Load(self.config) self.filehistory.UseMenu(recent) self.filehistory.AddFilesToMenu() @@ -1749,9 +2501,28 @@ def savedDefault(name, fore, back): self.Bind(wx.EVT_MENU, self.OnSelectColors, menuColors) menuLocaldict = settingsmenu.Append(wx.ID_ANY, "Set &Localdict", "Set Localdict") self.Bind(wx.EVT_MENU, self.OnSetLocaldict, menuLocaldict) + + self.menuLangBamananGV = wx.MenuItem(settingsmenu, 1, '&Bamanan gloss validation', kind = wx.ITEM_CHECK) # ADDED JJM + settingsmenu.Append(self.menuLangBamananGV) + bamananGV=True # Default + self.menuLangBamananGV.Check(check = bamananGV) # IMPROVE : if True, maninkaGV should be False (or not)!!! & vice-versa - see attempt in DoOpen + self.Bind(wx.EVT_MENU, self.OnSetLangBamananGV, self.menuLangBamananGV) + + self.menuLangManinkaGV = wx.MenuItem(settingsmenu, 2, '&Maninka/N\'ko gloss validation', kind = wx.ITEM_CHECK) # ADDED JJM 24/03/2024 + settingsmenu.Append(self.menuLangManinkaGV) + maninkaGV=False # Default + self.menuLangManinkaGV.Check(check = maninkaGV) # IMPROVE: should be checked if text.script=N'Ko (see metadict) + self.Bind(wx.EVT_MENU, self.OnSetLangManinkaGV, self.menuLangManinkaGV) + + menuCopy2SpacerToggle= wx.MenuItem(settingsmenu, 3, '&Copy2 Spacer is tab/space toggle', kind = wx.ITEM_CHECK) # ADDED JJM 04/06/2024 + global copy2spacer + copy2spacer="\t" + settingsmenu.Append(menuCopy2SpacerToggle) + self.Bind(wx.EVT_MENU, self.OnSetCopy2Spacer, menuCopy2SpacerToggle) + menuBar.Append(settingsmenu, "&Settings") self.SetMenuBar(menuBar) - + debugmenu = wx.Menu() menuInspector = debugmenu.Append(wx.ID_ANY, "Widget I&nspector", "Widget Inspector") self.Bind(wx.EVT_MENU, self.OnWidgetInspector, menuInspector) @@ -1778,9 +2549,25 @@ def savedDefault(name, fore, back): def SetLocaldict(self, dictfile): """load localdict from a file or create empty one if the file does not exist""" if os.path.exists(dictfile): - self.localdict = daba.formats.DictReader(dictfile).get() - else: + self.oldlocaldict = daba.formats.DictReader(dictfile,keepmrph=True).get() + # create new local dict - keepmrph important for disamb localdict1 self.localdict = daba.formats.DabaDict() + # populate new localdict with notones items + for x, y in sorted(self.oldlocaldict.items()): + xnotone=re.sub(r'[\u0301\u0300\u0302\u030c]','',x) # high, low, decreasing, increasing tone diacritics + xnotone=xnotone.lower() + if xnotone in self.localdict: + for ygloss in y: + if ygloss not in self.localdict[xnotone]: + self.localdict[xnotone].insert(0, ygloss) + else: + self.localdict[xnotone]=y[0] + for ygloss in y: + if ygloss not in self.localdict[xnotone]: + self.localdict[xnotone].insert(0, ygloss) + del self.oldlocaldict + else: + self.localdict = daba.formats.DabaDict() # will be populated OnSave def InitValues(self): """set main attributes""" @@ -1797,8 +2584,12 @@ def InitUI(self): self.notebook = wx.Notebook(self) self.filepanel = FilePanel(self.notebook) self.sentpanel = SentPanel(self.notebook, vertical=self.config.ReadBool("display/vertical")) + self.metapanel = MetaPanel(self.notebook) + self.dictpanel = DictPanel(self.notebook) self.notebook.AddPage(self.sentpanel, "Disambiguate") self.notebook.AddPage(self.filepanel, "Source") + self.notebook.AddPage(self.metapanel, "Metas") + self.notebook.AddPage(self.dictpanel, "Localdict") self.Sizer.Add(self.notebook, 1, wx.EXPAND) self.Layout() self.Bind(wx.EVT_TEXT_ENTER, self.OnButtonSearch, self.sentpanel.searchbutton) @@ -1807,6 +2598,7 @@ def InitUI(self): self.Bind(wx.EVT_BUTTON, self.OnFindNext, self.sentpanel.findnextbutton) self.Bind(wx.EVT_SPINCTRL, self.OnGotoSentence, self.sentpanel.sentnumbutton) self.Bind(wx.EVT_TEXT_ENTER, self.OnGotoSentence, self.sentpanel.sentnumbutton) + self.Bind(wx.EVT_BUTTON, self.OnNextAmbig, self.sentpanel.nextambigbutton) def CleanUI(self): """clear interface""" @@ -1825,6 +2617,7 @@ def UpdateUI(self): if snum is not None: self.filepanel.ShowFile(s.senttoken for s in self.processor.glosses) self.ShowSent(snum) + self.metapanel.ShowMetas(self.processor.metadata) self.Layout() self.Thaw() @@ -1862,14 +2655,38 @@ def OnSetLocaldict(self, e): if not self.fileopened: self.NoFileError(e) else: - dlg = wx.FileDialog(self, "Choose localdict file", self.dirname, "localdict.txt", "*.*", wx.FD_OPEN) + dlg = wx.FileDialog(self, "Choose localdict file", self.dirname, "localdict1.txt", "*.*", wx.FD_OPEN) if dlg.ShowModal() == wx.ID_OK: dictfile = dlg.GetPath() self.SetLocaldict(dictfile) - if not dictfile == '/'.join([self.dirname, "localdict.txt"]): + if not dictfile == '/'.join([self.dirname, "localdict1.txt"]): self.config.Write('/'.join(['localdict', self.infile]), dictfile) dlg.Destroy() + def OnSetLangBamananGV(self, e): # this does not check / uncheck in Settings ??? + """ let user toggle Bamanan Gloss validation on/off """ + global bamananGV, maninkaGV # why not just use: self.bamananGV ? + bamananGV= not bamananGV + self.menuLangBamananGV.Check(check = bamananGV) + self.menuLangManinkaGV.Check(check = maninkaGV) + #print("OnSetLangBamananGV - bamananGV: ",bamananGV," maninkaGV: ",maninkaGV) + + def OnSetLangManinkaGV(self, e): # JJM 24/04/2024 # this does not check / uncheck in Settings ??? + """ let user toggle Bamanan Gloss validation on/off """ + global bamananGV, maninkaGV # why not just use: self.maninkaGV ? + maninkaGV=not maninkaGV + self.menuLangBamananGV.Check(check = bamananGV) + self.menuLangManinkaGV.Check(check = maninkaGV) + # print("OnSetLangManinkaGV - bamananGV: ",bamananGV," maninkaGV: ",maninkaGV) + + def OnSetCopy2Spacer(self,e) : # JJM 04/06/2024 + # use space or tab when spacing ligne 2 elements (lx, ps, gloss) to copy + global copy2spacer + if copy2spacer==" ": + copy2spacer="\t" + else: + copy2spacer=" " + def OnWidgetInspector(self, e): """show widget inspector""" import wx.lib.inspection @@ -1891,6 +2708,8 @@ def ShowSent(self, snum): if self.undolist[snum]: self.menuUndoTokens.Enable(True) self.SaveFilePos(snum) + #print("ShowSent snum=",snum, "len(glosses)=",len(self.processor.glosses)) + if snum>=len(self.processor.glosses): snum=0 self.sentpanel.ShowSent(self.processor.glosses[snum]) def OnTokenSplit(self, evt): @@ -1964,6 +2783,7 @@ def OnSentenceJoin(self, evt): def OnSentenceSplit(self, evt): """split sentences in the processor glosses data, update UI""" sent = self.processor.glosses[evt.snum] + # print("OnSentenceSplit: sent=",sent) firstsent, nextsent = sent.split(evt.tnum, evt.charpos) self.processor.glosses[evt.snum] = firstsent self.processor.glosses.insert(evt.snum+1, nextsent) @@ -1991,8 +2811,27 @@ def OnGlossEdited(self, evt): def OnLocaldictLookup(self, evt): """lookup a gloss in localdict, show available matches""" + global formlookup try: - savedglosses = self.localdict[evt.gloss.form] + + formlookup=evt.gloss.form + + + # JJM : localdict now indexed without tones & lowercase + formlookup=formlookup.lower() # all indexed in localdict with no tones and lowercase + + if self.GetTopLevelParent().processor.metadata["text:script"]=="Ancien orthographe malien": + # form is normally parsed in New Orthography - this only handles exception (where parse failed, notably Proper names) + formlookup=formlookup.replace("èe","ɛɛ") + formlookup=formlookup.replace("òo","ɔɔ") + formlookup=formlookup.replace("è","ɛ") + formlookup=formlookup.replace("ò","ɔ") + + formlookup=re.sub(r'[\u0301\u0300\u0302\u030c]','',formlookup) # 4 bambara tones + # print("OnLocaldictLookup - using formlookup: ",formlookup) + + savedglosses = self.localdict[formlookup] + dlg = evt.dlg wx.CallAfter(dlg.ShowLocaldictVariants, savedglosses) except (KeyError): @@ -2000,16 +2839,73 @@ def OnLocaldictLookup(self, evt): def OnLocaldictSave(self, evt): """save a word into localdict""" + global formlookup + # print("OnLocaldictSave - formlookup=",formlookup) gloss = evt.gloss # we do not save words with empty glosses into localdict - if not gloss.gloss: - return - if gloss.form in self.localdict: + # original code for this whole section + """if gloss.form in self.localdict: if gloss not in self.localdict[gloss.form]: self.localdict[gloss.form].insert(0, gloss) + print("OnLocalditSave - Added:",gloss, "to entry:",gloss.form) else: self.localdict[gloss.form] = gloss - + print("OnLocalditSave - Created:",gloss, "to entry:",gloss.form) + """ + #if not gloss.gloss: JJM changed this, in case there are morphemes + if not gloss.gloss and not gloss.morphemes: + return + + if gloss.gloss==None: + # rebuild : do not allow None as value for \ge + gloss=Gloss(gloss.form, gloss.ps, '', gloss.morphemes) + + # new localdict JJM : is indexed with notones form + x=gloss.form + #print("gloss,...", gloss, gloss.form, gloss.ps, gloss.gloss, gloss.morphemes) + #print("Gloss",Gloss(gloss.form, gloss.ps, gloss.gloss, gloss.morphemes)) + xnotone=re.sub(r'[\u0301\u0300\u0302\u030c]','',x) # high, low, decreasing, increasing tone diacritics + xnotone=xnotone.lower() # allow proper names to be available even on lower case text + # there is a side effect with Capitalized entries also created in lowercase on first "Create" ??? + if xnotone in self.localdict and len(gloss.ps)>0 : + + if gloss not in self.localdict[xnotone] : + + self.localdict[xnotone].insert(0, gloss) + print("OnLocaldictSave - Added to localdict[",xnotone,"] =",gloss) + + #else: + # print("OnLocaldictSave - Skipped localdict[",xnotone,"] =", gloss, ": already there, do nothing") + else: + self.localdict[xnotone] = gloss + print("OnLocaldictSave - Created localdict[",xnotone,"] =",gloss) + + if xnotone!=formlookup and len(gloss.ps)>0 : + # this will add an entry if token!=form so that future erroneous token may yield correct form lookup. + print(xnotone,"<>",formlookup," : essayer de l'indexer?") + if formlookup not in self.localdict: + self.localdict[formlookup] = gloss + print("¹OnLocaldictSave - also created localdict[",formlookup,"] =",gloss) + elif gloss not in self.localdict[formlookup]: + self.localdict[formlookup] = gloss + print("ajout de localdict["+formlookup+"] =",gloss) + print("récap de localdict["+formlookup+"] =") + for g in self.localdict[formlookup]: + print("-",str(g)) +# if formlookup not in self.localdict: +# self.localdict[formlookup] = gloss +# print("¹OnLocaldictSave - also created localdict[",formlookup,"] =",gloss) +# elif xnotone not in self.localdict: +# self.localdict[xnotone] = gloss +# print("²OnLocaldictSave - also created localdict[",xnotone,"] =",gloss) +# else: +# print(formlookup,"ou",xnotone,"déjà dans localdict") +# try: +# self.localdict[xnotone] = gloss +# print('on indexe quand même') +# except: +# print('ajout impossible') + def OnUndoTokens(self, e): """undo token split/join operations""" snum = self.sentpanel.snum @@ -2071,6 +2967,35 @@ def OnFindNext(self, e): match = self.searcher.findNext() self.ShowSearchResult(match) + def OnNextAmbig(self, e): + snum = self.sentpanel.sentnumbutton.GetValue() # start at current sentence + #print("OnNextAmbig - starting at sentence # ",snum) + ns=0 + ambig=False + for s in self.processor.glosses: + ns+=1 + if ns>snum: # only check sentences after the current one + #print(" OnNextAmbig - checking sentence # ",ns) + for g in s.glosslist: + if g.type=="w": + if len(g.value[2])!=1: # >1 : ambigu 0 : inconnu + #print(" ",g) + #print(" ",g.value[2]) + ambig=True + break + else: # only one gloss but problems + if len(g.gloss.ps)==0 and g.gloss.gloss=='': # word in red (no gparser candidate) + #print(" ",g) + ambig=True + break + elif g.gloss.gloss=='INCOGN': + #print(" ",g) + ambig=True + break + if ambig: break + if ambig: self.ShowSent(ns-1) + + def OnGotoSentence(self, e): """show sentence with a given number""" self.sentpanel.OnSaveResults(e) @@ -2090,7 +3015,19 @@ def GetFilePos(self, filename): def OnClose(self, e): """save and cleanup UI on file close""" + if self.fileopened: + # JJM save window position and size + x,y=self.Position + w,h=self.Size + #print ("x,y - w,h :",x,y,w,h) + + self.config.WriteInt("MainFrame/pos/x",x) + self.config.WriteInt("MainFrame/pos/y",y) + self.config.WriteInt("MainFrame/size/w",w) + self.config.WriteInt("MainFrame/size/h",h) + self.config.Flush() # permanently writes + if self.processor.dirty: self.OnSave(e) if self.logger: @@ -2121,7 +3058,8 @@ def OnMenuOpen(self, e): if self.fileopened: self.FileOpenedError(e) else: - dlg = wx.FileDialog(self, "Choose a file", self.dirname, "", "*.*", wx.FD_OPEN) + #dlg = wx.FileDialog(self, "Choose a file", self.dirname, "", "*.*", wx.FD_OPEN) + dlg = wx.FileDialog(self, "Choose a file", self.dirname, "", "disamb files|*.pars.html;*.repl.html;*.dis.html", wx.FD_OPEN|wx.FD_FILE_MUST_EXIST) if dlg.ShowModal() == wx.ID_OK: self.DoOpen(dlg.GetPath()) dlg.Destroy() @@ -2145,23 +3083,81 @@ def DoOpen(self, filename): self.filename = os.path.basename(self.infile) logfile = os.path.extsep.join([get_basename(self.infile), 'log']) self.logger = EditLogger(os.path.join(self.dirname, logfile)) - self.dictfile = self.config.Read("/".join(["localdict", self.infile]), os.path.join(self.dirname, "localdict.txt")) + self.dictfile = self.config.Read("/".join(["localdict", self.infile]), os.path.join(self.dirname, "localdict1.txt")) self.SetLocaldict(self.dictfile) self.processor.read_file(self.infile) + self.nambigs_before,self.totalwords_before=self.nambigs() + pcdisamb=0 + if self.totalwords_before>0 : pcdisamb=int(100*self.nambigs_before/self.totalwords_before) + self.statusbar.SetStatusText(str(self.nambigs_before)+' mots ambigus restants/'+str(self.totalwords_before)+" mots au total soit "+str(pcdisamb)+"%") + self.InitUI() self.SetTitle(self.filename) self.filepanel.ShowFile(s.senttoken for s in self.processor.glosses) + self.metapanel.ShowMetas(self.processor.metadata) + self.dictpanel.ShowDict(self.dictfile) + snum = self.GetFilePos(self.infile) self.ShowSent(snum) self.fileopened = True self.Layout() + #this does not do anything useful + global bamananGV,maninkaGV + metadict=self.processor.metadata + if "text:script" in metadict: + textscript=metadict["text:script"] + if textscript in ["Ancien orthographe malien","Nouvel orthographe malien"]: + bamananGV=True + maninkaGV=False + elif textscript in["N’Ko","Nouveau orthographe guinéen", "Ancien orthographe guinéen"]: + bamananGV=False + maninkaGV=True + self.menuLangBamananGV.Check(check = bamananGV) + self.menuLangManinkaGV.Check(check = maninkaGV) + + def nambigs(self): # JJM compute ambiguous words left + na=0 + nw=0 + for s in self.processor.glosses: + for g in s.glosslist: + if g.type=="w": + nw += 1 + if len(g.value[2])>1: na += 1 + return na,nw + def SaveFiles(self): """save annotated data, localdict and config values""" - if self.localdict: - daba.formats.DictWriter(self.localdict, self.dictfile, lang='default', name='localdict', ver='0').write() + + prevsent=self.processor.metadata["_auto:sentences"] # JJM + prevwords=self.processor.metadata["_auto:words"] + # JJM : if there are splits/joins these meta will be updated next in processor.write (FileParser) self.processor.write(self.outfile) self.config.Flush() + + # save localdict AFTER annotated data: i case of problem with localdict, disamb is saved with higher priority + if self.localdict: + """print("SaveFiles, before DictWriter") + for x, y in sorted(self.localdict.items()): + print("localdict[",x,"]=",y) + """ + daba.formats.DictWriter(self.localdict, self.dictfile, lang='default', name='localdict', ver='0').write() + self.dictpanel.ShowDict(self.dictfile) # needs to be updated only if localdict is updated + + + nambigs_after,totalwords_after=self.nambigs() + + if self.processor.metadata["_auto:sentences"]!=prevsent or self.processor.metadata["_auto:words"]!=prevwords: + + self.filepanel.ShowFile(s.senttoken for s in self.processor.glosses) # also needs update when sentence fully disambed + self.metapanel.ShowMetas(self.processor.metadata) # may also need to be updated on words split/joins + + if nambigs_after != self.nambigs_before or totalwords_after != self.totalwords_before : + self.filepanel.ShowFile(s.senttoken for s in self.processor.glosses) # update as sentence is disambed + self.nambigs_before=nambigs_after + self.totalwords_before=totalwords_after + pcdisamb=int(100*nambigs_after/totalwords_after) + self.statusbar.SetStatusText(str(self.nambigs_before)+' mots ambigus restants/'+str(totalwords_after)+" mots au total soit "+str(pcdisamb)+"%") def OnSave(self, e): """save files""" @@ -2187,13 +3183,23 @@ def OnSaveAs(self, e): self.outfile = ''.join([self.outfile, os.path.extsep, 'html']) self.SaveFiles() self.filehistory.AddFileToHistory(self.outfile) + # added JJM + self.filehistory.Save(self.config) + self.dirname = os.path.dirname(self.outfile) + self.config.Write("state/curdir", self.dirname) + self.config.Flush() + self.filename = os.path.basename(self.outfile) + self.SetTitle(self.filename) + # end added JJM dlg.Destroy() def main(): app = wx.App() + frame = MainFrame(None, title="Daba disambiguation interface (GUI)") frame.Show() + app.MainLoop() diff --git a/daba/gparser.py b/daba/gparser.py old mode 100644 new mode 100755 index 678edf5..649dc27 --- a/daba/gparser.py +++ b/daba/gparser.py @@ -21,7 +21,7 @@ from contextlib import contextmanager import daba.mparser -import daba.formats +# import daba.formats # already loaded in mparser! from daba.plugins import OrthographyConverter def get_outdir(fname): @@ -38,6 +38,14 @@ def get_outdir(fname): def get_outfile(fname): basename = os.path.basename(fname) + # <<<< +JJM + parsfile='.'.join([os.path.splitext(basename)[0], 'pars.html']) + if os.path.exists(parsfile): + print("get_outfile / EXISTE DÉJÀ / ALREADY EXISTS: ",parsfile) + os.remove(parsfile) + print(" fichier précédent SUPPRIMÉ / previous file DELETED/removed") + # NO SELF HERE self.statusbar.SetStatusText(" fichier pars précédent supprimé:"+parsfile) + # >>>> +JJM return '.'.join([os.path.splitext(basename)[0], 'pars']) @@ -56,6 +64,7 @@ class DictionaryItem(wx.Panel): def __init__(self, parent, dic, b_id, *args, **kwargs): wx.Panel.__init__(self, parent, *args, **kwargs) hbox = wx.BoxSizer(wx.HORIZONTAL) + print("dic :",dic) hbox.Add(wx.StaticText(self, -1, dic.description),0) rbutton = wx.Button(self, b_id, "Remove") self.Bind(wx.EVT_BUTTON, parent.OnRemove, rbutton) @@ -63,15 +72,19 @@ def __init__(self, parent, dic, b_id, *args, **kwargs): self.SetSizer(hbox) self.Layout() - -class DictionaryLister(wx.Panel): +import wx.lib.scrolledpanel as scrolled +class DictionaryLister(scrolled.ScrolledPanel): def __init__(self, parent, dictloader, *args, **kwargs): - wx.Panel.__init__(self, parent, *args, **kwargs) + super(DictionaryLister, self).__init__(parent, + style = wx.TAB_TRAVERSAL|wx.SUNKEN_BORDER) + self.SetupScrolling() + #wx.Panel.__init__(self, parent, *args, **kwargs) self.buttons = {} self.children = {} self.parent = parent self.dictloader = dictloader dictbox = wx.StaticBox(self, -1, "Available Dictionaries") + dictbox.SetBackgroundColour((236, 211, 211, 255)) # was (60, 25, 25, 25) self.dsizer = wx.StaticBoxSizer(dictbox, wx.VERTICAL) b_id = 0 for dic in self.dictloader.dictionary.dictlist: @@ -121,6 +134,7 @@ def __init__(self, parent, grammarloader, *args, **kwargs): self.grammarloader = grammarloader grambox = wx.StaticBox(self, -1, "Available Grammar") + grambox.SetBackgroundColour((236, 211, 211, 255)) # was (80, 40, 40, 30) self.gsizer = wx.StaticBoxSizer(grambox, wx.VERTICAL) self.gramlist = wx.StaticText(self, -1, '\n'.join(self.grammarloader.gramlist)) self.gsizer.Add(self.gramlist, 0, wx.TOP|wx.LEFT, 10) @@ -142,15 +156,21 @@ def OnLoad(self, evt): self.gramlist.Show(True) self.Layout() -class ConverterLister(wx.Panel): +class ConverterLister(scrolled.ScrolledPanel): def __init__(self, parent, *args, **kwargs): - wx.Panel.__init__(self, parent, *args, **kwargs) + super(ConverterLister, self).__init__(parent, + style = wx.TAB_TRAVERSAL|wx.SUNKEN_BORDER) + self.SetupScrolling() + #wx.Panel.__init__(self, parent, *args, **kwargs) #FIXME: make default plugins configurable from config file self.selection = ('apostrophe',) daba.mparser.load_plugins() converterbox = wx.StaticBox(self, -1, "Available Orthographic Converters") + converterbox.SetBackgroundColour((236, 211, 211, 255)) # was (70, 30, 30, 30) self.csizer = wx.StaticBoxSizer(converterbox, wx.VERTICAL) + print("OrthographyConverter.converters",OrthographyConverter.converters) self.converterlist = wx.CheckListBox(self, wx.ID_ANY, choices=OrthographyConverter.converters) + self.converterlist.SetBackgroundColour((236, 211, 211, 255)) # was (60, 25, 25, 25) self.converterlist.SetCheckedStrings(self.selection) self.Bind(wx.EVT_CHECKLISTBOX, self.OnSelection, self.converterlist) self.csizer.Add(self.converterlist, 0, wx.TOP|wx.LEFT, 10) @@ -168,6 +188,7 @@ def __init__(self, parent, *args, **kwargs): self.tkz = daba.mparser.Tokenizer() self.tokenizers = self.tkz.methods tokenizerbox = wx.StaticBox(self, wx.ID_ANY, "Available Tokenizers") + tokenizerbox.SetBackgroundColour((236, 211, 211, 255)) # was (60, 25, 25, 30) self.tsizer = wx.StaticBoxSizer(tokenizerbox, wx.VERTICAL) self.tokenizerlist = wx.RadioBox(self, wx.ID_ANY, choices=self.tokenizers) self.tokenizerlist.SetSelection(self.tokenizerlist.FindString(self.selection)) @@ -207,6 +228,11 @@ class MainFrame(wx.Frame): def __init__(self, parent, *args, **kwargs): wx.Frame.__init__(self, parent, *args, **kwargs) self.InitValues() + + wx.Config.Set(wx.Config("gparser", style=wx.CONFIG_USE_LOCAL_FILE)) + self.config = wx.Config.Get(False) + self.config.SetRecordDefaults() + # setup Resources self.dirname = os.curdir self.dl = daba.mparser.DictLoader() @@ -214,6 +240,9 @@ def __init__(self, parent, *args, **kwargs): self.resourcepanel = ResourcePanel(self, self.dl, self.gr) self.filepanel = FilePanel(self) + self.statusbar = self.CreateStatusBar(1) # JJM + self.statusbar.SetStatusText('Bienvenue dans le parseur (gparser) !') + filemenu= wx.Menu() menuOpen = filemenu.Append(wx.ID_OPEN,"O&pen"," Open text file") self.Bind(wx.EVT_MENU, self.OnOpen, menuOpen) @@ -236,6 +265,14 @@ def __init__(self, parent, *args, **kwargs): self.SetAutoLayout(True) self.Fit() + x=self.config.ReadInt("MainFrame/pos/x",30) # JJM : recover previous layout + y=self.config.ReadInt("MainFrame/pos/y",30) + w=self.config.ReadInt("MainFrame/size/w",512) + h=self.config.ReadInt("MainFrame/size/h",756) + print("config ReadInt x,y,w,h",x,y,w,h) + self.SetPosition(wx.Point(x,y)) + self.SetSize(wx.Rect(x,y,w,h)) + def InitValues(self): self.infile = None self.outfile = None @@ -245,12 +282,17 @@ def InitValues(self): def OnParse(self,e): @contextmanager def wait_for_parser(): + print("OnParse / self.resourcepanel.toklist.tkz.methods:",self.resourcepanel.toklist.tkz.methods) # JJM + #for n, tok in enumerate(self.resourcepanel.toklist.tkz): # JJM + # print("OnParse / self.resourcepanel.toklist / n, tok :",n,tok) + print("OnParse / self.resourcepanel.convlist.selection:",self.resourcepanel.convlist.selection) # JJM self.processor = daba.mparser.Processor(self.dl, self.gr, tokenizer=self.resourcepanel.toklist.tkz, converters=self.resourcepanel.convlist.selection) yield self.processor.parse(self.io.para) dlg = wx.MessageDialog(self, 'Please wait: parsing in progress', 'Please wait', wx.OK) + self.statusbar.SetStatusText("parsing en cours... (mparser) ") dlg.ShowModal() if not self.parsed: @@ -258,9 +300,13 @@ def wait_for_parser(): self.parsed = True dlg.Destroy() self.FinishedParsing(e) + myparsfile=self.outfile.replace(self.dirname,"") + self.statusbar.SetStatusText("parsing terminé / finished :"+myparsfile) else: #FIXME: proper error message or better avoid this case! print("File already parsed!") + myparsfile=self.outfile.replace(self.dirname,"") + self.statusbar.SetStatusText("votre fichier est déjà parsé / already parsed :"+myparsfile+" -> PLEASE file/close") def NoFileError(self,e): dlg = wx.MessageDialog(self, 'Error: no file opened!', 'No file opened', wx.OK) @@ -273,25 +319,93 @@ def FinishedParsing(self,e): dlg.Destroy() def OnExit(self,e): + # JJM save window position and size + x,y=self.Position + w,h=self.Size + self.config.WriteInt("MainFrame/pos/x",x) + self.config.WriteInt("MainFrame/pos/y",y) + self.config.WriteInt("MainFrame/size/w",w) + self.config.WriteInt("MainFrame/size/h",h) + self.config.Flush() # permanently writes + print("config WriteInt x,y,w,h",x,y,w,h) + self.Close(True) def OnOpen(self, e): """ Open a file""" - dlg = wx.FileDialog(self, "Choose a file", self.dirname, "", "*.*", wx.FD_OPEN) + dlg = wx.FileDialog(self, "Choose a file", self.dirname, "", "gparser files (txt/html)|*.html;*.txt", wx.FD_OPEN|wx.FD_FILE_MUST_EXIST) + # caution: it would be nice to filter out localdict.txt and pars.html, dis.html files if dlg.ShowModal() == wx.ID_OK: self.infile = dlg.GetPath() - self.dirname = os.path.dirname(self.infile) - try: - self.io.read(self.infile) - self.parsed = False - self.filepanel.control.SetValue('\n\n'.join(self.io.para)) - except ValueError as e: - fileerror = wx.MessageDialog(self, "Unknown file type", "Unknown file type", wx.OK) + if self.infile.endswith(".pars.html") or self.infile.endswith(".dis.html") or self.infile.endswith(".repl.html"): + fileerror = wx.MessageDialog(self, "incompatible file type", self.infile, wx.OK) fileerror.ShowModal() fileerror.Destroy() + else: + self.dirname = os.path.dirname(self.infile) + + try: + self.io.read(self.infile) + self.SetTitle("gparser: "+self.infile) + self.parsed = False + self.filepanel.control.SetValue('\n\n'.join(self.io.para)) + #print("self.io.metadata['text:script']:",self.io.metadata['text:script']) # JJM + try: + myscript=self.io.metadata['text:script'] + except KeyError: + myscript='***NO SCRIPT***' + dlg = wx.MessageDialog(self, 'Please choose from the Available orthographic converters (or none if "Nouvel orthographe malien", only "apostrophe")', 'The file has no meta information for text:script', wx.OK) + dlg.ShowModal() + print("OnOpen / metas / script:",myscript) + myscriptcode='' + mytokcode='' + if myscript=='Nouvel orthographe malien': + mytokcode="bamana" + elif myscript=='Ancien orthographe malien': + myscriptcode='bamlatinold' + mytokcode="bamana" + elif myscript=='N’Ko' or myscript=="N’Ko": + myscriptcode='nko' + mytokcode="nko" + if myscriptcode=='': + myselection=('apostrophe',) + else: + myselection=('apostrophe',myscriptcode) + if mytokcode=='': + mytokmethods=['default'] + else: + mytokmethods=[mytokcode] + print("OnOpen / myselection:",myselection) + print("OnOpen / mytokmethods:",mytokmethods) + self.resourcepanel.convlist.selection=myselection + self.resourcepanel.toklist.tkz.methods=mytokmethods + # update interface accordingly + try: + self.resourcepanel.toklist.tokenizerlist.SetSelection(self.resourcepanel.toklist.tokenizerlist.FindString(mytokcode)) + except: + print("mytokcode:",mytokcode," radio box index:",self.resourcepanel.toklist.tokenizerlist.FindString(mytokcode)) + self.resourcepanel.convlist.converterlist.SetCheckedStrings(myselection) + + + myfile=self.infile.replace(self.dirname,"") + self.statusbar.SetStatusText("fichier ouvert:"+myfile+" text:script: "+myscript) + except ValueError as e: + fileerror = wx.MessageDialog(self, "Unknown file type", "Unknown file type", wx.OK) + fileerror.ShowModal() + fileerror.Destroy() dlg.Destroy() def OnClose(self,e): + # JJM save window position and size + x,y=self.Position + w,h=self.Size + self.config.WriteInt("MainFrame/pos/x",x) + self.config.WriteInt("MainFrame/pos/y",y) + self.config.WriteInt("MainFrame/size/w",w) + self.config.WriteInt("MainFrame/size/h",h) + self.config.Flush() # permanently writes + print("config WriteInt x,y,w,h",x,y,w,h) + self.filepanel.control.Clear() self.InitValues() diff --git a/daba/grammar.py b/daba/grammar.py old mode 100644 new mode 100755 index ca6e122..8ec0dbf --- a/daba/grammar.py +++ b/daba/grammar.py @@ -6,11 +6,14 @@ from funcparserlib.parser import * from funcparserlib.lexer import make_tokenizer, Token, LexerError +# JJM added 'ap' 04/10/2024' PSLIST = [ 'mrph', + 'mrph.nko', 'n.prop', 'n', 'adj', + 'ap', 'num', 'v', 'ptcp', @@ -30,7 +33,7 @@ 'prep', 'n.top', 'conv.n', - 'PUNCT', + 'PUNCT' ] @@ -86,7 +89,8 @@ def unwrap_re(tupl): maketuple = lambda t: tuple(t.split('/')) if t else () denonetuple = lambda t: t or () filternone = lambda s: [i for i in s if i] -despace = lambda s: [i for i in s if s is not ' '] +#despace = lambda s: [i for i in s if s is not ' '] +despace = lambda s: [i for i in s if s != ' '] def flatten_list(l): for el in l: diff --git a/daba/meta.py b/daba/meta.py old mode 100644 new mode 100755 index 15fe5ea..5be7550 --- a/daba/meta.py +++ b/daba/meta.py @@ -113,12 +113,12 @@ class GUIBuilder(object): def __init__(self): self.widgets = { 'text': (wx.TextCtrl, None, None), - 'long_text': (wx.TextCtrl, None, {'style': wx.TE_MULTILINE}), + 'long_text': (wx.TextCtrl, None, {'style': wx.TE_MULTILINE, 'size':(300,100)}), 'int': (wx.lib.intctrl.IntCtrl, None, None), 'closed_list': (wx.Choice, 'choices', None), 'open_list': (wx.ComboBox, 'choices', None), 'checklist': (wx.CheckListBox, 'choices', None), - 'date': (wx.adv.DatePickerCtrl, None, None), + 'date': (wx.adv.DatePickerCtrl, None, {'style': wx.adv.DP_DROPDOWN|wx.adv.DP_SHOWCENTURY}), 'datetext': (wx.lib.masked.Ctrl, None, {'autoformat': 'EUDATEDDMMYYYY.'}), } operate = namedtuple('Operate', 'get set') @@ -139,7 +139,7 @@ def parse_date(str): lambda w,t: wx.ComboBox.SetValue(w, str(t))), 'checklist': operate(lambda t: ';'.join(wx.CheckListBox.GetCheckedStrings(t)), lambda w,t: wx.CheckListBox.SetCheckedStrings(w, t.split(';'))), - 'date': operate(lambda t: wx.adv.DatePickerCtrl.GetValue(t).FormatDate(), + 'date': operate(lambda t: wx.adv.DatePickerCtrl.GetValue(t).Format("%d.%m.%Y"), lambda w,t: wx.adv.DatePickerCtrl.SetValue(w, parse_date(t))), 'datetext': operate(wx.lib.masked.TextCtrl.GetValue, lambda w,t: wx.lib.masked.BaseMaskedTextCtrl.SetValue(w, str(t))), @@ -250,8 +250,13 @@ def _strip_secname(self, mkey): return mkey[len(prefix):] return mkey - def _decode_row(self, row): - utf = dict((self._strip_secname(k),v) for k,v in row.items()) + def _decode_row(self, row): + try: + utf = dict((self._strip_secname(k),v) for k,v in row.items()) + except: + print("-row : ",row) # added JJM 24/12/2024 + sys.exit("***decode_row error***") + if self.idcolumn not in utf.keys(): key = self._add_uuid(utf) return utf @@ -311,12 +316,16 @@ def append(self, mdict): dbentry = self._normalize_row(mdict) self._map[key] = dbentry self._strmap[self._make_keystring(mdict)] = key - self.write() + # print("mdict? : ",mdict) # JJM 27/12/2024 + # mdict? : {'name': 'Fournier, Georges', 'spelling': '', 'sex': 'm', 'birth_year': '', 'dialect': 'France', 'native_lang': 'Français', 'addon': 'nyòninsan 1976 (avec Andrée Audibert)', 'uuid': 'cc1eced6-e66e-4e9a-9b6d-8b209c56b699'} + if mdict['name']!='': # JJM 27/12/2024 - do not update authors unnecessarily + self.write() return dbentry def update(self, key, mdict): self._map[key] = self._normalize_row(mdict) - self.write() + if mdict['name']!='': # JJM 27/12/2024 - do not update authors unnecessarily + self.write() def getEntryByUUID(self, uuid): return self._map[uuid] @@ -403,6 +412,7 @@ def addPanel(self, evt=None): else: panel = DataPanel(self, config=self.config, section=self.section) self.sizer.Add(panel, 1, wx.EXPAND, 0) + panel.SetBackgroundColour((236, 211, 211, 255)) # was (96, 63, 63, 30) - (90, 50, 50, 30) (236, 211, 211, 255) (130, 80, 80, 30) self.panels.append(panel) self.Layout() @@ -452,6 +462,7 @@ def onItemSelected(self, values): dbentry = self.db.getEntryByKey(self.selector.GetValue()) self.setCurrentPanelData(dbentry.items()) except KeyError: + # print("KeyError :", self.selector.GetValue()) # JJM 04/01/2024 pass def saveDBEntries(self): @@ -465,6 +476,88 @@ def saveDBEntries(self): panel.setPanelData(dbentry.items()) self.selector.AutoComplete(choices=self.db.getList()) +class ResumePanel(wx.ScrolledWindow): + def __init__(self, parent, *args, **kwargs): + wx.ScrolledWindow.__init__(self, parent, *args, **kwargs) + self.SetScrollRate(20, 20) + self.parent = parent + self.isMetaShown=False + self.Sizer = wx.BoxSizer(wx.VERTICAL) + + def ShowMetas(self, metadata): + + if self.isMetaShown: + self.Sizer.Clear(delete_windows=True) # that's the key element missing : delete_windows=True + self.Sizer.Remove(self.Sizer) # probably does not do a thing... + + metas={} + items=[] + authors=False + metatxt="" + for item,y in metadata._data.items(): + #print("item,y",item,y) + #metatxt+=item+" "+str(y)+"\n" + for sitem,svalue in y.items(): + #print("sitem,svalue:",sitem,str(svalue)) + if item=="author": + if sitem=="name": sitem="_name" # force sorting as 1st + elif item in ["source","text"] : + if sitem=="title": sitem="_title" + + thisvalue=', '.join(svalue) + + if item in items: + if item=="author" and authors: + authindex=0 + for v in svalue: + authindex+=1 + metas[item][authindex][sitem]=v + else: + metas[item][sitem]=thisvalue + else: + items.append(item) + if item=="author": + if len(svalue)>1: + authors=True + authindex=0 + for v in svalue: + authindex+=1 + if authindex==1: + metas[item]={authindex: {sitem:v}} + else : metas[item][authindex]={sitem:v} + else: + metas[item]={sitem:thisvalue} + else: + metas[item]={sitem:thisvalue} + + #print("metas:",metas) + # print sorted metas + metatxt="Métadonnées\n" + for x,y in sorted(metas.items()): + metatxt+=x+"\n" + for w,z in sorted(y.items()): + if x=="author" and authors: + metatxt+="\t"+str(w)+"\n" + for wn,zn in sorted(z.items()): + metatxt+="\t\t"+wn.strip("_")+" :\t "+zn+"\n" + else: + metatxt+="\t"+w.strip("_")+" :\t "+str(z)+"\n" + metatxt=metatxt.replace("\n","\n ") + metatxt=metatxt.replace(";"," ; ") + + self.st= wx.TextCtrl(self,style=wx.TE_MULTILINE|wx.TE_DONTWRAP) + self.st.SetValue(metatxt) + #font = wx.Font(12, wx.FONTFAMILY_MODERN, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL) + #self.SetFont(font) + self.metafont = self.GetFont() + self.metafont.SetPointSize(self.metafont.GetPointSize() + 2) + self.st.SetFont(self.metafont) + self.Sizer.Add(self.st, 1, wx.EXPAND) + + self.SetSizer(self.Sizer) + self.Layout() + self.isMetaShown=True + class MetaNotebook(wx.Notebook): """Notebook widget holding MetaPanels""" @@ -481,6 +574,8 @@ def __init__(self, parent, *args, **kwargs): self.parent = parent self.control = wx.TextCtrl(self, style=wx.TE_MULTILINE | wx.TE_READONLY) + # self.control = wx.TextCtrl(self, style=wx.TE_MULTILINE) # needs more work to enable text edits + Sizer = wx.BoxSizer(wx.VERTICAL) Sizer.Add(self.control, 1, wx.EXPAND) self.SetSizer(Sizer) @@ -499,6 +594,25 @@ def __init__(self, parent, config=None, encoding='utf-8', *args, **kwargs): self.metapanels = {} self.encoding = encoding + self.myconfig = wx.Config.Get() # JJM 26/12/2024 + global confpath + confpath = self.myconfig.Read("meta/confpath") + print("_init_confpath=",confpath) + if confpath!="": + self.config = MetaConfig(confpath) + # self.SetTitle("["+confpath+"]") # JJM 27/12/2024 + #wx.Config.Set(wx.Config("gparser", style=wx.CONFIG_USE_LOCAL_FILE)) + #self.config = wx.Config.Get(False) + #self.config.SetRecordDefaults() + + x=self.myconfig.ReadInt("MainFrame/pos/x",30) # JJM : recover previous layout + y=self.myconfig.ReadInt("MainFrame/pos/y",30) + w=self.myconfig.ReadInt("MainFrame/size/w",512) + h=self.myconfig.ReadInt("MainFrame/size/h",256) + #print("x,y,w,h",x,y,w,h) + self.SetPosition(wx.Point(x,y)) + self.SetSize(wx.Rect(x,y,w,h)) + filemenu = wx.Menu() menuOpen = filemenu.Append(wx.ID_OPEN, "O&pen", " Open text file") self.Bind(wx.EVT_MENU, self.OnOpen, menuOpen) @@ -522,6 +636,8 @@ def __init__(self, parent, config=None, encoding='utf-8', *args, **kwargs): configbutton.Bind(wx.EVT_FILEPICKER_CHANGED, self.OnConfigSelected) configbutton.SetTextCtrlProportion(2) configbutton.SetTextCtrlGrowable(True) + if confpath!="": + configbutton.SetPath(confpath) retainbutton = wx.ToggleButton(self, -1, 'Retain values for the next file') retainbutton.Bind(wx.EVT_TOGGLEBUTTON, self.OnRetainToggled) self.Sizer = wx.BoxSizer(wx.VERTICAL) @@ -536,6 +652,7 @@ def make_splitter(self): splitter.SetMinimumPaneSize(100) self.filepanel = FilePanel(splitter) self.notebook = MetaNotebook(splitter) + self.notebook.SetBackgroundColour((236, 211, 211, 255)) # was (96, 63, 63, 30) - (236, 211, 211, 255) (90, 50, 50, 30) splitter.SplitVertically(self.filepanel, self.notebook) return splitter @@ -548,8 +665,13 @@ def init_values(self): def draw_metapanels(self): for secname in self.config.sections(): metapanel = MetaPanel(self.notebook, config=self.config, section=secname) + # metapanel.Bind(wx.EVT_KILL_FOCUS, self.update_metadata) # does not work, only Save fixes metadata for Résumé self.metapanels[secname] = metapanel self.notebook.AddPage(metapanel, self.config.getSectionTitle(secname)) + # add résumé + self.resumepanel = ResumePanel(self.notebook) + # self.resumepanel.Bind(wx.EVT_SET_FOCUS, self.resumepanel.ShowMetas(self.metadata)) + self.notebook.AddPage(self.resumepanel, "[Résumé]") self.Layout() def clear_metapanels(self): @@ -569,19 +691,31 @@ def parse_file(self, ifile): def update_interface(self): for secname, secdata in self.metadata.sections(): self.metapanels[secname].setSectionData(secdata) + # update résumé + self.resumepanel.ShowMetas(self.metadata) def update_metadata(self): # collect all metadata given for secname, mp in self.metapanels.items(): self.metadata.setSection(secname, mp.getSectionData()) + # update résumé + self.resumepanel.ShowMetas(self.metadata) def write_xmldata(self): self.update_metadata() + metadatadict=self.metadata.toPlain() # text-script REQUIRED VALUE JJM 29/12/2024 + if metadatadict['text:script']=='': + # wx.MessageBox('text:script is not set, please check in the Texte panel', 'value required', wx.OK | wx.ICON_INFORMATION) + wx.MessageBox('Le Type d\'écriture (text:script) doit être précisé, vérifier dans l\'onglet Texte ', 'value required', wx.OK | wx.ICON_INFORMATION) + return tempout = tempfile.NamedTemporaryFile(delete=False) - self.io.write(tempout.name, metadata=self.metadata.toPlain()) + # self.io.write(tempout.name, metadata=self.metadata.toPlain()) + self.io.write(tempout.name, metadata=metadatadict) + tempout.close() outfile = os.path.join(self.dirname, self.filename) shutil.copyfile(tempout.name, outfile) + #print("tempout.name: ",tempout.name) os.unlink(tempout.name) def OnRetainToggled(self, e): @@ -591,7 +725,14 @@ def OnConfigSelected(self, e): if self.filename: self.FileOpenedError(e) else: + global confpath confpath = e.GetPath() + + # self.SetTitle("["+confpath+"]") # JJM 26/12/2024 + myconfig = wx.Config.Get() + myconfig.Write("meta/confpath",confpath) # JJM 26/12/2024 + myconfig.Flush() + self.config = MetaConfig(confpath) if len(self.metapanels) > 0: self.clear_metapanels() @@ -615,7 +756,7 @@ def OnOpen(self,e): if not self.config: self.NoFileError(e) return False - dlg = wx.FileDialog(self, "Choose a file", self.dirname, "", "*.*", wx.FD_OPEN) + dlg = wx.FileDialog(self, "Choose a file", self.dirname, "", "meta files (txt/html)|*.html;*.txt", wx.FD_OPEN) if dlg.ShowModal() == wx.ID_OK: self.infile = dlg.GetPath() self.filename = os.path.basename(self.infile) @@ -627,6 +768,9 @@ def OnOpen(self,e): self.draw_metapanels() self.update_interface() self.filepanel.control.SetValue(self.txt) + # global confpath + # self.SetTitle("["+confpath+"] - "+self.filename) # added JJM 26/12/2024 + self.SetTitle("Meta : "+self.filename) # added JJM 30/12/2024 dlg.Destroy() def OnSave(self,e): @@ -658,6 +802,14 @@ def OnSaveAs(self,e): def OnClose(self,e): self.OnSave(e) self.init_values() + # JJM save window position and size + x,y=self.Position + w,h=self.Size + self.myconfig.WriteInt("MainFrame/pos/x",x) + self.myconfig.WriteInt("MainFrame/pos/y",y) + self.myconfig.WriteInt("MainFrame/size/w",w) + self.myconfig.WriteInt("MainFrame/size/h",h) + self.myconfig.Flush() # permanently writes if self.cleanup: self.clear_metapanels() self.draw_metapanels() diff --git a/daba/mparser.py b/daba/mparser.py index 0602edc..5bca463 100644 --- a/daba/mparser.py +++ b/daba/mparser.py @@ -278,6 +278,9 @@ def convert_orthography(self, word): for plugin in self.converters: converted = [] for w in wlist: + # print("w:'"+w+"'") # if next line starts with " we have here '\n"' ??? + # if '\n' in w : w=w.replace('\n','') + # this should NEVER happen given the definition of 'Par' in tokenizer.py!!! for result in plugin.convert(w): converted.append(result) wlist = converted @@ -297,6 +300,11 @@ def filter_parsed(self, results, forms): return stage, filtered def parse(self, txt): + + def iscapitalized(s): + if len(s) ==1 : return s.isupper() + else: return (s[0].isupper() and s[1:].islower()) + self.parsed = [] for para in txt: par = [] @@ -305,32 +313,318 @@ def parse(self, txt): st = (sttoken, []) par.append(st) annot = st[1] + wordindex=0 + # print("sent:",sent) for token in sent: if token.type in ['Comment', 'Tag']: annot.append(daba.formats.PlainToken((token.type, token.value))) elif token.type in ['Punct', 'SentPunct', 'Nonword']: + # annot.append(daba.formats.PlainToken(('c', token.value))) if self.converters: + # print("token value:",token.value) ctoken = self.convert_orthography(token.value)[0] else: ctoken = token.value annot.append(daba.formats.PlainToken(('c', ctoken))) + # print('PUNCT token.value=',token.value) + if token.value in [":","«",'"','“',"-","("] : + wordindex=0 # need to reset, next word in Capital like at start of sentence - for instance after : or « + # print("(in) wordindex=",wordindex,"token.value=",token.value) + elif token.type in ['Cardinal']: gloss = Gloss(token.value, ('num',), 'CARDINAL', ()) annot.append(daba.formats.WordToken([gloss], token.value, 'tokenizer')) elif token.type in ['Word']: + wordindex+=1 if self.converters: wlist = self.convert_orthography(token.value) converts = [] for w in filter(None, wlist): converts.append( - self.parser.lemmatize(w.lower()) + #self.parser.lemmatize(w.lower()) + self.parser.lemmatize(w) ) try: stage, glosslist = self.filter_parsed(converts, list(filter(None, wlist))) except ValueError: print("WARNING: invalid orthographic conversion result, skippig token:", token.type, token.value, converts) else: - stage, glosslist = self.parser.lemmatize(token.value.lower()) + #stage, glosslist = self.parser.lemmatize(token.value.lower()) + stage, glosslist = self.parser.lemmatize(token.value) + # but that's not enough: + # if stage, glosslist looks like: (-1, [Gloss(form='hawa', ps=(), gloss='', morphemes=())]) + # we need to try again : if 1st letter is in lower case, try uppercasing it + # else if it is in uppercase, try lowercasing it. + + # for now restricted to results with glosslist limited to one + # it would be nice to also tackle longer glosslist with emply morphemes gloss, + # where only derivation morphemes are identifiable, e.g. : + # propername Keyita, distracted by possible suffix -ta + # [Gloss(form='keyita', ps=(), gloss='', morphemes=()), Gloss(form='keyita', ps=('ptcp',), gloss='', morphemes=(Gloss(form='keyi', ps=('v',), gloss='', morphemes=()), Gloss(form='ta', ps=('mrph',), gloss='PTCP.POT', morphemes=())))] + # propername Mayiga:, distracted by possible prefix ma- + # [Gloss(form='mayiga', ps=(), gloss='', morphemes=()), Gloss(form='mayiga', ps=('v',), gloss='', morphemes=(Gloss(form='mà', ps=('mrph',), gloss='SUPER', morphemes=()), Gloss(form='yiga', ps=('v',), gloss='', morphemes=())))] + + if len(glosslist)==1 or glosslist[0].gloss=="": + gloss=glosslist[0] + if ( len(gloss.ps)==0 and gloss.gloss=="") \ + or (len(gloss.ps)==1 and gloss.ps[0]=="") \ + or (len(gloss.ps)==1 and gloss.ps[0]=="n.prop") : + #Last test + #1) n.prop:NOM is only the default for capitalized token (see bamana.gram.txt) + # but I removed this rtestriction: and gloss.gloss=="NOM" because: + #2) other proper names are inherently misleading and should be presented with alternative lowercase solution + # like Sira (also sira: road, path) or Misi (also misi: cow) and many more + # not doing so produces ridiculous solutions - JJM 07/02/2025 + + # 01/04/2025 traiter des cas comme + # cikɛ-bolofarakuntigi:n: [cikɛ-bolofarakun:n: tìgi:n:maître] + # en éliminant le ou les - + + trythis="" + + if self.converters: + wlist = self.convert_orthography(token.value) + trythis=wlist[0] + + if "-" in trythis: + wlist.append(trythis.replace("-","")) + + if trythis.islower(): + converts = [] + for w in filter(None, wlist): + w=w.capitalize() + converts.append( + self.parser.lemmatize(w) + ) + elif iscapitalized(trythis) : + converts = [] + for w in filter(None, wlist): + w=w.lower() + converts.append( + self.parser.lemmatize(w) + ) + else: # word is all caps or a mixture + converts = [] + for w in filter(None, wlist): + w=w.lower() + converts.append( + self.parser.lemmatize(w) + ) + for w in filter(None, wlist): + w=w.lower().capitalize() + converts.append( + self.parser.lemmatize(w) + ) + try: + # print("wlist=",wlist) + stage2, glosslist2 = self.filter_parsed(converts, list(filter(None, wlist))) + except ValueError: + print("WARNING4: invalid orthographic conversion result, skipping token:", token.type, token.value, converts) + + else: + # print("not self.converters token.value=",token.value) + trythis2="" + if token.value.islower(): + trythis=token.value.capitalize() + elif iscapitalized(token.value): + trythis=token.value.lower() + else: + trythis=token.value.lower() + trythis2=token.value.lower().capitalize() + try: + stage2,glosslist2=self.parser.lemmatize(trythis) + except ValueError: + print("WARNING5: invalid orthographic conversion result, skipping token:", token.type, token.value, converts) + + if trythis2 != "": + try: + stage3,glosslist3=self.parser.lemmatize(trythis2) + glosslist2=glosslist2+glosslist3 + except ValueError: + print("WARNING6 ",trythis2," lemmatize error ") + + if trythis != "": + #gl2="" + #for g in glosslist2: + # gl2 +=str(g)+", " + #print("glosslist2","["+gl2[:-2]+"]") + + if len(glosslist2)>0 and glosslist2!=glosslist: + for g in glosslist2: + if len(g.ps)>0 and g.ps[0] != "": + nggok=0 + if g.gloss=="" : + if len(g.morphemes)>0 : + for gg in g.morphemes: + if len(gg.ps)==1 and gg.ps[0]!="mrph" and gg.gloss!="": nggok+=1 + else: + nggok=1 + + if nggok>0: + if g in glosslist: continue + else: glosslist.append(g) + + # do some cleanup on resulting list + glosslist2=glosslist + glosslist=[] + for g in glosslist2: + if len(g.ps)>0 and g.ps[0] != "": + nggok=0 + if g.gloss=="" : + if len(g.morphemes)>0 : + for gg in g.morphemes: + if len(gg.ps)==1 and gg.ps[0]!="mrph" and gg.gloss!="": nggok+=1 + else: + nggok=1 + + if nggok>0: + if g in glosslist: continue + else: glosslist.append(g) + if len(glosslist) == 0 : + glosslist=glosslist2 # no interesting results found! + + + # MORE CLEANUP: + # if len glosslist>1 éliminate X:n.prop:NOM artificial entries + if len(glosslist)>1: + glosslist2=glosslist + glosslist=[] + for g in glosslist2: + if len(g.ps)>0: + if not (g.ps[0]=='n.prop' and g.gloss=='NOM'): + glosslist.append(g) + if len(glosslist) == 0 : + glosslist=glosslist2 # no interesting results found! + + #gl1="" + #for g in glosslist: + # gl1 +=str(g)+", " + #print("solution found?:","["+gl1[:-2]+"]") + + # needs testing here if it is the first Word in sentence (added wordindex) + # do "trythis" (try lower case - but also try uppercase if it's old bambara all in lowercase) + # and append to already found glosslist + # example Masalabolo may have identified Masala as TOP + bolo "branch" + # but it can also be masalabolo "text" + # print("(word) wordindex=",wordindex,"token=",token.value) + if wordindex==1: + # caution: this is not beginning of sentence but is restarted at punctuations, ie: also after a comma + + # assess initial situation, how many catitalized and lowercase results + gl1 ="" + ncapitalized=0 + nlowercase=0 + # print("glosslist",glosslist) + for g in glosslist: + if g.form[0].islower(): nlowercase+=1 + else: ncapitalized+=1 + gl1 +=str(g)+", " + #print("standard list for :",token.value,"glosslist:","["+gl1 [:-2]+"]") + #if nlowercase==0:print("all capitalized") + #elif ncapitalized==0:print("all lowercase") + #else: print("mixed list lower and capitalized") + + trythis="" + + testthis=token.value[0] + if self.converters: + wlist = self.convert_orthography(token.value) + testthis = wlist[0] + if "-" in testthis: + wlist.append(testthis.replace("-","")) + + if testthis.islower(): # was gloss.form + if ncapitalized == 0: # not capitalized result in standard approach + trythis=token.value.capitalize() # no worry if converters (not used there), trythis just needs to be <> " + if self.converters: + # already done : wlist = self.convert_orthography(token.value) + converts = [] + for w in filter(None, wlist): + w=w.capitalize() + converts.append( + self.parser.lemmatize(w) + ) + try: + stage2, glosslist2 = self.filter_parsed(converts, list(filter(None, wlist))) + except ValueError: + print("WARNING2: invalid orthographic conversion result, skippig token:", token.type, token.value, converts) + else: + stage2,glosslist2=self.parser.lemmatize(trythis) + + #gl2="" + #for g in glosslist2: gl2+=str(g)+", " + #print("islower trythis:",trythis,"glosslist2:","["+gl2[:-2]+"]") + + else: # Word was capitalized + if nlowercase == 0 : # no lowercase result in standard approach + trythis=token.value.lower() # no worry if converters (not used there), trythis just needs to be <> " + if self.converters: + # already done: wlist = self.convert_orthography(token.value) + converts = [] + for w in filter(None, wlist): + w=w.lower() + converts.append( + self.parser.lemmatize(w) + ) + try: + stage2, glosslist2 = self.filter_parsed(converts, list(filter(None, wlist))) + except ValueError: + print("WARNING3: invalid orthographic conversion result, skippig token:", token.type, token.value, converts) + else: + stage2,glosslist2=self.parser.lemmatize(trythis) + + #gl2="" + #for g in glosslist2: gl2+=str(g)+", " + #print("not islower trythis:",trythis,"glosslist2:","["+gl2[:-2]+"]") + + if trythis!="": + + if glosslist2!=glosslist: + for g in glosslist2: + if len(g.ps)>0 : + nggok=0 + if g.gloss=="" : + if len(g.morphemes)>0 : + for gg in g.morphemes: + if len(gg.ps)==1 and gg.ps[0]!="mrph" and gg.gloss!="": nggok+=1 + else: + nggok=1 + + if nggok>0: + if g in glosslist: continue + else: glosslist.append(g) + + # nettoyage des doublons + # faut-il plus de nettoyage (gloses inutiles) ??? + + glosslist2=glosslist + glosslist=[] + for g in glosslist2: + if g not in glosslist: + glosslist.append(g) + + if len(glosslist)==0: + glosslist=glosslist2 + + # MORE CLEANUP: + # if len glosslist>1 éliminate X:n.prop:NOM artificial entries + if len(glosslist)>1: + glosslist2=glosslist + glosslist=[] + for g in glosslist2: + if len(g.ps)>0: + if not (g.ps[0]=='n.prop' and g.gloss=='NOM'): + glosslist.append(g) + if len(glosslist) == 0 : + glosslist=glosslist2 # no interesting results found! + + + + #gl1 ="" + #for g in glosslist: gl1 +=str(g)+", " + #print("Resulting glosslist:","["+gl1 [:-2]+"]") + + #else: print("no change") if self.normalize_orthography and self.converters: if len(wlist) == 1: @@ -346,6 +640,10 @@ def parse(self, txt): else: annot.append(daba.formats.WordToken(glosslist, token.value, str(stage))) + + + + self.parsed.append(par) return self.parsed diff --git a/daba/newmorph.py b/daba/newmorph.py old mode 100644 new mode 100755 index 890dd80..0581f20 --- a/daba/newmorph.py +++ b/daba/newmorph.py @@ -215,7 +215,8 @@ def parse(self, pattern, gloss): result = pattern.apply(gloss) if result: if () in [m.ps for m in result.morphemes]: - ms = filter(lambda i: i.ps is not (), result.morphemes) + # ms = filter(lambda i: i.ps is not (), result.morphemes) + ms = filter(lambda i: i.ps != (), result.morphemes) result = result._replace(morphemes=ms) return [result] else: @@ -232,9 +233,16 @@ def decompose(self, pattern, gloss): if parts < 2: return self.parse(pattern, gloss) else: - if gloss.morphemes: - #FIXME: use only first non-glossed morpheme as possible stem - stemgloss, stempos = [(m,pos) for pos,m in enumerate(gloss.morphemes) if not m.gloss][0] + if gloss.morphemes : + xxx=[(m,pos) for pos,m in enumerate(gloss.morphemes) if not m.gloss] + if len(xxx)>0: + #FIXME: use only first non-glossed morpheme as possible stem + #print("newmorph 237 m,pos :",[(m,pos) for pos,m in enumerate(gloss.morphemes) if not m.gloss]) + # stemgloss, stempos = [(m,pos) for pos,m in enumerate(gloss.morphemes) if not m.gloss][0] + stemgloss, stempos =xxx[0] + else: + stemgloss = gloss + stempos = -1 else: stemgloss = gloss stempos = -1 diff --git a/daba/plugins/bamlatinold.py b/daba/plugins/bamlatinold.py index f0ee8a9..31b573d 100644 --- a/daba/plugins/bamlatinold.py +++ b/daba/plugins/bamlatinold.py @@ -12,24 +12,28 @@ def __init__(self, *args, **kwargs): self.title = 'bamlatinold' self.desc = 'Convertor from old latin Bambara orthography (ambiguous)' + # some transforms could be valid for bamlatinNEW: u'ng':[u'ng',u'ŋ'], u'ny':[u'ny',u'ɲ'], u'ua':['wa'] + def convert(self, token): """ Main conversion method """ - conversion_table = {u'è':[u'ɛ'], u'ò':[u'ɔ'], u'èe':[u'ɛɛ'], u'òo':[u'ɔɔ'], u'ng':[u'ng',u'ŋ'], u'ny':[u'ny',u'ɲ']} - + conversion_table = {u'è':[u'ɛ'], u'ò':[u'ɔ'], u'èe':[u'ɛɛ'], u'òo':[u'ɔɔ'], u'ng':[u'ng',u'ŋ'], u'ny':[u'ny',u'ɲ'], u'ua':['wa']} + def graphemes_old(word): # split word into maximal length graphemes (old orthography) specs = [ ('NG', (r'ng', re.I | re.U)), ('NY', (r'ny', re.I | re.U)), + ('UA', (r'ua', re.I | re.U)), ('EE', (r'è[eè]', re.I | re.U)), ('OO', (r'ò[oò]', re.I | re.U)), ('ANY', (r'.', re.U)), ] + tok = funcparserlib.lexer.make_tokenizer(specs) r = [x.value for x in tok(unicodedata.normalize('NFKC', word))] - #print('CW', string, ':', r) + return r def multiply_list(amblist): diff --git a/daba/plugins/dukure.py b/daba/plugins/dukure.py new file mode 100644 index 0000000..def4194 --- /dev/null +++ b/daba/plugins/dukure.py @@ -0,0 +1,83 @@ +#!/usr/bin/env python3 +# -*- coding: utf8 -*- + +from daba.plugins import OrthographyConverter +import funcparserlib.lexer +import re +import unicodedata + + +class DukuretoNew(OrthographyConverter): + def __init__(self, *args, **kwargs): + self.title = 'dukure' + self.desc = 'Convertor from Mamadu Dukurɛ (Fakan) orthography' + + def convert(self, token): + """ + Main conversion method + """ + conversion_table = {r"^['‘]":[u''], u'-':[u'-', u''], u'ʃ':[u's', u'sh'], + u'\u0300':[''], u'à':[u'a'], u'è':[u'e'], u'ì':[u'i'], u'ò':[u'o'], u'ù':[u'u'], u'ὲ':[u'ɛ'], + u'\u041B':[u'Ɲ'], u'\u043B':[u'ɲ'], u'ɑ':['a'], u'ε':['ɛ'], + u'ng':[u'ng',u'ŋ'], u'ny':[u'ny',u'ɲ'], + u'bl':[u'bil',u'bul'], u'tl':[u'til', u'tul']} + # apostrophe initiale=article défini: supprimer + # critique : le parser l'a déjà détachée comme ponctuation + # ça n'est pas toujours vrai : 'kɔnɔ. en fin de phrase ??? + # le tiret intermédiaire est fréquemment utilisé mais met en difficulté gparser : convertir en deux solutions + # lettre ʃ : convertir: 2 solutions sh ou s + # ton bas : supprimer + # MAIS ils sont le plus souvent traités par des monolithes àè...ὲ ! d'où la 2ème ligne + # critique : le parser a déjà divisé les monolithes + # Accidents fréquents + # - Л cyrillique : convertir en Ɲ - minuscule л ajoutée - incertitude ne marche pas sur le dernier mot d'une phrase? + # - ɑ cyrillique : convertir en a + # - ε grec : convertir en ɛ + # ng, ny gardés "au cas où" + # les majuscules aux verbes, marques prédicatives, copules sont traitées dans un dictionnaire avec \ve + # contractions: (Bla pour bìla): traitées aussi en dictionnaire ? + + + def graphemes_old(word): + # split word into maximal length graphemes (old orthography) + specs = [ + ('NG', (r'ng', re.I | re.U)), + ('NY', (r'ny', re.I | re.U)), + ('BL', (r'bl', re.I | re.U)), + ('TL', (r'tl', re.I | re.U)), + ('ANY', (r'.', re.U)), + ] + + tok = funcparserlib.lexer.make_tokenizer(specs) + r = [x.value for x in tok(unicodedata.normalize('NFKC', word))] + + return r + + def multiply_list(amblist): + # given list of lists, returns list of all possible concatenations + # taking a single element from each list + def multiply_list_aux(l, amblist): + if len(amblist)>0: + m = [ l[k]+[amblist[0][i]] for k in range(len(l)) for i in range(len(amblist[0]))] + return multiply_list_aux(m, amblist[1:]) + else: + return l + return multiply_list_aux([[]], amblist) + + def convertg(grapheme): + # convert a single grapheme into a list of corresponding graphemes in new orthography + try: + # !!HACK: converts graphemes to lowercase!! + return conversion_table[grapheme.lower()] + except KeyError: + return [grapheme] + + def convertw(word): + # given single word in old orthography returns + # list of all possible translations to new orthography + graphemes = [convertg(g) for g in graphemes_old(word)] + return [''.join(w) for w in multiply_list(graphemes)] + + x=convertw(token) + # print("DukuretoNew: ",x) + return x diff --git a/daba/plugins/nko.py b/daba/plugins/nko.py index b34b0ad..4a877c8 100644 --- a/daba/plugins/nko.py +++ b/daba/plugins/nko.py @@ -17,6 +17,7 @@ def convert(self, token): """ w = token + # if token.type != 'Word': # w = w.replace('\u060c', ',') # w = w.replace('\u200f', '') @@ -28,14 +29,15 @@ def convert(self, token): if debug: print("NKO", w, ) - ### FOREIGN sounds with diacritics: + ### FOREIGN sounds with diacritics: + # 07ed=short rising tone (dot above) 07f3=double dot above 07eb= short high tone (bar above) w = w.replace('\u07d6\u07ed', r"z") w = w.replace('\u07db\u07ed', r"S") ### SH w = w.replace('\u07dc\u07ed', r"g") w = w.replace('\u07dd\u07ed', r"v") w = w.replace('\u07d8\u07ed', r"D") ### D. w = w.replace('\u07e4\u07ed', r"Q") ### H. - w = w.replace('\u07d7\u07ed', r"J") ### C. + w = w.replace('\u07d7\u07ed', r"J") ### C. CHA+short rising tone w = w.replace('\u07de\u07ed', r"x") ### K. w = w.replace('\u07d5\u07ed', r"T") ### T. @@ -46,21 +48,22 @@ def convert(self, token): w = w.replace('\u07db\u07eb', r"C") ### S= w = w.replace('\u07de\u07eb', r"q") ### K= - w = w.replace('\u07f3', "\u0308") - w = w.replace('\u07f6', r"o") - w = w.replace('\u07cb\u0623', r"{") - w = w.replace('\u07cb\u0625', r"}") + w = w.replace('\u07f3', "\u0308") # Double dot above -> ̈ Combining Diaeresis (U+0308) + + w = w.replace('\u07f6', r"o") # ߶ N'Ko OO dennen + w = w.replace('\u07cb\u0623', r"{") # ߋ N'ko EE + أ Arabic Letter Alef With Hamza Above (U+0623) + w = w.replace('\u07cb\u0625', r"}") # ߋ N'ko EE + إ Arabic Letter Alef With Hamza Below (U+0625) ### VOWELS: w = w.replace('\u07ca', r"a") w = w.replace('\u07cb', r"e") w = w.replace('\u07cc', r"i") - w = w.replace('\u07cd', r"H") + w = w.replace('\u07cd', r"H") # ߍ w = w.replace('\u07ce', r"u") w = w.replace('\u07cf', r"o") w = w.replace('\u07d0', r"O") ### SYLLABIC N - w = w.replace('\u07d2', r"N") + w = w.replace('\u07d2', r"N") # ߒ ### CONSONANTS: w = w.replace('\u07d3', r"b") @@ -76,30 +79,45 @@ def convert(self, token): w = w.replace('\u07dd', r"f") w = w.replace('\u07de', r"k") w = w.replace('\u07df', r"l") - w = w.replace('\u07e0', r"n") # Na woloso + w = w.replace('\u07e0', r"n") # ߠ Na woloso w = w.replace('\u07e1', r"m") - w = w.replace('\u07e2', r"Y") # Nya + w = w.replace('\u07e2', r"Y") # ߢ Nya w = w.replace('\u07e3', r"n") w = w.replace('\u07e4', r"h") w = w.replace('\u07e5', r"w") w = w.replace('\u07e6', r"y") - w = w.replace('\u07e7', r"y") # Nya woloso + w = w.replace('\u07e7', r"y") # ߧ Nya woloso ### APOSTROPHES: - w = w.replace('\u07f4', r"’") - w = w.replace('\u07f5', r"‘") - + #w = w.replace('\u07f4', r"’") + #w = w.replace('\u07f5', r"‘") + w = w.replace('\u07f4', r"'") # MODIFIED JJM 09/10/2024 + w = w.replace('\u07f5', r"'") # MODIFIED JJM 09/10/2024 + ### DOUBLE PUNCTUATIONS # MODIFIED JJM 18/10/2024 + w = w.replace('ߵߵ', r'"') + #w = w.replace('<<', r'«') # this is handled in mparser sent_splitter + #w = w.replace('>>', r'»') ### PUNCTUATION: w = w.replace('\u060c', r",") # Arabic comma w = w.replace('\u061f', r"?") # Arabic question mark - w = w.replace('؛', r";") - w = w.replace('\u07fa', r"-") - w = w.replace('\u066a', r"%") - w = w.replace('\u200f', '') # right-to-left mark - w = w.replace('\u07f9', r"!") - w = w.replace('\u07f8', "\u00b7") # strange ·_ + w = w.replace('؛', r";") # U+061B ؛ ARABIC SEMICOLON + w = w.replace('\u07fa', r"-") # N'Ko LAJANYALAN + w = w.replace('\u066a', r"%") # Arabic Percent sign ٪ + w = w.replace('\u200f', '') # right-to-left mark + w = w.replace('\u07f9', r"!") # N'Ko EXLAMATION MARK + w = w.replace(' \u07d1 ', r" ߸ ") # erroneous use of N'ko dagbasinna as N'Ko comma (always between spaces) - JJM 19/nov/2024 + w = w.replace('\u07f8', ",") # N'Ko COMMA ߸ + w = w.replace('\u202e', " ") # RLO (Right-Left Override) + # not translated : ref https://www.unicode.org/charts/PDF/U07C0.pdf + # \07F7 NKO SYMBOL GBAKURUNEN ߷ + # \07FE NKO DOROME SIGN ߾߾ + # \07FF NKO TAMAN SIGN ߿ + # \07FD NKO DANTAYALAN ߽ + # bad idea? w = w.replace('(', "¤(¤") # rotate parenthesis JJM 11/12/2024 + # bad idea? w = w.replace(')', "(") + # bad idea? w = w.replace("¤(¤",")") ### MARKING HIGH TONE: w = re.sub('(a|e|H|i|o|O|u|N)(b|p|t|j|c|d|r|R|s|G|f|k|l|n|m|Y|h|w|y|z|g|S|v|F|D|Q|J|A|T|Z|C|x|q|-)', "\\1\u0301\\2", w) @@ -175,7 +193,17 @@ def convert(self, token): ### REMOVE flowting low tone from "i" and "n" pronouns: w = re.sub('\b([iN])\u0301`', "\\1\u0301", w) - ### NUMERALS: + ### if N'Ko Text already contains LATIN NUMBERS (happened in Solomana Kante Kurukanfuwa) JJM nov 2024 + # REVERSE NUMBERS : 31 in N'Ko is 13 in latin ! + def reverse(m): + digits=m.groups()[0] + digitsr = digits[len(digits)::-1] + return digitsr + w = re.sub(r'([0-9][0-9]+)',reverse,w) + # otherwise, the reversal comes with the replacement of RTL characters with LTR characters + # for numbers just as well as for words + + ### NUMERALS: w = w.replace('\u07c0', r"0") w = w.replace('\u07c1', r"1") w = w.replace('\u07c2', r"2") @@ -186,7 +214,12 @@ def convert(self, token): w = w.replace('\u07c7', r"7") w = w.replace('\u07c8', r"8") w = w.replace('\u07c9', r"9") - w = re.sub('(\d)\u07f2', r"\1nan", w) + w = re.sub('r(\d)\u07f2', r"\1nan", w) + w = re.sub('r(\d) \u07f2', r"\1nan", w) # I notice it is considered separate JJM 28/10/2024 + w = re.sub('r\u07f2(\d)', r"\1nan", w) # is it not the reverse? JJM 28/10/2024B + w = re.sub('r\u07f2 (\d)', r"\1nan", w) # is it not the reverse? JJM 28/10/2024B + #NB : none of these 4 approaches work ? + ### NASALIZATION MARK: w = w.replace('\u07f2', r"n") @@ -199,14 +232,14 @@ def convert(self, token): w = w.replace('R', r"rr") w = w.replace('G', r"gb") w = w.replace('S', r"sh") # sh - w = w.replace('D', "d\u0323") ### D. - w = w.replace('Q', "\u0127") ### H. - w = w.replace('J', "\u0292") ### C. = zh - w = w.replace('A', "\u0295") ### A" - w = w.replace('F', "\u03b8") ### S" - w = w.replace('T', "t\u0323") ### J" - w = w.replace('Z', "z\u0323") ### J" - w = w.replace('C', "s\u0323") ### S= + w = w.replace('D', "d\u0323") ### D. u0323=Combining dot below + w = w.replace('Q', "\u0127") ### H. Latin Small Letter H With Stroke (U+0127) + w = w.replace('J', "\u0292") ### C. = zh - why not j ??? + w = w.replace('A', "\u0295") ### A" Latin Letter Pharyngeal Voiced Fricative (U+0295) + w = w.replace('F', "\u03b8") ### S" Greek Small Letter Theta (U+03B8) + w = w.replace('T', "t\u0323") ### J" u0323=Combining dot below + w = w.replace('Z', "z\u0323") ### J" u0323=Combining dot below + w = w.replace('C', "s\u0323") ### S= u0323=Combining dot below w = re.sub('[‘]', r"`", w) w = re.sub('[’]', r"'", w) w = w.replace('_', '') @@ -217,7 +250,7 @@ def convert(self, token): if debug: print("LAT", w,) w = self.normalize_tones(w) - + if debug: print("TNL", w) return [w] diff --git a/daba/plugins/thoyer.py b/daba/plugins/thoyer.py new file mode 100644 index 0000000..7f9d374 --- /dev/null +++ b/daba/plugins/thoyer.py @@ -0,0 +1,67 @@ +#!/usr/bin/env python3 +# -*- coding: utf8 -*- + +from daba.plugins import OrthographyConverter +import funcparserlib.lexer +import re +import unicodedata + + +class ThoyertoNew(OrthographyConverter): + def __init__(self, *args, **kwargs): + self.title = 'thoyer' + self.desc = 'Convertor from Annik Thoyer transcriptions 1978' + + def convert(self, token): + """ + Main conversion method + """ + conversion_table = {u'èè':[u'ɛɛ'], u'òò':[u'ɔɔ'], u'èe':[u'ɛɛ'], u'òo':[u'ɔɔ'], u'è':[u'ɛ'], u'ò':[u'ɔ'], + u'ng':[u'ng',u'ŋ'], u'ny':[u'ny',u'ɲ'], + u'sy':[u'sh', u's'], u'y':[u'y', u'j'], u'gh':[u'g'], u'gb':[u'g'], u'gw':[u'g',u'j',u'gw']} + + def graphemes_old(word): + # split word into maximal length graphemes (old orthography) + specs = [ + ('NG', (r'ng', re.I | re.U)), + ('NY', (r'ny', re.I | re.U)), + ('EE', (r'è[eè]', re.I | re.U)), + ('OO', (r'ò[oò]', re.I | re.U)), + ('GH', (r'gh', re.I | re.U)), + ('GB', (r'gb', re.I | re.U)), + ('GW', (r'gw', re.I | re.U)), + ('SY', (r'sy', re.I | re.U)), + ('ANY', (r'.', re.U)), + ] + + tok = funcparserlib.lexer.make_tokenizer(specs) + r = [x.value for x in tok(unicodedata.normalize('NFKC', word))] + + return r + + def multiply_list(amblist): + # given list of lists, returns list of all possible concatenations + # taking a single element from each list + def multiply_list_aux(l, amblist): + if len(amblist)>0: + m = [ l[k]+[amblist[0][i]] for k in range(len(l)) for i in range(len(amblist[0]))] + return multiply_list_aux(m, amblist[1:]) + else: + return l + return multiply_list_aux([[]], amblist) + + def convertg(grapheme): + # convert a single grapheme into a list of corresponding graphemes in new orthography + try: + # !!HACK: converts graphemes to lowercase!! + return conversion_table[grapheme.lower()] + except KeyError: + return [grapheme] + + def convertw(word): + # given single word in old orthography returns + # list of all possible translations to new orthography + graphemes = [convertg(g) for g in graphemes_old(word)] + return [''.join(w) for w in multiply_list(graphemes)] + + return convertw(token) diff --git a/daba/plugins/ytcisse.py b/daba/plugins/ytcisse.py new file mode 100644 index 0000000..e1880fb --- /dev/null +++ b/daba/plugins/ytcisse.py @@ -0,0 +1,79 @@ +#!/usr/bin/env python3 +# -*- coding: utf8 -*- + +from daba.plugins import OrthographyConverter +import funcparserlib.lexer +import re +import unicodedata + + +class YTCissetoNew(OrthographyConverter): + def __init__(self, *args, **kwargs): + self.title = 'ytcisse' + self.desc = 'Convertor from Youssouf Tata Cissé transcriptions of Wa Kamissoko 1976' + + def convert(self, token): + """ + Main conversion method + """ + conversion_table = {u'èè':[u'ɛɛ'], u'òò':[u'ɔɔ'], u'èe':[u'ɛɛ'], u'òo':[u'ɔɔ'], u'è':[u'ɛ'], u'ò':[u'ɔ'], + u'ng':[u'ng',u'ŋ'], u'nw':[u'ng',u'nw'], u'ny':[u'ny',u'ɲ'], u'dy':[u'j',u'dy'], u'ty':[u'c',u'ty'], u't':[u't',u'c'], u'k':[u'k',u'g'], + u'sh':[u's',u'sh'], u'sy':[u'sh', u's'], u'y':[u'y', u'j'], u'gh':[u'g'], u'gb':[u'g'], u'gw':[u'g',u'j',u'gw'], + u'aa':[u'aa',u'a'], u'ee':[u'ee',u'e'], u'ii':[u'ii',u'i'], u'oo':[u'oo',u'o'], u'uu':[u'uu',u'u'], u'ɛɛ':[u'ɛɛ',u'ɛ'], u'ɔɔ':[u'ɔɔ',u'ɔ']} + + def graphemes_old(word): + # split word into maximal length graphemes (old orthography) + specs = [ + ('NG', (r'ng', re.I | re.U)), + ('NY', (r'ny', re.I | re.U)), + ('NW', (r'nw', re.I | re.U)), + ('DY', (r'dy', re.I | re.U)), + ('TY', (r'ty', re.I | re.U)), + ('EE', (r'è[eè]', re.I | re.U)), + ('OO', (r'ò[oò]', re.I | re.U)), + ('GH', (r'gh', re.I | re.U)), + ('GB', (r'gb', re.I | re.U)), + ('GW', (r'gw', re.I | re.U)), + ('SH', (r'sh', re.I | re.U)), + ('SY', (r'sy', re.I | re.U)), + ('A2', (r'aa', re.I | re.U)), + ('E2', (r'ee', re.I | re.U)), + ('I2', (r'ii', re.I | re.U)), + ('O2', (r'oo', re.I | re.U)), + ('U2', (r'uu', re.I | re.U)), + ('Ɛ2', (r'ɛɛ', re.I | re.U)), + ('Ɔ2', (r'ɔɔ', re.I | re.U)), + ('ANY', (r'.', re.U)), + ] + + tok = funcparserlib.lexer.make_tokenizer(specs) + r = [x.value for x in tok(unicodedata.normalize('NFKC', word))] + + return r + + def multiply_list(amblist): + # given list of lists, returns list of all possible concatenations + # taking a single element from each list + def multiply_list_aux(l, amblist): + if len(amblist)>0: + m = [ l[k]+[amblist[0][i]] for k in range(len(l)) for i in range(len(amblist[0]))] + return multiply_list_aux(m, amblist[1:]) + else: + return l + return multiply_list_aux([[]], amblist) + + def convertg(grapheme): + # convert a single grapheme into a list of corresponding graphemes in new orthography + try: + # !!HACK: converts graphemes to lowercase!! + return conversion_table[grapheme.lower()] + except KeyError: + return [grapheme] + + def convertw(word): + # given single word in old orthography returns + # list of all possible translations to new orthography + graphemes = [convertg(g) for g in graphemes_old(word)] + return [''.join(w) for w in multiply_list(graphemes)] + + return convertw(token) diff --git a/daba/wordparser.py b/daba/wordparser.py index dfa96df..77cf98f 100644 --- a/daba/wordparser.py +++ b/daba/wordparser.py @@ -2,16 +2,187 @@ import sys from daba.mparser import DictLoader, GrammarLoader, Processor from pprint import pprint +# colours in terminal : https://stackoverflow.com/a/2616912 +import re +import signal +#from Tkinter import Tk + +def handler(signum, frame): + print("use Shift+Ctrl+C to copy - just use (blank entry)/return to exit") + #Tk().clipboard_get() # copy anyway ? + +signal.signal(signal.SIGINT, handler) + +splitted=re.compile(r"́|̀|̌|̂|̧|̈") +mapping = { 'à':'à','á':'á', 'â':'â', 'é':'é', 'ê':'ê', 'è':'è', 'ë':'ë', 'ì':'ì', 'í':'í', 'î':'î', 'ï':'ï', 'ò':'ò', 'ó':'ó', 'ô':'ô', 'û':'û', 'ù':'ù', 'ú':'ú', 'ç':'ç'} +# tbc : more missing ? ... + +def tomonolith(mystring) : + if splitted.search(mystring) : + for k, v in mapping.items(): + mystring = mystring.replace(k, v) + return mystring + +def mmlist(mrphx): # can handle multiple level mm + mrphx=mrphx.replace("[","[ ") + mrphx=mrphx.replace("]"," ]") + mrphelem=mrphx.split(" ") + mmprefix="\\mm" + level=0 + mms="" + for elem in mrphelem: + if elem=="[": + level+=1 + mmprefix=mmprefix+"m" + elif elem=="]": + level-=1 + mmprefix=mmprefix[:-1] + else: + if ":" in elem: + mmlx,mmps,mmgloss=elem.split(":",2) + mms+=mmprefix+" "+mmlx+":"+mmps+":"+tomonolith(mmgloss)+"\n" + else: + mms+=mmprefix+" "+elem # ??? what happened ??? + return mms + +#print('test mmlist: \n', mmlist('[mɔ̀ɔba:n:adulte [mɔ̀ɔ:n:homme ba:mrph:AUGM] kɔ̀dɔ:adj:vieux]')) +# to complement single level in glosslist from parser, +# load mmc glosses that exist in last build of the language dictionaries (export.sh): +# bamadaba-mmc.txt, malidaba-mmc.txt or jula-mmc.txt +# must be renamed as "mmc.txt" and placed in the current directory (where a gparser "run" subdir exists) +glossdict={} +has_mmc=False +try: + mmcfile=open("mmc.txt",'r',encoding="utf-8") + print("helper file mmc.txt found") + has_mmc=True +except: + print("no mmc helper file") +if has_mmc: + mmcall=mmcfile.read() + mmcfile.close() + mmclist=mmcall.split("\n") + for mmc in mmclist: + lx,ps,glmm=mmc.split(":",2) + if " " in glmm: + gl,mm=glmm.split(" ",1) + mmindex=lx+":"+ps+":"+gl + glossdict[mmindex]=mm + print("mmc available",len(glossdict)) + +def recursemm(y): + mrph="[" + for z in y.morphemes: + mpsfull="" + for z1 in z.ps: + mpsfull+=z1+"/" + if mpsfull!="" : mpsfull=mpsfull[:-1] + thismrph=z.form+":"+mpsfull+":"+tomonolith(z.gloss) + if thismrph!="-:mrph:-" : + if has_mmc: + if thismrph in glossdict: + thismrph=thismrph+" "+glossdict[thismrph] + mrph+=thismrph+" " + if z.morphemes: mrph+=recursemm(z) + mrph+="] " + return mrph + + +def glossprint(glosslist): + for x in glosslist: + #print("x:",x) + mrph="" + # checking for multilevel gloss: no found here 14/04/2024 + # fixed in formats1 30/09/2024 + # could simplify with mrph=str(glosslist) but I want the gloses in monolith + # print("glossprint: x.morphemes=", x.morphemes) + for y in x.morphemes : + mpsfull="" + for y1 in y.ps: + mpsfull+=y1+"/" + if mpsfull!="" : mpsfull=mpsfull[:-1] + thismrph=y.form+":"+mpsfull+":"+tomonolith(y.gloss) + if thismrph!="-:mrph:-" : + if has_mmc: + if thismrph in glossdict: + thismrph=thismrph+" "+glossdict[thismrph] + mrph+=thismrph+" " + if y.morphemes: mrph+=recursemm(y) + """ + if y.morphemes: + mrph+="[" + for z in y.morphemes: + mpsfull="" + for z1 in z.ps: + mpsfull+=z1+"/" + if mpsfull!="" : mpsfull=mpsfull[:-1] + thismrph=z.form+":"+mpsfull+":"+tomonolith(z.gloss) + if thismrph!="-:mrph:-" : + if has_mmc: + if thismrph in glossdict: + thismrph=thismrph+" "+glossdict[thismrph] + mrph+=thismrph+" " + mrph+="] " + """ + if mrph!="": + mrph=mrph.replace(' ]',']') + mrph=mrph[:-1] + mrphprint="" + if mrph!="": mrphprint="["+mrph+"]" + psfull="" + for y in x.ps : psfull+=y+"/" + if psfull!="": psfull=psfull[:-1] + print(x.form+":"+psfull+":"+tomonolith(x.gloss), mrphprint) + if mrph!="": + print(mmlist(mrph)) + # can only be single level : levels not returned in x.morphemes??? ;-( def main(): dl = DictLoader() gr = GrammarLoader() pp = Processor(dl, gr) while True: - word = input('Enter word:') - result = pp.parser.lemmatize(word, debug=True) - print('Final result::') - pprint(result) + word = input('\033[42;30;1mEnter word:\033[0m ') + if word=="" : sys.exit() + stage,glosslist = pp.parser.lemmatize(word, debug=True) + print('\033[1mFinal result:\033[0m') + print(stage,glosslist) + # gloss=glosslist[0] + # print("\ngloss.ps",gloss.ps, len(gloss.ps)) + # print("\ngloss.gloss",gloss.gloss) + glossprint(glosslist) + + gloss=glosslist[0] + if len(glosslist)==1: + #if (len(gloss.ps)==0 and gloss.gloss=="") or (gloss.ps[0]=="n.prop" and (gloss.gloss=="NOM" or gloss.gloss=="TOP")): + glossps="" + if len(gloss.ps)>0 : glossps=gloss.ps[0] + if (len(gloss.ps)==0 and gloss.gloss=="") or (glossps=="n.prop"): + if word[0].isupper(): + #word=word[0].lower()+word[1:] + word=word.lower() + stage2,glosslist2 = pp.parser.lemmatize(word) + print('\033[1mAlternative result lowercase:\033[0m') + #print(stage,glosslist) + glossprint(glosslist2) + else: + #word=word[0].upper()+word[1:] + word=word.capitalize() + stage2,glosslist2 = pp.parser.lemmatize(word) + print('\033[1mAlternative result uppercase:\033[0m') + #print(stage,glosslist) + glossprint(glosslist2) + + print ("\033[1mpotential global result\033[0m") # (from mparser - modified - check differences) + if len(glosslist2)>1 : + #or not ((len(glosslist2.ps)==0 and glosslist2.gloss=="") + #or (len(glosslist2.ps)==1 and glosslist2.ps[0]=="n.prop" and glosslist2.gloss=="NOM")): + if (len(gloss.ps)==0 and gloss.gloss=="") or (len(gloss.ps)==1 and gloss.ps[0]=="n.prop" and gloss.gloss=="NOM") : + glosslist=glosslist2 + else: + glosslist=glosslist+glosslist2 + glossprint(glosslist) + if __name__ == '__main__': main() diff --git a/docs/DABA-gdisamb-documentation.odt b/docs/DABA-gdisamb-documentation.odt new file mode 100644 index 0000000000000000000000000000000000000000..937a048a08ce4936bfc85028217fdd7a57510ffb GIT binary patch literal 164530 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

JL#&hF0aLa3-oi`>;F7;$aYB)lU;|S; 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®Yk8h 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 eg->&`V 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%0DM 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

TOf>ZoB}IXrUqY~{Uu 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

mbyp`+Y^-Pfd%N5`hs2K^T$-(&?TNE#7cR1>I) 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

7a{yMS^d2`GqHb^1d`qu`)NCs1Dp(3|Xrel8)} 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 literal 0 HcmV?d00001 diff --git a/docs/DABA-meta-documentation.odt b/docs/DABA-meta-documentation.odt new file mode 100644 index 0000000000000000000000000000000000000000..d828fe1e039e37afc9fdbbc7599274be267c2616 GIT binary patch literal 318454 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

LqVgduH;>Du6=zC!aY)h7Xsf?ycx=XYt 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
>%qO4 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 literal 0 HcmV?d00001 diff --git a/docs/samples/bamana.gram.txt b/docs/samples/bamana.gram.txt index 7de06d1..81df7bf 100644 --- a/docs/samples/bamana.gram.txt +++ b/docs/samples/bamana.gram.txt @@ -1,5 +1,5 @@ # Bamana (Bambara) morphotactic patterns - +# version 20.05.2019 - 21.05 07:35 - 22.11.2019 # macro definitions macro @smth-nasal@ .*([nmɲŋ]..?n?|n|[aoeuiɔɛ][́̀̌]?n<) macro @nasal-syl@ .*([nmɲŋ]..?n?|n) @@ -12,116 +12,388 @@ macro @syl@ [^aoeuiɔɛ]*(?P[aoeuiɔɛ])(?P=V)?(n(?=([^aoeuiɔɛ]|$)))? macro @syl1@ [^aoeuiɔɛ]*(?P[aoeuiɔɛ])(?P=V1)?(n(?=([^aoeuiɔɛ]|$)))? macro @syl2@ [^aoeuiɔɛ]*(?P[aoeuiɔɛ])(?P=V2)?(n(?=([^aoeuiɔɛ]|$)))? macro @bam-cons@ [bcdfghjklmɲŋprstyz] +macro @proper@ [A-ZƐƆƝŊ][a-zɛɔɲŋ́̀̌̂]+ # processing instructions plan for token: -stage 0 add parallel parse inflection -stage 0 add parallel parse common_derivation -stage 0 add parallel parse participles +stage 0 add parallel parse num1price +stage 0 add parallel parse inflection_PFVINTR_PROG_PL +stage 0 add parallel parse participles_PTCPRES +stage 0 add parallel parse n_v_derivation_ABSTR_GENT_LOC_AGPRM_LI stage 0 apply lookup return if parsed -stage 1 add sequential parse n_v_derivation +stage 1 add parallel parse common_derivation_DIM_AUGM +stage 1 add parallel parse prefixes +stage 1 add parallel parse participles stage 1 add parallel parse n_derivation stage 1 add parallel parse v_vq_derivation stage 1 add parallel parse vq_derivation +stage 1 add parallel parse specialcompo1 stage 1 add parallel parse num_derivation stage 1 apply lookup return if parsed -stage 2 add parallel parse reduplication +stage 2 add parallel parse rare_plural_PL2 +stage 2 add parallel parse inflection_MNT12_OPT2_DIR +stage 2 add parallel decompose pos_composition stage 2 apply lookup return if parsed -stage 3 add parallel decompose pos_composition +stage 3 add parallel parse reduplication +stage 3 add parallel parse specialcompo2 +stage 3 apply lookup +return if parsed +stage 4 add parallel decompose pos_composition3 +stage 4 apply lookup return if parsed -stage 4 apply firstmatch parse nonbamana +stage 5 add parallel decompose pos_composition4 +return if parsed +stage 6 apply firstmatch parse propername +stage 6 apply firstmatch parse nonbamana return if parsed #for sentence +section num1price +# -la/-na PRICE +pattern :num: [ {@nasal-v@|na}:: ] | :num: [ :num: :mrph:PRIX] +pattern :num: [ {@nonnasal-v@|la}:: ] | :num: [ :num: :mrph:PRIX] -section inflection -# verbal inflection -# -la/-na PROG -pattern :v: [ {@nasal-v@|na}:: ] | :v: [:v: :mrph:PROG] -pattern :v: [ {@nonnasal-v@|la}:: ] | :v: [:v: :mrph:PROG] -# moved up from v_vq_derivation because of na/la ambiguity -pattern :n: [ {@smth-nasal@|na}:: ] | :n: [ :v: :mrph:AG.PRM] -pattern :n: [ {@nonnasal-v@|la}:: ] | :n: [ :v: :mrph:AG.PRM] + +section inflection_PFVINTR_PROG_PL +# verbal inflection (by order of frequency likelyhood) # -ra/-la/-na PFV.INTR pattern :v: [ {@nasal-syl@|n[a']}:: ] | :v: [:v: :mrph:PFV.INTR] pattern :v: [ {@glide-syl@|l[a']}:: ] | :v: [:v: :mrph:PFV.INTR] pattern :v: [ {@nonnasalglide-syl@|r[a']}:: ] | :v: [:v: :mrph:PFV.INTR] + +# -la/-na PROG +pattern :v: [ {@smth-nasal@|na}:: ] | :v: [:v: :mrph:PROG] +pattern :v: [ {@nonnasal-v@|la}:: ] | :v: [:v: :mrph:PROG] + # nominal inflection # -w PL pattern :n/adj/dtm/prn/ptcp/n.prop/num: [ {|w}:: ] | :n/adj/dtm/prn/ptcp/n.prop/num: [:n/adj/dtm/prn/ptcp/n.prop/num: :mrph:PL] -# participles -section participles -pattern :v/ptcp: [ {|bali}:: ] | :ptcp: [ :v: :mrph:PTCP.PRIV] -pattern :v/ptcp: [ {|ta}:: ] | :ptcp: [ :v: :mrph:PTCP.POT] -pattern :v/ptcp: [ {|tɔ}:: ] | :ptcp: [ :v: :mrph:CONV.PROG] + +section inflection_MNT12_OPT2_DIR +# produce nouns but moved here because of na/la ambiguity + +# -la/-na MNT1 +pattern :n: [ {@smth-nasal@|na}:: ] | :n: [ :v: :mrph:MNT1] +pattern :n: [ {@nonnasal-v@|la}:: ] | :n: [ :v: :mrph:MNT1] +# up from n_derivation (otherwise it's ignored for N) +pattern :n: [ {@smth-nasal@|na}:: ] | :n: [ :n: :mrph:MNT1] +pattern :n: [ {@nonnasal-v@|la}:: ] | :n: [ :n: :mrph:MNT1] + +# -ra/-la/-na OPT2 +pattern :v: [ {@nasal-syl@|n[a']}:: ] | :v: [:v: :mrph:OPT2] +pattern :v: [ {@glide-syl@|l[a']}:: ] | :v: [:v: :mrph:OPT2] +pattern :v: [ {@nonnasalglide-syl@|r[a']}:: ] | :v: [:v: :mrph:OPT2] + +# -ma DIR +pattern :v: [ {|ma}:: ] | :v: [:v: :mrph:DIR] + +# v to nouns +pattern :n: [ {@smth-nasal@|nata}:: ] | :n: [ :v: :mrph:MNT2] +pattern :n: [ {@nonnasal-v@|lata}:: ] | :n: [ :v: :mrph:MNT2] +# n to nouns +pattern :n: [ {@smth-nasal@|nata}:: ] | :n: [ :n: :mrph:MNT2] +pattern :n: [ {@nonnasal-v@|lata}:: ] | :n: [ :n: :mrph:MNT2] + +# prefixes +section prefixes +pattern :v: [ {la|}:: ] | :v: [lá:mrph:CAUS :v:] +pattern :v: [ {na|}:: ] | :v: [ná:mrph:CAUS :v:] +pattern :v/ptcp: [ {la||len}:: ] | :ptcp: [ lá:mrph:CAUS :v: :mrph:PTCP.RES] +pattern :v/ptcp: [ {na||len}:: ] | :ptcp: [ ná:mrph:CAUS :v: :mrph:PTCP.RES] +pattern :v/ptcp: [ {la||nen}:: ] | :ptcp: [ lá:mrph:CAUS :v: :mrph:PTCP.RES] +pattern :v/ptcp: [ {na||nen}:: ] | :ptcp: [ ná:mrph:CAUS :v: :mrph:PTCP.RES] +# tonal +pattern :v: [ {lá|}:: ] | :v: [:mrph:CAUS :v:] +pattern :v: [ {ná|}:: ] | :v: [:mrph:CAUS :v:] +pattern :v/ptcp: [ {lá||len}:: ] | :ptcp: [ :mrph:CAUS :v: :mrph:PTCP.RES] +pattern :v/ptcp: [ {ná||len}:: ] | :ptcp: [ :mrph:CAUS :v: :mrph:PTCP.RES] +pattern :v/ptcp: [ {lá||nen}:: ] | :ptcp: [ :mrph:CAUS :v: :mrph:PTCP.RES] +pattern :v/ptcp: [ {ná||nen}:: ] | :ptcp: [ :mrph:CAUS :v: :mrph:PTCP.RES] + +pattern :v/ptcp: [ {la||ta}:: ] | :ptcp: [ lá:mrph:CAUS :v: :mrph:PTCP.POT ] +pattern :v/ptcp: [ {la||tɔ}:: ] | :ptcp: [ lá:mrph:CAUS :v: :mrph:CONV.PROG ] +pattern :v/ptcp: [ {la||bali}:: ] | :ptcp: [ lá:mrph:CAUS :v: :mrph:PTCP.PRIV ] +pattern :v/ptcp: [ {lá||ta}:: ] | :ptcp: [ :mrph:CAUS :v: :mrph:PTCP.POT ] +pattern :v/ptcp: [ {lá||tɔ}:: ] | :ptcp: [ :mrph:CAUS :v: :mrph:CONV.PROG ] +pattern :v/ptcp: [ {lá||bali}:: ] | :ptcp: [ :mrph:CAUS :v: :mrph:PTCP.PRIV ] + +pattern :v/ptcp: [ {na||ta}:: ] | :ptcp: [ ná:mrph:CAUS :v: :mrph:PTCP.POT ] +pattern :v/ptcp: [ {na||tɔ}:: ] | :ptcp: [ ná:mrph:CAUS :v: :mrph:CONV.PROG ] +pattern :v/ptcp: [ {na||bali}:: ] | :ptcp: [ ná:mrph:CAUS :v: :mrph:PTCP.PRIV ] +pattern :v/ptcp: [ {ná||ta}:: ] | :ptcp: [ :mrph:CAUS :v: :mrph:PTCP.POT ] +pattern :v/ptcp: [ {ná||tɔ}:: ] | :ptcp: [ :mrph:CAUS :v: :mrph:CONV.PROG ] +pattern :v/ptcp: [ {ná||bali}:: ] | :ptcp: [ :mrph:CAUS :v: :mrph:PTCP.PRIV ] + +pattern :v/n: [ {la||li}:: ] | :n: [ lá:mrph:CAUS :v: :mrph:NMLZ ] +pattern :v/n: [ {la||ni}:: ] | :n: [ lá:mrph:CAUS :v: :mrph:NMLZ ] +pattern :v/n: [ {lá||li}:: ] | :n: [ :mrph:CAUS :v: :mrph:NMLZ ] +pattern :v/n: [ {lá||ni}:: ] | :n: [ :mrph:CAUS :v: :mrph:NMLZ ] +pattern :v/n: [ {na||li}:: ] | :n: [ ná:mrph:CAUS :v: :mrph:NMLZ ] +pattern :v/n: [ {na||ni}:: ] | :n: [ ná:mrph:CAUS :v: :mrph:NMLZ ] +pattern :v/n: [ {ná||li}:: ] | :n: [ :mrph:CAUS :v: :mrph:NMLZ ] +pattern :v/n: [ {ná||ni}:: ] | :n: [ :mrph:CAUS :v: :mrph:NMLZ ] + +pattern :v: [ {ma|}:: ] | :v: [mà:mrph:SUPER :v:] +pattern :v: [ {mà|}:: ] | :v: [:mrph:SUPER :v:] +pattern :v/ptcp: [ {ma||len}:: ] | :ptcp: [ mà:mrph:SUPER :v: :mrph:PTCP.RES] +pattern :v/ptcp: [ {mà||len}:: ] | :ptcp: [ :mrph:SUPER :v: :mrph:PTCP.RES] +pattern :v/ptcp: [ {ma||nen}:: ] | :ptcp: [ mà:mrph:SUPER :v: :mrph:PTCP.RES] +pattern :v/ptcp: [ {mà||nen}:: ] | :ptcp: [ :mrph:SUPER :v: :mrph:PTCP.RES] + +pattern :v/ptcp: [ {ma||ta}:: ] | :ptcp: [ mà:mrph:SUPER :v: :mrph:PTCP.POT ] +pattern :v/ptcp: [ {ma||tɔ}:: ] | :ptcp: [ mà:mrph:SUPER :v: :mrph:CONV.PROG ] +pattern :v/ptcp: [ {ma||bali}:: ] | :ptcp: [ mà:mrph:SUPER :v: :mrph:PTCP.PRIV ] +pattern :v/ptcp: [ {mà||ta}:: ] | :ptcp: [ :mrph:SUPER :v: :mrph:PTCP.POT ] +pattern :v/ptcp: [ {mà||tɔ}:: ] | :ptcp: [ :mrph:SUPER :v: :mrph:CONV.PROG ] +pattern :v/ptcp: [ {mà||bali}:: ] | :ptcp: [ :mrph:SUPER :v: :mrph:PTCP.PRIV ] + +pattern :v/n: [ {ma||li}:: ] | :n: [ mà:mrph:SUPER :v: :mrph:NMLZ ] +pattern :v/n: [ {ma||ni}:: ] | :n: [ mà:mrph:SUPER :v: :mrph:NMLZ ] +pattern :v/n: [ {mà||li}:: ] | :n: [ :mrph:SUPER :v: :mrph:NMLZ ] +pattern :v/n: [ {mà||ni}:: ] | :n: [ :mrph:SUPER :v: :mrph:NMLZ ] + +pattern :v: [ {rɔ|}:: ] | :v: [rɔ́:mrph:IN :v:] +pattern :v: [ {sɔ|}:: ] | :v: [sɔ̀:mrph:EN :v:] +pattern :v: [ {rɔ́|}:: ] | :v: [:mrph:IN :v:] +pattern :v: [ {sɔ̀|}:: ] | :v: [:mrph:EN :v:] + +pattern :n: [{tɔgɔ|la|}:: ] | :n: [tɔ́gɔ:n:nom lá:pp:à :n:] + +section participles_PTCPRES pattern :v/ptcp: [ {@smth-nasal@|nen}:: ] | :ptcp: [ :v: :mrph:PTCP.RES] pattern :v/ptcp: [ {@nonnasal-v@|len}:: ] | :ptcp: [ :v: :mrph:PTCP.RES] +pattern :v/ptcp: [ {@smth-nasal@|'n}:: ] | :ptcp: [ :v: :mrph:PTCP.RES] +pattern :v/ptcp: [ {@nonnasal-v@|'n}:: ] | :ptcp: [ :v: :mrph:PTCP.RES] +# other participles +section participles +pattern :v/ptcp: [ {|bali}:: ] | :ptcp: [ :v: :mrph:PTCP.NEG] +pattern :v/ptcp: [ {|ta}:: ] | :ptcp: [ :v: :mrph:PTCP.POT] +pattern :v/ptcp: [ {|baga|tɔ}:: ] | :ptcp: [ :v: :mrph:AG.OCC :mrph:CONV] +pattern :v/ptcp: [ {|baa|tɔ}:: ] | :ptcp: [ :v: :mrph:AG.OCC :mrph:CONV] +pattern :v/ptcp: [ {|baga|tɔ}:: ] | :ptcp: [ :v: :mrph:AG.OCC :mrph:ST] +pattern :v/ptcp: [ {|baa|tɔ}:: ] | :ptcp: [ :v: :mrph:AG.OCC :mrph:ST] +pattern :v/ptcp: [ {|tɔ}:: ] | :ptcp: [ :v: :mrph:CONV] +pattern :v/ptcp: [ {|tɔ|la}:: ] | :ptcp: [ :v: :mrph:CONV :mrph:PROG] + +# moved up from n_derivation - otherwise never apply +pattern :adj/n: [ {|baga|tɔ}:: ] | :n: [ :n: :mrph:AG.OCC :mrph:ST] +pattern :adj/n: [ {|baa|tɔ}:: ] | :n: [ :n: :mrph:AG.OCC :mrph:ST] +pattern :adj/n: [ {|tɔ}:: ] | :n: [ :n: :mrph:ST] +pattern :adj/n: [ {|baga|tɔ}:: ] | :adj: [ :n: :mrph:AG.OCC :mrph:ST] +pattern :adj/n: [ {|baa|tɔ}:: ] | :adj: [ :n: :mrph:AG.OCC :mrph:ST] +pattern :adj/n: [ {|tɔ}:: ] | :adj: [ :n: :mrph:ST] +# re above : adj/n does not produce adj ? + +# frequently AUGMented participles pattern :v/ptcp: [ {@smth-nasal@|nen|ba}:: ] | :ptcp: [ :v: :mrph:PTCP.RES :mrph:AUGM] pattern :v/ptcp: [ {@nonnasal-v@|len|ba}:: ] | :ptcp: [ :v: :mrph:PTCP.RES :mrph:AUGM] +pattern :v/ptcp: [ {@smth-nasal@|nen|nin}:: ] | :ptcp: [ :v: :mrph:PTCP.RES :mrph:DIM] +pattern :v/ptcp: [ {@nonnasal-v@|len|nin}:: ] | :ptcp: [ :v: :mrph:PTCP.RES :mrph:DIM] +# to handle -baliya ex: basigi.bali.ya +pattern :v/ptcp/n/adj: [ {|bali|ya}:: ] | :n: [:v/ptcp: :mrph:PTCP.NEG :mrph:ABSTR] +pattern :v/ptcp/n/adj: [ {|ta|ya}:: ] | :n: [:v/ptcp: :mrph:PTCP.POT :mrph:ABSTR] +pattern :v/ptcp/n/adj: [ {|tɔ|ya}:: ] | :n: [:v/ptcp: :mrph:CONV :mrph:ABSTR] +pattern :v/ptcp/n/adj: [ {@smth-nasal@|nen|ya}:: ] | :n: [:v/ptcp: :mrph:PTCP.RES :mrph:ABSTR] +pattern :v/ptcp/n/adj: [ {@nonnasal-v@|len|ya}:: ] | :n: [:v/ptcp: :mrph:PTCP.RES :mrph:ABSTR] # derivative forms we need to consider even if we have them in dictionary -section common_derivation +section common_derivation_DIM_AUGM pattern :ptcp/n/adj: [ {|nin}:: ] | :ptcp/n/adj: [:ptcp/n/adj: :mrph:DIM] -pattern :n/adj/ptcp/v: [ {|ya}:: ] | :n: [:n/adj/ptcp/v: :mrph:ABSTR] pattern :ptcp/n/adj: [ {|ba}:: ] | :ptcp/n/adj: [:ptcp/n/adj: :mrph:AUGM] -# to handle -baliya ex: basigi.bali.ya -pattern :v/ptcp/n/adj: [ {|bali|ya}:: ] | :n: [:v/ptcp: :mrph:PTCP.PRIV :mrph:ABSTR] -# common nominal/verbal derivation (locatives) -section n_v_derivation -pattern :n/n.prop: [ {|ka}:: ] | :n/n.prop: [:n/n.prop: :mrph:GENT] -pattern :n/n.prop: [ {@nasal-v@|na}:: ] | :n/n.prop: [:n/n.prop: :mrph:LOC] -pattern :n/n.prop: [ {@nonnasal-v@|la}:: ] | :n/n.prop: [:n/n.prop: :mrph:LOC] +# common nominal/verbal derivation (locatives) - rarer + +section n_v_derivation_ABSTR_GENT_LOC_AGPRM_LI +pattern :n/adj/ptcp/v: [ {|ya}:: ] | :n: [:n/adj/ptcp/v: :mrph:ABSTR] +pattern :n/adj/ptcp/v: [ {|ya}:: ] | :v: [:n/adj/ptcp/v: :mrph:ABSTR] +#pattern :n/n.prop: [ {|ka}:: ] | :n/n.prop: [:n/n.prop: :mrph:GENT] +#restricted to n.prop 14/3/17 +pattern :n.prop: [ {|ka}:: ] | :n: [:n.prop: :mrph:GENT] +pattern :n.prop: [ {|la|ka}:: ] | :n: [:n.prop: :mrph:LOC :mrph:GENT] + + +# -la/-na LOC +pattern :n.prop: [ {@nonnasal-v@|la}:: ] | :n: [:n.prop: :mrph:LOC] +pattern :n.prop: [ {@smth-nasal@|na}:: ] | :n: [:n.prop: :mrph:LOC] +# CAUTION::: LOC la/na will supersedes AG.PRM if placed after AG.PRM la/na which converts v to n !!! +# pattern :n: [ {@smth-nasal@|na}:: ] | :n: [:n: :mrph:LOC] +# pattern :n: [ {@nonnasal-v@|la}:: ] | :n: [:n: :mrph:LOC] +# can the gloss TOP be forced ? | :n/n.prop:TOP [:n/n.prop: :mrph:LOC] +# Can the n.prop stay with its initial capital ? +# Can n be restricted to a list of body parts, ex: sin -> sin.na "sein LOC" - different from sin.na "diriger PFV.INTR" +# try: +#fails: pattern :n: [ {sin|na}:: ] | :n: [sín:n:sein :mrph:LOC] +#fails: pattern :n: [ {nun|na}:: ] | :n: [nún:n:nez :mrph:LOC] +#fails: pattern :n: [ {(nun|sin)|na}:: ] | :n: [:n: :mrph:LOC] +#the above also fails anyway: pattern :n: [ {@smth-nasal@|na}:: ] | :n: [:n: :mrph:LOC] + +# -la/-na AG.PRM +pattern :n: [ {@smth-nasal@|na}:: ] | :n: [ :v: :mrph:AG.PRM] +pattern :n: [ {@nonnasal-v@|la}:: ] | :n: [ :v: :mrph:AG.PRM] +pattern :n: [ {|kɛ|la}:: ] | :n: [ :n: kɛ́:v:faire :mrph:AG.PRM] + +# moved up from v_vq_derivation - otherwise never apply for suli, sali +pattern :n: [ {@smth-nasal@|ni}:: ] | :n: [ :v: :mrph:NMLZ] +pattern :n: [ {@nonnasal-v@|li}:: ] | :n: [ :v: :mrph:NMLZ] +pattern :n: [ {|kɛ|li}:: ] | :n: [ :n: kɛ́:v:faire :mrph:NMLZ] # nominal derivation section n_derivation -pattern :n: [ {@smth-nasal@|nama}:: ] | :n: [ :n: :mrph:STAT] -pattern :n: [ {@nonnasal-v@|lama}:: ] | :n: [ :n: :mrph:STAT] + +pattern :n: [ {@smth-nasal@|nama}:: ] | :adj: [ :n: :mrph:STAT] +pattern :n: [ {@nonnasal-v@|lama}:: ] | :adj: [ :n: :mrph:STAT] +pattern :n: [ {@smth-nasal@|naman}:: ] | :adj: [ :n: nama:mrph:STAT] +pattern :n: [ {@nonnasal-v@|laman}:: ] | :adj: [ :n: lama:mrph:STAT] pattern :n: [ {|ma}:: ] | :n: [ :n: :mrph:COM] -pattern :adj/n: [ {|ntan}:: ] | :adj/n: [ :n: :mrph:PRIV] -pattern :adj/n: [ {|bagatɔ}:: ] | :adj/n: [ :n: :mrph:ST] -pattern :adj/n: [ {|baatɔ}:: ] | :adj/n: [ :n: :mrph:ST] -pattern :n: [ {ɲɔgɔn|}:: ] | :n: [ :prn:RECP :n: ] +pattern :n: [ {|ma}:: ] | :adj: [ :n: :mrph:COM] + +pattern :n: [ {|ma}:: ] | :n: [ :n: :mrph:RECP.PRN] + +pattern :adj/n: [ {|ntan}:: ] | :n: [ :n: :mrph:PRIV] +pattern :adj/n: [ {|ntan}:: ] | :adj: [ :n: :mrph:PRIV] + +pattern :n: [ {ɲɔgɔn|}:: ] | :n: [ ɲɔ́gɔn:prn:RECP :n: ] pattern :n: [ {|ɲwaa?n}:: ] | :n: [ :n: :prn:RECP] # verbal/vq derivation section v_vq_derivation -pattern :n: [ {@smth-nasal@|nan}:: ] | :n: [ :v: :mrph:INSTR] pattern :n: [ {@nonnasal-v@|lan}:: ] | :n: [ :v: :mrph:INSTR] -pattern :n: [ {@smth-nasal@|ni}:: ] | :n: [ :v: :mrph:NMLZ] -pattern :n: [ {@nonnasal-v@|li}:: ] | :n: [ :v: :mrph:NMLZ] +pattern :n: [ {@smth-nasal@|nan}:: ] | :n: [ :v: :mrph:INSTR] +pattern :n: [ {|kɛ|lan}:: ] | :n: [ :n: kɛ́:v:faire :mrph:INSTR] + +pattern :num: [ {|nan}:: ] | :adj: [ :num: :mrph:ORD] + pattern :n: [ {|baga}:: ] | :n: [ :v: :mrph:AG.OCC] pattern :n: [ {|baa}:: ] | :n: [ :v: :mrph:AG.OCC] + +pattern :n: [ {|kɛ|baga}:: ] | :n: [ :n: kɛ́:v:faire :mrph:AG.OCC] +pattern :n: [ {|kɛ|baa}:: ] | :n: [ :n: kɛ́:v:faire :mrph:AG.OCC] + +pattern :n: [ {@nonnasal-v@|li|baga}:: ] | :n: [ :v: :mrph:NMLZ :mrph:AG.OCC] +pattern :n: [ {@nonnasal-v@|li|baa}:: ] | :n: [ :v: :mrph:NMLZ :mrph:AG.OCC] +pattern :n: [ {@smth-nasal@|ni|baga}:: ] | :n: [ :v: :mrph:NMLZ :mrph:AG.OCC] +pattern :n: [ {@smth-nasal@|ni|baa}:: ] | :n: [ :v: :mrph:NMLZ :mrph:AG.OCC] + pattern :n: [ {|baga|nci}:: ] | :n: [ :v: :mrph:AG.OCC :mrph:AG.EX] pattern :n: [ {|baa|nci}:: ] | :n: [ :v: :mrph:AG.OCC :mrph:AG.EX] +pattern :n: [ {|ɲɔgɔn}:: ] | :n: [ :v: ɲɔ́gɔn:prn:RECP] +pattern :n: [ {|ɲwaa?n}:: ] | :n: [ :v: :prn:RECP] +pattern :n: [ {ɲɔgɔn|}:: ] | :v: [ ɲɔ́gɔn:prn:RECP :v: ] + -# attempt to handle -likɛ, -likɛla, others like -liwari... +section rare_plural_PL2 +#frequent in griotic songs / not dtm/prn : creates ambiguity for ò.lu !!! found only dɔlu - but not dalilu +pattern :n: [ {@nonnasal-syl@|lu}:: ] | :n: [:n: lú:mrph:PL2] +pattern :n: [ {@nasal-syl@|nu}:: ] | :n: [:n: nú:mrph:PL2] + +section specialcompo1 +# attempt to handle -likɛ, -likɛla, others like -likɛcogo... pattern :v: [ {@nonnasal-v@|li|kɛ}:: ] | :v: [ :v: :mrph:NMLZ kɛ́:v:faire] -pattern :n: [ {@nonnasal-v@|li|kɛ|la}:: ] | :n: [ :v: :mrph:NMLZ kɛ́:v:faire :mrph:AG.PRM] pattern :v: [ {@smth-nasal@|ni|kɛ}:: ] | :v: [ :v: :mrph:NMLZ kɛ́:v:faire] -pattern :n: [ {@smth-nasal@|ni|kɛ|la}:: ] | :n: [ :v: :mrph:NMLZ kɛ́:v:faire :mrph:AG.PRM] -pattern :n: [ {@nonnasal-v@|li|wari}:: ] | :n: [ :v: :mrph:NMLZ :n:] -pattern :n: [ {@smth-nasal@|ni|wari}:: ] | :n: [ :v: :mrph:NMLZ :n:] +pattern :n: [ {@nonnasal-v@|li|yɔrɔ}:: ] | :n: [ :v: :mrph:NMLZ :n:] +pattern :n: [ {@smth-nasal@|ni|yɔrɔ}:: ] | :n: [ :v: :mrph:NMLZ :n:] +pattern :n: [ {@nonnasal-v@|li|cogo}:: ] | :n: [ :v: :mrph:NMLZ :n:] +pattern :n: [ {@smth-nasal@|ni|cogo}:: ] | :n: [ :v: :mrph:NMLZ :n:] pattern :n: [ {@nonnasal-v@|li|fɛn}:: ] | :n: [ :v: :mrph:NMLZ fɛ́n:n:chose] pattern :n: [ {@smth-nasal@|ni|fɛn}:: ] | :n: [ :v: :mrph:NMLZ fɛ́n:n:chose] pattern :n: [ {@nonnasal-v@|li|ko}:: ] | :n: [ :v: :mrph:NMLZ kó:n:affaire] pattern :n: [ {@smth-nasal@|ni|ko}:: ] | :n: [ :v: :mrph:NMLZ kó:n:affaire] +pattern :n: [ {@nonnasal-v@|li|kɛ|la}:: ] | :n: [ :v: :mrph:NMLZ kɛ́:v:faire :mrph:AG.PRM] +pattern :n: [ {@smth-nasal@|ni|kɛ|la}:: ] | :n: [ :v: :mrph:NMLZ kɛ́:v:faire :mrph:AG.PRM] +pattern :n: [ {@nonnasal-v@|li|kɛ|baga}:: ] | :n: [ :v: :mrph:NMLZ kɛ́:v:faire :mrph:AG.OCC] +pattern :n: [ {@smth-nasal@|ni|kɛ|baga}:: ] | :n: [ :v: :mrph:NMLZ kɛ́:v:faire :mrph:AG.OCC] +pattern :n: [ {@nonnasal-v@|li|kɛ|baa}:: ] | :n: [ :v: :mrph:NMLZ kɛ́:v:faire :mrph:AG.OCC] +pattern :n: [ {@smth-nasal@|ni|kɛ|baa}:: ] | :n: [ :v: :mrph:NMLZ kɛ́:v:faire :mrph:AG.OCC] +pattern :n: [ {@nonnasal-v@|li|kɛ|cogo}:: ] | :n: [ :v: :mrph:NMLZ kɛ́:v:faire :n:] +pattern :n: [ {@smth-nasal@|ni|kɛ|cogo}:: ] | :n: [ :v: :mrph:NMLZ kɛ́:v:faire :n:] +pattern :n: [ {@nonnasal-v@|li|kɛ|yɔrɔ}:: ] | :n: [ :v: :mrph:NMLZ kɛ́:v:faire :n:] +pattern :n: [ {@smth-nasal@|ni|kɛ|yɔrɔ}:: ] | :n: [ :v: :mrph:NMLZ kɛ́:v:faire :n:] +pattern :n: [ {@nonnasal-v@|li|kɛ|fɛn}:: ] | :n: [ :v: :mrph:NMLZ kɛ́:v:faire fɛ́n:n:chose] +pattern :n: [ {@smth-nasal@|ni|kɛ|fɛn}:: ] | :n: [ :v: :mrph:NMLZ kɛ́:v:faire fɛ́n:n:chose] -# need to handle -ba AUGM inside ex: ko.jugu.ba.kɛ.la +pattern :n: [ {|tuma}:: ] | :n: [ :v: tùma:n:moment] +pattern :n: [ {|kɛ|tuma}:: ] | :n: [ :n: kɛ́:v:faire tùma:n:moment] +pattern :n: [ {|waati}:: ] | :n: [ :v: wáati:n:moment] +pattern :n: [ {|kɛ|waati}:: ] | :n: [ :n: kɛ́:v:faire wáati:n:moment] +pattern :n: [ {|yɔrɔ}:: ] | :n: [ :v: yɔ́rɔ:n:lieu] +pattern :n: [ {|kɛ|yɔrɔ}:: ] | :n: [ :n: kɛ́:v:faire yɔ́rɔ:n:lieu] +pattern :n: [ {|baara}:: ] | :n: [ :v: báara:n:travail] +pattern :n: [ {|kɛ|baara}:: ] | :n: [ :n: kɛ́:v:faire báara:n:travail] +pattern :n: [ {|cogo}:: ] | :n: [ :v: cógo:n:manière] +pattern :n: [ {|kɛ|cogo}:: ] | :n: [ :n: kɛ́:v:faire cógo:n:manière] +pattern :n: [ {|kun}:: ] | :n: [ :v: kùn:n:tête] +pattern :n: [ {|don}:: ] | :n: [ :v: dón:n:jour] +pattern :n: [ {|fɛn}:: ] | :n: [ :v: fɛ́n:n:chose] +pattern :n: [ {|sira}:: ] | :n: [ :v: síra:n:chemin] + +pattern :n: [ {|jamana}:: ] | :n: [ :n: jàmana:n:pays] +pattern :n.prop: [ {|jamana}:: ] | :n.prop: [ :n.prop: jàmana:n:pays] +pattern :n: [ {|tigi}:: ] | :n: [ :n: tìgi:n:maître] +pattern :n: [ {|ko}:: ] | :n: [ :n: kó:n:affaire] +pattern :n: [ {|cɛ}:: ] | :n: [ :n: cɛ̀:n:mâle] +pattern :n: [ {|mɔgɔ}:: ] | :n: [ :n: mɔ̀gɔ:n:homme] +pattern :n: [ {|maa}:: ] | :n: [ :n: màa:n:homme] +pattern :n: [ {|den}:: ] | :n: [ :n: dén:n:enfant] +pattern :n: [ {|sira}:: ] | :n: [ :n: síra:n:chemin] +pattern :n: [ {@nonnasal-v@|li|sira}:: ] | :n: [ :v: li:mrph:NMLZ síra:n:chemin] +pattern :n: [ {@smth-nasal@|ni|sira}:: ] | :n: [ :v: ni:mrph:NMLZ síra:n:chemin] +pattern :n: [ {|fɛn}:: ] | :n: [ :n: fɛ́n:n:chose] +pattern :n: [ {|baara}:: ] | :n: [ :n: báara:n:travail] +pattern :n: [ {|bana}:: ] | :n: [ :n: bàna:n:maladie] +pattern :n: [ {@nonnasal-v@|la|bana}:: ] | :n: [ :n: lá:pp:à bàna:n:maladie] +pattern :n: [ {@smth-nasal@|na|bana}:: ] | :n: [ :n: ná:pp:à bàna:n:maladie] +pattern :n: [ {|wari}:: ] | :n: [ :n: wári:n:argent] +pattern :n: [ {|kɛ|wari}:: ] | :n: [ :n: kɛ́:v:faire wári:n:argent] +pattern :n: [ {|kɛ|tɔn}:: ] | :n: [ :n: kɛ́:v:faire tɔ́n:n:société] +pattern :n: [ {|kɛ|so}:: ] | :n: [ :n: kɛ́:v:faire só:n:maison] + +pattern :n: [ {|muso}:: ] | :n: [ :n: mùso:adj:féminin] + +pattern :n: [ {|kɛ}:: ] | :n: [ :n: kɛ:adj:mâle] +pattern :n: [ {|kɛ}:: ] | :n/v: [ :n: kɛ́:v:faire] + +# dɔn.kɛ.tɔ not only ST +pattern :ptcp: [ {|kɛ|tɔ}:: ] | :ptcp: [ :n: kɛ́:v:faire :mrph:CONV] +pattern :ptcp: [ {|kɛ|tɔ|la}:: ] | :ptcp: [ :n: kɛ́:v:faire :mrph:CONV :mrph:PROG] +pattern :ptcp: [ {|kɛ|len}:: ] | :ptcp: [ :n: kɛ́:v:faire :mrph:PTCP.RES] + +section specialcompo2 + +# this is a temporary trick +# I would not advise to return before other "normal" composition +# but can't do otherwise. Caution with most... + +# 4 lines commented out after Kirill's parser update 7/3/2017 +#pattern :n: [ {@nonnasal-v@|li|.+}:: ] | :n: [ :v: :mrph:NMLZ :n:] +#pattern :n: [ {@smth-nasal-v@|ni|.+}:: ] | :n: [ :v: :mrph:NMLZ :n:] +#pattern :n: [ {@nonnasal-v@|li|.+}:: ] | :v: [ :v: :mrph:NMLZ :v:] +#pattern :n: [ {@smth-nasal-v@|ni|.+}:: ] | :v: [ :v: :mrph:NMLZ :v:] + +pattern :n: [ {@nonnasal-v@|li|kɛ|.+}:: ] | :n: [ :v: :mrph:NMLZ kɛ́:v:faire :n:] +pattern :n: [ {@smth-nasal-v@|ni|kɛ|.+}:: ] | :n: [ :v: :mrph:NMLZ kɛ́:v:faire :n:] +pattern :n: [ {@nonnasal-v@|li|kɛ|.+}:: ] | :v: [ :v: :mrph:NMLZ kɛ́:v:faire :v:] +pattern :n: [ {@smth-nasal-v@|ni|kɛ|.+}:: ] | :v: [ :v: :mrph:NMLZ kɛ́:v:faire :v:] + +pattern :n: [ {|ɲɔgɔn|.+}:: ] | :n: [ :v: ɲɔ́gɔn:prn:RECP :n:] +pattern :n: [ {|ɲɔgɔn|.+}:: ] | :v: [ :v: ɲɔ́gɔn:prn:RECP :v:] + +# composés nominaux avec yɛrɛ comme yɛrɛ.dɔn yɛrɛ.labila +pattern :n: [ {yɛrɛ|}:: ] | :n: [ yɛ̀rɛ̂:dtm:même :v: ] +# ou comme yɛrɛ.faga.su +pattern :n: [ {yɛrɛ|}:: ] | :n: [ yɛ̀rɛ̂:dtm:même :v: :n: ] +# composés verbaux aussi +pattern :v: [ {yɛrɛ|}:: ] | :v: [ yɛ̀rɛ̂:dtm:même :v: ] -pattern :n: [ {|ɲɔgɔn}:: ] | :n: [ :v: :prn:RECP] -pattern :n: [ {|ɲwaa?n}:: ] | :n: [ :v: :prn:RECP] -pattern :n: [ {ɲɔgɔn|}:: ] | :n: [ :prn:RECP :v: ] # vq derivation section vq_derivation @@ -130,69 +402,211 @@ pattern :adj: [ {|man}:: ] | :adj: [ :vq: :mrph:ADJ] # numeral derivation section num_derivation -pattern :num: [ {@nasal-v@|na}:: ] | :num: [ :num: :mrph:PRICE] -pattern :num: [ {@nonnasal-v@|la}:: ] | :num: [ :num: :mrph:PRICE] -pattern :num: [ {@nasal-v@|nan}:: ] | :num: [ :num: :mrph:ORD] -pattern :num: [ {[0-9]+|nan}:: ] | :num: [ :num: :mrph:ORD] -pattern :num: [ {@nonnasal-v@|lan}:: ] | :num: [ :num: :mrph:ORD] +# moved up to inflection pattern :num: [ {@nasal-v@|na}:: ] | :num: [ :num: :mrph:PRIX] +# pattern :num: [ {@nonnasal-v@|la}:: ] | :num: [ :num: :mrph:PRIX] +# moved up to v/vq derivation pattern :num: [ {|nan}:: ] | :adj: [ :num: :mrph:ORD] +# new fails pattern :num: [ {[0-9]+|nan}:: ] | :adj:ORDINAL [ :num:CARDINAL :mrph:ORD] +# CARDINAL => index out of range error - not in the list of allowed keywords +pattern :num: [ {[0-9]+|nan}:: ] | :adj:ORDINAL [ :num: :mrph:ORD] +# old : pattern :num: [ {[0-9]+|nan}:: ] | :num: [ :num: :mrph:ORD] + -## reduplication +# Jɛkabaara uses -n instead of -nan +pattern :num: [ {[0-9]+|n}:: ] | :adj:ORDINAL [ :num: :mrph:ORD] +# not sure capitals will work here : NO, DANGER : NAN in capitals is checked as keyword, and it does not exist +# pattern :num: [ {[0-9]+|NAN}:: ] | :adj:ORDINAL [ :num: :mrph:ORD] + +## reduplication THIS DOES NOT WORK ????? section reduplication +# added n : yaalayaala +pattern :n: [ {(?P.+)|(?P=stem)}:: ] | :n: [ :n: :n: ] pattern :v: [ {(?P.+)|(?P=stem)}:: ] | :v: [ :v: :v: ] +pattern :v/ptcp: [ {(?P.+)|(?P=stem)|len}:: ] | :ptcp: [ :v: :v: :mrph:PTCP.RES] +pattern :v/ptcp: [ {(?P.+)|(?P=stem)|nen}:: ] | :ptcp: [ :v: :v: :mrph:PTCP.RES] +pattern :v/n: [ {(?P.+)|(?P=stem)|li}:: ] | :n: [ :v: :v: :mrph:NMLZ] +pattern :v/n: [ {(?P.+)|(?P=stem)|ni}:: ] | :n: [ :v: :v: :mrph:NMLZ] + pattern :adj: [ {(?P.+)|(?P=stem)}:: ] | :adj: [ :adj: :adj: ] +pattern :adv: [ {(?P.+)|(?P=stem)}:: ] | :adv: [ :adv: :adv: ] pattern :num: [ {(?P.+)|(?P=stem)}:: ] | :num: [ :num: :num: ] -pattern :v: [ {(?P.+)|-|(?P=stem)}:: ] | :v: [ :v: :: :v: ] -pattern :adj: [ {(?P.+)|-|(?P=stem)}:: ] | :adj: [ :adj: :: :adj: ] -pattern :num: [ {(?P.+)|-|(?P=stem)}:: ] | :num: [ :num: :: :num: ] +pattern :num/adj: [ {(?P.+)|(?P=stem)|nan}:: ] | :adj: [ :num: :num: :mrph:ORD] + +# MIDDLE HYPEN dulon-dulon kari-kari,... +# but : kelen-kelenin does not work (syntax? hyphen?) +# same with hyphens to be dropped +# middle hyphen is preferably verbs, how to prioritize ? +# added n : yaala-yaala - how to force :v1:= :v2: ? +# COMMENTED OUT 26/03/2024 - often breaks system eg cawu-cawu +# "ntgloss.py", line 85, in morphmatch / if len(self.morphemes) < len(other.morphemes): /TypeError: object of type 'filter' has no len()" +# pattern :v: [ {(?P.+)|-|(?P=stem)}:: ] | :v: [ :v: :: :v: ] +# pattern :n: [ {(?P.+)|-|(?P=stem)}:: ] | :n: [ :n: :: :n: ] +# pattern :adj: [ {(?P.+)|-|(?P=stem)}:: ] | :adj: [ :adj: :: :adj: ] +# pattern :adv: [ {(?P.+)|-|(?P=stem)}:: ] | :adv: [ :adv: :: :adv: ] +# pattern :num: [ {(?P.+)|-|(?P=stem)}:: ] | :num: [ :num: :: :num: ] +#pattern :n.prop: [ {(?P.+)|-|(?P=stem)}:: ] | :n.prop: [ :n.prop: :: :n.prop: ] + +# hyphen inside, E.G. road Yanfolila-Kalana +# pattern :n.prop: [ {(.+)|-|(.+)}:: ] | :n.prop: [ :n.prop: :: :n.prop: ] + + +# added triplicates pattern :v: [ {(?P.+)|(?P=stem)|(?P=stem)}:: ] | :v: [ :v: :v: :v: ] pattern :adj: [ {(?P.+)|(?P=stem)|(?P=stem)}:: ] | :adj: [ :adj: :adj: :adj: ] +pattern :adv: [ {(?P.+)|(?P=stem)|(?P=stem)}:: ] | :adv: [ :adv: :adv: :adv: ] +#pattern :v: [ {(?P.+)|-|(?P=stem)|-|(?P=stem)}:: ] | :v: [ :v: :: :v: :: :v: ] +#pattern :adj: [ {(?P.+)|-|(?P=stem)|-|(?P=stem)}:: ] | :adj: [ :adj: :: :adj: :: :adj: ] +#pattern :adv: [ {(?P.+)|-|(?P=stem)|-|(?P=stem)}:: ] | :adv: [ :adv: :: :adv: :: :adv: ] + ## composition # general part-of-speech composition patterns # + section pos_composition +# special case of middle pp or middle pm +# V kà V = N with kà:pm:INF +# N ká N = N with ká:pp:POSS # was conj previously +# ta-ka-nɛnɛ +pattern :n: [ :v: ka:pm: :v: ] | :n: [ :v: kà:pm:INF :v: ] +# jugu-ma-dogo - COMMENTED OUT - TOO MANY STRANGE RESULTS +# pattern :n: [ :n: ma:pm: :v: ] | :n: [ :n: má:pm:PFV.NEG :v: ] +# Ala-ka-bon +pattern :n: [ :n: ka:pm: :vq: ] | :n: [ :n: ká:pm:QUAL.AFF :vq: ] +# Ɲani-man-jugu +pattern :n: [ :n: man:pm: :vq: ] | :n: [ :n: mán:pm:QUAL.NEG :vq: ] +# cɛ-ka-bon +pattern :n: [ :n: ka:pp: :n: ] | :n: [ :n: ká:pp:POSS :n: ] +# cɛ-la-taa +pattern :n: [ :n: la:pp: :n: ] | :n: [ :n: lá:pp:à :n: ] +pattern :n: [ :n: na:pp: :n: ] | :n: [ :n: ná:pp:à :n: ] +# ni-kan-dugu +pattern :n: [ :n: kan:pp: :n: ] | :n: [ :n: kàn:pp:sur :n: ] +# avec fɛ +pattern :n: [ :n: fɛ:pp: :n: ] | :n: [ :n: fɛ̀:pp:par :n: ] +# avec kɔ́nɔ : du-kɔnɔ-ko +pattern :n: [ :n: kɔnɔ:pp: :n: ] | :n: [ :n: kɔ́nɔ:pp:dans :n: ] +# avec ni:conj:et sónnifàna ou són-ni-fàna +pattern :n: [ :n: ni:conj: :n: ] | :n: [ :n: :conj:et :n: ] +pattern :n: [ :n: ní:conj: :n: ] | :n: [ :n: ni:conj:et :n: ] + # two-words composites + # n.prop + n = n ex: Irisi.jamana -pattern :n: [ :n.prop: :n: ] | :n: [ :n.prop: :n: ] -# v/n + n = n +pattern :n.prop: [ :n.prop: :n: ] | :n.prop: [ :n.prop: :n: ] +# and reverse ex Ba.Joliba, Ba.Borama # THIS SHOULD BE RESTRICTED TO ba:n:, fa:n: ... +# pattern :n: [ :n: :n.prop:] | :n: [ :n: :n.prop: ] +pattern :n.prop: [ :n: :n.prop:] | :n.prop: [ :n: :n.prop: ] +# nprop + adj = nprop ex: Sumayila.bilen, Adama.ncinin +pattern :n.prop: [ :n.prop: :vq/adj: ] | :n.prop: [ :n.prop: :vq/adj: ] +# GENT 12032024 +pattern :n.prop: [ :n.prop: ka:mrph: ] | :n.prop: [ :n.prop: :mrph:GENT ] + +# n + n = n ex: fari.kolo +pattern :n: [ :n: :n: ] | :n: [ :n: :n: ] +# v + n = n ex: sinsin.bere +pattern :n: [ :v: :n: ] | :n: [ :v: :n: ] +# v/n + n = n ex: sinsin.bere (?) pattern :n: [ :n/v: :n: ] | :n: [ :n/v: :n: ] -# n + v = n/v +# n + v = n/v ex: juru.don (v) dan.sigi (v) kɔ.segin (v) pattern :n/v: [ :n: :v: ] | :n/v: [ :n: :v: ] -# n + adj/num = n -pattern :n: [ :n: :adj/num: ] | :n: [ :n: :adj/num: ] -# dtm + v = n +# n + n/adj/num/ptcp = n ex: bugu.jɛ da.fila soso.muso +pattern :n: [ :n: :n/adj/num/ptcp: ] | :n: [ :n: :n/adj/num/ptcp: ] +# dtm + v = n ex: yɛrɛ.dulon (see other yɛrɛ-) pattern :n: [ :dtm: :v: ] | :n: [ :dtm: :v: ] +# num + v = n ex: kelen.sigi +pattern :n: [ :num: :v: ] | :n: [ :num: :v: ] # pp + n = n ex. kɔkan.maliden, kɔnɔ.mɔgɔ pattern :n: [ :pp: :n: ] | :n: [ :pp: :n: ] -# three-words composites -# n + adj/pp/num + n = n -> added num : san.duuru.baara -pattern :n: [ :n: :adj/pp/num: :n: ] | :n: [ :n: :adj/pp/num: :n: ] -# dtm/n + v + n = n -pattern :n: [ :dtm/n: :v: :n: ] | :n: [ :dtm/n: :v: :n: ] -# n + pp + v = n/v -pattern :n/v: [ :n: :pp: :v: ] | :n/v: [ :n: :pp: :v: ] -# n+n+n = n yiriwali.nafolo.ko ? -pattern :n: [ :n: :n: :n: ] | :n: [ :n: :n: :n: ] -# ??? : mrph not taken into acount (not in dic?) +#section pos_composition3mrph +# # v+mrph+n ex: gansi.li.walan pattern :n: [ :v: li:mrph: :n: ] | :n: [ :v: :mrph:NMLZ :n: ] -pattern :n: [ :n: ba:mrph: :n: ] | :n: [ :n: :mrph:AUGM :n: ] +pattern :n: [ :v: ni:mrph: :n: ] | :n: [ :v: :mrph:NMLZ :n: ] # v+mrph+v ex: kɔlɔsi.li.kɛ pattern :v: [ :v: li:mrph: :v: ] | :v: [ :v: :mrph:NMLZ :v: ] -pattern :n: [ :v: ka:pm: :v: ] | :n: [ :v: kà:pm:INF :v: ] +pattern :v: [ :v: ni:mrph: :v: ] | :v: [ :v: :mrph:NMLZ :v: ] + +# n + mrph + n = n : wulu.ba.kunkolo wulu.nin.sen fura.lan.cogo +pattern :n: [ :n: ba:mrph: :n: ] | :n: [ :n: :mrph:AUGM :n: ] +pattern :n: [ :n: nin:mrph: :n: ] | :n: [ :n: :mrph:DIM :n: ] + +# v + mrph + n = n : gansi.baa.wari +pattern :n: [ :v: lan:mrph: :n: ] | :n: [ :v: :mrph:INSTR :n: ] +pattern :n: [ :v: nan:mrph: :n: ] | :n: [ :v: :mrph:INSTR :n: ] +pattern :n: [ :v: baa:mrph: :n: ] | :n: [ :v: :mrph:AG.OCC :n: ] +pattern :n: [ :v: baga:mrph: :n: ] | :n: [ :v: :mrph:AG.OCC :n: ] + +# n + mrph + v = v : wulu.ba.kunkolo wulu.nin.sen fura.lan.cogo +pattern :n: [ :n: ba:mrph: :v: ] | :v: [ :n: :mrph:AUGM :v: ] +pattern :n: [ :n: nin:mrph: :v: ] | :v: [ :n: :mrph:DIM :v: ] + +# v + mrph + v = v : gansi.baa.wari +pattern :v: [ :v: lan:mrph: :v: ] | :v: [ :v: :mrph:INSTR :v: ] +pattern :v: [ :v: nan:mrph: :v: ] | :v: [ :v: :mrph:INSTR :v: ] +pattern :v: [ :v: baa:mrph: :v: ] | :v: [ :v: :mrph:AG.OCC :v: ] +pattern :v: [ :v: baga:mrph: :v: ] | :v: [ :v: :mrph:AG.OCC :v: ] + +# can we try for la/na AG.PRM ? +pattern :n: [ :v: la:mrph: :n: ] | :n: [ :v: :mrph:AG.PRM :n: ] +pattern :v: [ :v: la:mrph: :v: ] | :v: [ :v: :mrph:AG.PRM :v: ] +pattern :n: [ :v: na:mrph: :n: ] | :n: [ :v: :mrph:AG.PRM :n: ] +pattern :v: [ :v: na:mrph: :v: ] | :v: [ :v: :mrph:AG.PRM :v: ] + +# with ma:COM +pattern :n: [ :n: ma:mrph: :n: ] | :n: [ :n: :mrph:COM :n: ] + +# nin et ba avec adj final : sɔ̀gɔsɔgɔ.nin.gbɛ +pattern :n: [ :n: nin:mrph: :adj: ] | :n: [ :n: :mrph:DIM :adj: ] +pattern :n: [ :n: nin:mrph: :n/adj: ] | :n: [ :n: :mrph:DIM :n/adj: ] +pattern :n: [ :n: nin:mrph: :vq/adj: ] | :n: [ :n: :mrph:DIM :vq/adj: ] +pattern :n: [ :n: ba:mrph: :adj: ] | :n: [ :n: :mrph:AUGM :adj: ] +pattern :n: [ :n: ba:mrph: :n/adj: ] | :n: [ :n: :mrph:AUGM :n/adj: ] +pattern :n: [ :n: ba:mrph: :vq/adj: ] | :n: [ :n: :mrph:AUGM :vq/adj: ] + +# test mrph as last ? for n.prop+adj+ba ex: Sumayila.kɔrɔ.ba DOES NOT WORK MAY 2017 +#pattern :n.prop: [ :n.prop: :vq/adj: ba:mrph: ] | :n.prop: [ :n.prop: :vq/adj: :mrph:AUGM ] +#pattern :n.prop: [ :n.prop: :vq/adj: nin:mrph: ] | :n.prop: [ :n.prop: :vq/adj: :mrph:DIM ] + +section pos_composition3 + +# three-words composites +# n + adj/pp/num + n = n ex: bin.kɛnɛ.sa -> added num : san.duuru.baara +pattern :n: [ :n: :adj/pp/num: :n: ] | :n: [ :n: :adj/pp/num: :n: ] +# n + adj + v = n ex: fini.ɲuman.don +pattern :n: [ :n: :adj: :v: ] | :n: [ :n: :adj: :v: ] +# dtm/n + v + n = n ex : yɛrɛ.faga.su bo.dun.duga +pattern :n: [ :dtm/n: :v: :n: ] | :n: [ :dtm/n: :v: :n: ] +# n + pp + v = n/v ex: sen.na.bɔ (v) da.ma.da (v) nɔ.na.bila (v) bana.kɔ.taa (n) +pattern :n/v: [ :n: :pp: :v: ] | :n/v: [ :n: :pp: :v: ] +# n + pp + n = n ex: bolo.kɔnɔ.mɔgɔ tu.kɔnɔ.jamana +pattern :n: [ :n: :pp: :n: ] | :n: [ :n: :pp: :n: ] +# n + n + n = n yiriwali.nafolo.ko ? +pattern :n: [ :n: :n: :n: ] | :n: [ :n: :n: :n: ] +# n + n + adj = n wari.tigi.kɔrɔ misi.nɔnɔ.kɛnɛ +pattern :n: [ :n: :n: :vq/adj: ] | :n: [ :n: :n: :vq/adj: ] +# conglomérés +# v + n/pers/prn + pp = n ex: bɔ.n.kɔnɔ jɔn.mɔgɔ.la +pattern :n: [ :v: :n/pers/prn: :pp: ] | :n: [ :v: :n/pers/prn: :pp: ] +section pos_composition4 # four-words composites +# lots of possibilities! # n + pp + n + n = n pattern :n: [ :n: :pp: :n: :n: ] | :n: [ :n: :pp: :n: :n: ] # n + pp + adj + n = n Ex: dugu.jukɔrɔ.nafoloma.fɛn pattern :n: [ :n: :pp: :adj: :n: ] | :n: [ :n: :pp: :adj: :n: ] # n+v+v+n : kunnafoni.falen.falen.ko pattern :n: [ :n: :v: :v: :n: ] | :n: [ :n: :v: :v: :n: ] +# n+v+n+n ex: balo.sɔrɔ.yɔrɔ.ko +pattern :n: [ :n: :v: :n: :n: ] | :n: [ :n: :v: :n: :n: ] +# add n n n n and with num ??? +section propername +pattern @proper@:: | :n.prop:NOM # orthographically unlikely to be bamana words # for NEW orthography, with no tones marked diff --git a/docs/samples/maninka.nko.gram.txt b/docs/samples/maninka.nko.gram.txt index a537cb1..517ad88 100644 --- a/docs/samples/maninka.nko.gram.txt +++ b/docs/samples/maninka.nko.gram.txt @@ -1,17 +1,19 @@ # Maninka morphotactic patterns # macro definitions -macro @nasal-v@ .*[aoeuiɔɛ]n -macro @nonnasal-v@ .*[aoeuiɔɛ][^n]? +macro @nasal-v@ .*[aoeuiɔɛ][́̀̌]?n +macro @nonnasal-v@ .*[aoeuiɔɛ][́̀̌]?[^n]? # processing instructions plan for token: stage 0 add sequential parse common_inflection +# stage 0 add sequential parse dtmprn_nko_inflection # NO RESULT : mɛ́n`:dtm/prn: stage 0 add parallel parse v_inflection stage 0 apply lookup return if parsed stage 1 add sequential parse common_derivation +return if parsed stage 1 add parallel parse v_derivation stage 1 add parallel parse v_prefixes stage 1 add parallel parse n_derivation @@ -29,116 +31,290 @@ return if parsed # nominal/common inflection section common_inflection # -` ART -pattern :n/adj/ptcp/n.prop: [ {|`}:: ] | :n/adj/ptcp/n.prop: [:n/adj/ptcp/n.prop: :mrph:ART] +#pattern :n/adj/ptcp/n.prop/dtm/prn: [ {|`}:: ] | :n/adj/ptcp/n.prop/dtm/prn: [:n/adj/ptcp/n.prop/dtm/prn: :mrph:ART] +#pattern :n/adj/ptcp/dtm/prn/v/pers/prt/num/n.prop: [ {|`}:: ] | :n/adj/ptcp/dtm/prn/v/pers/prt/num/n.prop: [:n/adj/ptcp/dtm/prn/v/pers/prt/num/n.prop: :mrph:ART] # soupçons sur n.prop: -> testé sans=rien de probant - mis en dernier. +pattern :n/adj/ptcp/v/pers/prt/num/n.prop: [ {|`}:: ] | :n/adj/ptcp/v/pers/prt/num/n.prop: [:n/adj/ptcp/v/pers/prt/num/n.prop: :mrph:ART] +# soupçons sur n.prop: -> testé sans=rien de probant - mis en dernier. 4/6/2024 enlevé dtm/prn: vt dans malidaba ? rien lookup ne trouve que les v pour mɛ́n` - ajouté 'vt' dans variantfields (formats/DictReader) +# ART v -> n : nominalisation fréquente des verbes +pattern :v: [ {|`}:: ] | :n: [:v: :mrph:ART] + +# section dtmprn_nko_inflection +# pattern :dtm/prn: [ {|`}:: ] | :dtm/prn: [:dtm/prn:] section v_inflection # verbal inflection # -la/-na INF pattern :v: [ {@nonnasal-v@|là}:: ] | :v: [:v: :mrph:INF.LA] pattern :v: [ {@nonnasal-v@|lá}:: ] | :v: [:v: :mrph:INF.LA] +pattern :v: [ {@nonnasal-v@|la}:: ] | :v: [:v: :mrph:INF.LA] pattern :v: [ {@nasal-v@|nà}:: ] | :v: [:v: :mrph:INF.LA] pattern :v: [ {@nasal-v@|ná}:: ] | :v: [:v: :mrph:INF.LA] +pattern :v: [ {@nasal-v@|na}:: ] | :v: [:v: :mrph:INF.LA] # -san IMMED pattern :v: [ {|sàn}:: ] | :v: [:v: :mrph:IMMED] pattern :v: [ {|sán}:: ] | :v: [:v: :mrph:IMMED] +pattern :v: [ {|san}:: ] | :v: [:v: :mrph:IMMED] + # participles # -nin/-nɛn PTCP.RES pattern :v/ptcp: [ {|nìn}:: ] | :ptcp: [:v: :mrph:PTCP.RES] pattern :v/ptcp: [ {|nín}:: ] | :ptcp: [:v: :mrph:PTCP.RES] +pattern :v/ptcp: [ {|nin}:: ] | :ptcp: [:v: :mrph:PTCP.RES] +pattern :v/ptcp: [ {|nin|`}:: ] | :ptcp: [:v: :mrph:PTCP.RES :mrph:ART] + pattern :v/ptcp: [ {|nɛ́n}:: ] | :ptcp: [:v: :mrph:PTCP.RES] pattern :v/ptcp: [ {|nɛ̀n}:: ] | :ptcp: [:v: :mrph:PTCP.RES] +pattern :v/ptcp: [ {|nɛn}:: ] | :ptcp: [:v: :mrph:PTCP.RES] +pattern :v/ptcp: [ {|nɛn|`}:: ] | :ptcp: [:v: :mrph:PTCP.RES :mrph:ART] + +pattern :v/ptcp: [ {|nɛn|ba}:: ] | :ptcp: [:v: :mrph:PTCP.RES :mrph:AUGM] +pattern :v/ptcp: [ {|nɛn|ba|`}:: ] | :ptcp: [:v: :mrph:PTCP.RES :mrph:AUGM :mrph:ART] + +# à cause des confusions -nɛn PTCP.RES et -nɛn DIM, le paragraphe qui suit a été remonté dans cette section +pattern :n/adj/ptcp: [ {|nìn}:: ] | :n/adj/ptcp: [ :n/adj/ptcp: :mrph:DIM ] +pattern :n/adj/ptcp: [ {|nín}:: ] | :n/adj/ptcp: [ :n/adj/ptcp: :mrph:DIM ] +pattern :n/adj/ptcp: [ {|nin}:: ] | :n/adj/ptcp: [ :n/adj/ptcp: :mrph:DIM ] +pattern :n/adj/ptcp: [ {|nin|`}:: ] | :n/adj/ptcp: [ :n/adj/ptcp: :mrph:DIM :mrph:ART] +# ajouté : -nɛn DIM +pattern :n/adj/ptcp: [ {|nɛ̀n}:: ] | :n/adj/ptcp: [ :n/adj/ptcp: :mrph:DIM ] +pattern :n/adj/ptcp: [ {|nɛ́n}:: ] | :n/adj/ptcp: [ :n/adj/ptcp: :mrph:DIM ] +pattern :n/adj/ptcp: [ {|nɛn}:: ] | :n/adj/ptcp: [ :n/adj/ptcp: :mrph:DIM ] +pattern :n/adj/ptcp: [ {|nɛn|`}:: ] | :n/adj/ptcp: [ :n/adj/ptcp: :mrph:DIM :mrph:ART] + # -ta PTCP.POT pattern :v/ptcp: [ {|tà}:: ] | :ptcp: [:v: :mrph:PTCP.POT] pattern :v/ptcp: [ {|tá}:: ] | :ptcp: [:v: :mrph:PTCP.POT] -# -tɔ PTCP.PROG -pattern :v/ptcp: [ {|tɔ̀}:: ] | :ptcp: [:v: :mrph:PTCP.PROG] -pattern :v/ptcp: [ {|tɔ́}:: ] | :ptcp: [:v: :mrph:PTCP.PROG] +pattern :v/ptcp: [ {|ta}:: ] | :ptcp: [:v: :mrph:PTCP.POT] +pattern :v/ptcp: [ {|ta|`}:: ] | :ptcp: [:v: :mrph:PTCP.POT :mrph:ART] +# -tɔ PTCP.PROG -> changed to CONV.PROG +pattern :v/ptcp: [ {|tɔ̀}:: ] | :ptcp: [:v: :mrph:CONV.PROG] +pattern :v/ptcp: [ {|tɔ́}:: ] | :ptcp: [:v: :mrph:CONV.PROG] +pattern :v/ptcp: [ {|tɔ}:: ] | :ptcp: [:v: :mrph:CONV.PROG] +pattern :v/ptcp: [ {|tɔ|`}:: ] | :ptcp: [:v: :mrph:CONV.PROG :mrph:ART] +# -tɔla CONV.PROG+PROG ajouté le 22/3/2024 +pattern :v/ptcp: [ {|tɔ|la}:: ] | :ptcp: [:v: :mrph:CONV.PROG la:mrph:PROG] +pattern :v/ptcp: [ {|tɔ|la|`}:: ] | :ptcp: [:v: :mrph:CONV.PROG la:mrph:PROG :mrph:ART] + # -bali PTCP.NEG pattern :v/ptcp: [ {|bàlì}:: ] | :ptcp: [:v: :mrph:PTCP.NEG] pattern :v/ptcp: [ {|bálí}:: ] | :ptcp: [:v: :mrph:PTCP.NEG] +pattern :v/ptcp: [ {|bali}:: ] | :ptcp: [:v: :mrph:PTCP.NEG] +pattern :v/ptcp: [ {|bali|`}:: ] | :ptcp: [:v: :mrph:PTCP.NEG :mrph:ART] + +# -baliya +pattern :v/ptcp: [ {|bali|ya}:: ] | :n: [:v: :mrph:PTCP.NEG :mrph:ABSTR] +pattern :v/ptcp: [ {|bali|ya|`}:: ] | :n: [:v: :mrph:PTCP.NEG :mrph:ABSTR :mrph:ART] ## DERIVATION section common_derivation +# les lignes avec articles tonal sont nécessaires - mais cela ne parait pas logique (faute de documentation, on s'adapte) + # -ya/-ɲa ABSTR -pattern :n/v: [ {|yà}:: ] | :n: [:n/adj/ptcp: :mrph:ABSTR] -pattern :n/v: [ {|yá}:: ] | :n: [:n/adj/ptcp: :mrph:ABSTR] -pattern :n/v: [ {|ɲà}:: ] | :n: [:n/adj/ptcp: :mrph:ABSTR] -pattern :n/v: [ {|ɲá}:: ] | :n: [:n/adj/ptcp: :mrph:ABSTR] -# -nin DIM -pattern :n/adj/ptcp: [ {|nìn}:: ] | :n/adj/ptcp: [ :n/adj/ptcp: :mrph:DIM ] -pattern :n/adj/ptcp: [ {|nín}:: ] | :n/adj/ptcp: [ :n/adj/ptcp: :mrph:DIM ] +#pattern :n/v: [ {|yà}:: ] | :n: [:n/adj/ptcp: :mrph:ABSTR] # n/adj/ptcp ??? +pattern :n/v: [ {|yà}:: ] | :n: [:n/v: :mrph:ABSTR] +pattern :n/v: [ {|yá}:: ] | :n: [:n/v: :mrph:ABSTR] +pattern :n/v: [ {|ya}:: ] | :n: [:n/v: :mrph:ABSTR] +pattern :n/v: [ {|ɲà}:: ] | :n: [:n/v: :mrph:ABSTR] +pattern :n/v: [ {|ɲá}:: ] | :n: [:n/v: :mrph:ABSTR] +pattern :n/v: [ {|ɲa}:: ] | :n: [:n/v: :mrph:ABSTR] +pattern :n/v: [ {|ɲa|`}:: ] | :n: [:n/v: :mrph:ABSTR :mrph:ART] + +# -nin DIM +pattern :n/adj/ptcp: [ {|nìn}:: ] | :n/adj/ptcp: [ :n/adj/ptcp: :mrph:DIM ] +pattern :n/adj/ptcp: [ {|nín}:: ] | :n/adj/ptcp: [ :n/adj/ptcp: :mrph:DIM ] +pattern :n/adj/ptcp: [ {|nin}:: ] | :n/adj/ptcp: [ :n/adj/ptcp: :mrph:DIM ] +pattern :n/adj/ptcp: [ {|nin|`}:: ] | :n/adj/ptcp: [ :n/adj/ptcp: :mrph:DIM :mrph:ART] + +# -ren DIM +pattern :n/adj/ptcp: [ {|ren}:: ] | :n/adj/ptcp: [ :n/adj/ptcp: :mrph:DIM ] +pattern :n/adj/ptcp: [ {|ren|`}:: ] | :n/adj/ptcp: [ :n/adj/ptcp: :mrph:DIM :mrph:ART] + # -ba AUGM -pattern :n/adj/ptcp: [ {|bà}:: ] | :n/adj/ptcp: [ :n/adj/ptcp: :mrph:AUG ] -pattern :n/adj/ptcp: [ {|bá}:: ] | :n/adj/ptcp: [ :n/adj/ptcp: :mrph:AUG ] +pattern :n/adj/ptcp: [ {|bà}:: ] | :n/adj/ptcp: [ :n/adj/ptcp: :mrph:AUGM ] +pattern :n/adj/ptcp: [ {|bá}:: ] | :n/adj/ptcp: [ :n/adj/ptcp: :mrph:AUGM ] +pattern :n/adj/ptcp: [ {|ba}:: ] | :n/adj/ptcp: [ :n/adj/ptcp: :mrph:AUGM ] +pattern :n/adj/ptcp: [ {|ba|`}:: ] | :n/adj/ptcp: [ :n/adj/ptcp: :mrph:AUGM :mrph:ART] + # -nte AG.EX pattern :n: [ {|ntè}:: ] | :n: [ :n/adj/v: :mrph:AG.EX ] pattern :n: [ {|nté}:: ] | :n: [ :n/adj/v: :mrph:AG.EX ] +pattern :n: [ {|nte}:: ] | :n: [ :n/adj/v: :mrph:AG.EX ] +pattern :n: [ {|nte|`}:: ] | :n: [ :n/adj/v: :mrph:AG.EX :mrph:ART] + # ‑ɲɔɔn RECP pattern :n: [ {|ɲɔ̀ɔn}:: ] | :n: [ :v/n: :mrph:RECP] pattern :n: [ {|ɲɔ́ɔn}:: ] | :n: [ :v/n: :mrph:RECP] +pattern :n: [ {|ɲɔɔn}:: ] | :n: [ :v/n: :mrph:RECP] +pattern :n: [ {|ɲɔɔn|`}:: ] | :n: [ :v/n: :mrph:RECP :mrph:ART] +# -lama STAT ajouté le 22/3/2024 +pattern :n: [ {@nonnasal-v@|lama}:: ] | :adj: [ :n: :mrph:STAT] +pattern :n: [ {@nonnasal-v@|lama|`}:: ] | :adj: [ :n: :mrph:STAT :mrph:ART] +pattern :n: [ {@nasal-v@|nama}:: ] | :adj: [ :n: :mrph:STAT] +pattern :n: [ {@nasal-v@|nama|`}:: ] | :adj: [ :n: :mrph:STAT :mrph:ART] +pattern :n: [ {@nonnasal-v@|rɔma}:: ] | :adj: [ :n: :mrph:STAT] +pattern :n: [ {@nonnasal-v@|rɔma|`}:: ] | :adj: [ :n: :mrph:STAT :mrph:ART] + +# -ma RECP.PRN ajouté le 22/3/2024 +pattern :n: [ {|ma}:: ] | :n: [ :n: :mrph:RECP.PRN] +pattern :n: [ {|ma|`}:: ] | :n: [ :n: :mrph:RECP.PRN :mrph:ART] + +# -ta PRICE ajouté le 22/3/2024 +pattern :num/n: [ {|ta}:: ] | :n: [ :num: :mrph:PRICE] +pattern :num/n: [ {|ta|`}:: ] | :n: [ :num: :mrph:PRICE :mrph:ART] +pattern :num/n: [ {|la}:: ] | :n: [ :num: :mrph:PRICE] +pattern :num/n: [ {|la|`}:: ] | :n: [ :num: :mrph:PRICE :mrph:ART] # verbal derivation section v_derivation # -baa AG.OCC pattern :n/adj: [ {|bàa}:: ] | :n/adj: [ :v: :mrph:AG.OCC ] pattern :n/adj: [ {|báa}:: ] | :n/adj: [ :v: :mrph:AG.OCC ] +pattern :n/adj: [ {|baa}:: ] | :n/adj: [ :v: :mrph:AG.OCC ] +pattern :n/adj: [ {|baa|`}:: ] | :n/adj: [ :v: :mrph:AG.OCC :mrph:ART] # -la/-na AG.PRM pattern :n: [ {@nonnasal-v@|là}:: ] | :n: [ :v: :mrph:AG.PRM ] pattern :n: [ {@nonnasal-v@|lá}:: ] | :n: [ :v: :mrph:AG.PRM ] +pattern :n: [ {@nonnasal-v@|la}:: ] | :n: [ :v: :mrph:AG.PRM ] +pattern :n: [ {@nonnasal-v@|la|`}:: ] | :n: [ :v: :mrph:AG.PRM :mrph:ART] pattern :n: [ {@nasal-v@|nà}:: ] | :n: [ :v: :mrph:AG.PRM ] pattern :n: [ {@nasal-v@|ná}:: ] | :n: [ :v: :mrph:AG.PRM ] +pattern :n: [ {@nasal-v@|na}:: ] | :n: [ :v: :mrph:AG.PRM ] +pattern :n: [ {@nasal-v@|na|`}:: ] | :n: [ :v: :mrph:AG.PRM :mrph:ART] # -lan/-nan/-ran INSTR pattern :n: [ {@nonnasal-v@|làn}:: ] | :n: [ :v: :mrph:INSTR] pattern :n: [ {@nonnasal-v@|lán}:: ] | :n: [ :v: :mrph:INSTR] +pattern :n: [ {@nonnasal-v@|lan}:: ] | :n: [ :v: :mrph:INSTR] +pattern :n: [ {@nonnasal-v@|lan|`}:: ] | :n: [ :v: :mrph:INSTR :mrph:ART] pattern :n: [ {@nasal-v@|nàn}:: ] | :n: [ :v: :mrph:INSTR] pattern :n: [ {@nasal-v@|nán}:: ] | :n: [ :v: :mrph:INSTR] +pattern :n: [ {@nasal-v@|nan}:: ] | :n: [ :v: :mrph:INSTR] +pattern :n: [ {@nasal-v@|nan|`}:: ] | :n: [ :v: :mrph:INSTR :mrph:ART] +pattern :n: [ {@nonnasal-v@|ràn}:: ] | :n: [ :v: :mrph:INSTR] +pattern :n: [ {@nonnasal-v@|rán}:: ] | :n: [ :v: :mrph:INSTR] +pattern :n: [ {@nonnasal-v@|ran}:: ] | :n: [ :v: :mrph:INSTR] +pattern :n: [ {@nonnasal-v@|ran|`}:: ] | :n: [ :v: :mrph:INSTR :mrph:ART] # -li/-nin NMLZ -pattern :n: [ {@nonnasal-syl@|lì}:: ] | :n: [ :v: :mrph:NMLZ] -pattern :n: [ {@nonnasal-syl@|lí}:: ] | :n: [ :v: :mrph:NMLZ] -pattern :n: [ {@nasal-syl@|nìn}:: ] | :n: [ :v: :mrph:NMLZ] -pattern :n: [ {@nasal-syl@|nín}:: ] | :n: [ :v: :mrph:NMLZ] +pattern :n: [ {@nonnasal-v@|lì}:: ] | :n: [ :v: :mrph:NMLZ] +pattern :n: [ {@nonnasal-v@|lí}:: ] | :n: [ :v: :mrph:NMLZ] +pattern :n: [ {@nonnasal-v@|li}:: ] | :n: [ :v: :mrph:NMLZ] +pattern :n: [ {@nonnasal-v@|li|`}:: ] | :n: [ :v: :mrph:NMLZ :mrph:ART] +pattern :n: [ {@nasal-v@|nìn}:: ] | :n: [ :v: :mrph:NMLZ] +pattern :n: [ {@nasal-v@|nín}:: ] | :n: [ :v: :mrph:NMLZ] +pattern :n: [ {@nasal-v@|nin}:: ] | :n: [ :v: :mrph:NMLZ] +pattern :n: [ {@nasal-v@|nin|`}:: ] | :n: [ :v: :mrph:NMLZ :mrph:ART] section v_prefixes # lá-/ná- CAUS -#pattern :v: [ {la|}:: ] | :v: [ :mrph:CAUS :v: ] -#pattern :v: [ {na|}:: ] | :v: [ :mrph:CAUS :v: ] -# mà- SUPER -#pattern :v: [ {ma|}:: ] | :v: [ :mrph:SUPER :v: ] +pattern :v: [ {lá|}:: ] | :v: [ :mrph:CAUS :v: ] +pattern :v: [ {ná|}:: ] | :v: [ :mrph:CAUS :v: ] +pattern :v/ptcp: [ {lá||nin|`}:: ] | :ptcp: [ :mrph:CAUS :v: :mrph:PTCP.RES :mrph:ART] +pattern :v/ptcp: [ {ná||nin|`}:: ] | :ptcp: [ :mrph:CAUS :v: :mrph:PTCP.RES :mrph:ART] +pattern :v/ptcp: [ {lá||nɛn|`}:: ] | :ptcp: [ :mrph:CAUS :v: :mrph:PTCP.RES :mrph:ART] +pattern :v/ptcp: [ {ná||nɛn|`}:: ] | :ptcp: [ :mrph:CAUS :v: :mrph:PTCP.RES :mrph:ART] + +pattern :v/ptcp: [ {lá||ta|`}:: ] | :ptcp: [ :mrph:CAUS :v: :mrph:PTCP.POT :mrph:ART] +pattern :v/ptcp: [ {lá||tɔ|`}:: ] | :ptcp: [ :mrph:CAUS :v: :mrph:CONV.PROG :mrph:ART] +pattern :v/ptcp: [ {lá||bali|`}:: ] | :ptcp: [ :mrph:CAUS :v: :mrph:PTCP.PRIV :mrph:ART] + +pattern :v/n: [ {lá||li|`}:: ] | :n: [ :mrph:CAUS :v: :mrph:NMLZ :mrph:ART] +pattern :v/n: [ {lá||nin|`}:: ] | :n: [ :mrph:CAUS :v: :mrph:NMLZ :mrph:ART] +pattern :v/n: [ {ná||la|`}:: ] | :n: [ :mrph:CAUS :v: :mrph:AG.PRM :mrph:ART] +pattern :v/n: [ {ná||lan|`}:: ] | :n: [ :mrph:CAUS :v: :mrph:INSTR :mrph:ART] + +pattern :v/ptcp: [ {ná||ta|`}:: ] | :ptcp: [ :mrph:CAUS :v: :mrph:PTCP.POT :mrph:ART] +pattern :v/ptcp: [ {ná||tɔ|`}:: ] | :ptcp: [ :mrph:CAUS :v: :mrph:CONV.PROG :mrph:ART] +pattern :v/ptcp: [ {ná||bali|`}:: ] | :ptcp: [ :mrph:CAUS :v: :mrph:PTCP.PRIV :mrph:ART] + +pattern :v/n: [ {ná||li|`}:: ] | :n: [ :mrph:CAUS :v: :mrph:NMLZ :mrph:ART] +pattern :v/n: [ {ná||nin|`}:: ] | :n: [ :mrph:CAUS :v: :mrph:NMLZ :mrph:ART] +pattern :v/n: [ {ná||na|`}:: ] | :n: [ :mrph:CAUS :v: :mrph:AG.PRM :mrph:ART] +pattern :v/n: [ {ná||nan|`}:: ] | :n: [ :mrph:CAUS :v: :mrph:INSTR :mrph:ART] + +# má- SUPER +pattern :v: [ {má|}:: ] | :v: [ :mrph:SUPER :v: ] +pattern :v/ptcp: [ {má||nin|`}:: ] | :ptcp: [ :mrph:SUPER :v: :mrph:PTCP.RES :mrph:ART] +pattern :v/ptcp: [ {má||nɛn|`}:: ] | :ptcp: [ :mrph:SUPER :v: :mrph:PTCP.RES :mrph:ART] + +pattern :v/ptcp: [ {má||ta|`}:: ] | :ptcp: [ :mrph:SUPER :v: :mrph:PTCP.POT :mrph:ART] +pattern :v/ptcp: [ {má||tɔ|`}:: ] | :ptcp: [ :mrph:SUPER :v: :mrph:CONV.PROG :mrph:ART] +pattern :v/ptcp: [ {má||bali|`}:: ] | :ptcp: [ :mrph:SUPER :v: :mrph:PTCP.PRIV :mrph:ART] + +pattern :v/n: [ {má||li|`}:: ] | :n: [ :mrph:SUPER :v: :mrph:NMLZ :mrph:ART] +pattern :v/n: [ {má||nin|`}:: ] | :n: [ :mrph:SUPER :v: :mrph:NMLZ :mrph:ART] + # dɔ́ ~ rɔ́-/nɔ́ IN -#pattern :v: [ {dɔ|}:: ] | :v: [ :mrph:IN :v: ] -#pattern :v: [ {rɔ|}:: ] | :v: [ :mrph:IN :v: ] -#pattern :v: [ {nɔ|}:: ] | :v: [ :mrph:IN :v: ] +pattern :v: [ {dɔ́|}:: ] | :v: [ :mrph:IN :v: ] +pattern :v: [ {rɔ́|}:: ] | :v: [ :mrph:IN :v: ] +pattern :v: [ {nɔ́|}:: ] | :v: [ :mrph:IN :v: ] +pattern :v/ptcp: [ {dɔ́||nin|`}:: ] | :ptcp: [ :mrph:IN :v: :mrph:PTCP.RES :mrph:ART] +pattern :v/ptcp: [ {rɔ́||nin|`}:: ] | :ptcp: [ :mrph:IN :v: :mrph:PTCP.RES :mrph:ART] +pattern :v/ptcp: [ {nɔ́||nin|`}:: ] | :ptcp: [ :mrph:IN :v: :mrph:PTCP.RES :mrph:ART] +pattern :v/ptcp: [ {dɔ́||nɛn|`}:: ] | :ptcp: [ :mrph:IN :v: :mrph:PTCP.RES :mrph:ART] +pattern :v/ptcp: [ {rɔ́||nɛn|`}:: ] | :ptcp: [ :mrph:IN :v: :mrph:PTCP.RES :mrph:ART] +pattern :v/ptcp: [ {nɔ́||nɛn|`}:: ] | :ptcp: [ :mrph:IN :v: :mrph:PTCP.RES :mrph:ART] + +pattern :v/ptcp: [ {dɔ́||ta|`}:: ] | :ptcp: [ :mrph:IN :v: :mrph:PTCP.POT :mrph:ART] +pattern :v/ptcp: [ {dɔ́||tɔ|`}:: ] | :ptcp: [ :mrph:IN :v: :mrph:CONV.PROG :mrph:ART] +pattern :v/ptcp: [ {dɔ́||bali|`}:: ] | :ptcp: [ :mrph:IN :v: :mrph:PTCP.PRIV :mrph:ART] + +pattern :v/n: [ {dɔ́||li|`}:: ] | :n: [ :mrph:SUPER :v: :mrph:PTCP.PRIV :mrph:NMLZ] +pattern :v/n: [ {dɔ́||nin|`}:: ] | :n: [ :mrph:SUPER :v: :mrph:PTCP.PRIV :mrph:NMLZ] + +pattern :v/ptcp: [ {rɔ́||ta|`}:: ] | :ptcp: [ :mrph:IN :v: :mrph:PTCP.POT :mrph:ART] +pattern :v/ptcp: [ {rɔ́||tɔ|`}:: ] | :ptcp: [ :mrph:IN :v: :mrph:CONV.PROG :mrph:ART] +pattern :v/ptcp: [ {rɔ́||bali|`}:: ] | :ptcp: [ :mrph:IN :v: :mrph:PTCP.PRIV :mrph:ART] +pattern :v/ptcp: [ {nɔ́||ta|`}:: ] | :ptcp: [ :mrph:IN :v: :mrph:PTCP.POT :mrph:ART] +pattern :v/ptcp: [ {nɔ́||tɔ|`}:: ] | :ptcp: [ :mrph:IN :v: :mrph:CONV.PROG :mrph:ART] +pattern :v/ptcp: [ {nɔ́||bali|`}:: ] | :ptcp: [ :mrph:IN :v: :mrph:PTCP.PRIV :mrph:ART] section n_derivation # -laka LOC.GENT pattern :n/n.prop: [ {@nonnasal-v@|là|kà}:: ] | :n/n.prop: [ :n/n.prop: :mrph:LOC :mrph:GENT ] pattern :n/n.prop: [ {@nonnasal-v@|lá|ká}:: ] | :n/n.prop: [ :n/n.prop: :mrph:LOC :mrph:GENT ] -pattern :n/n.prop: [ {@nonnasal-v@|là|ká}:: ] | :n/n.prop: [ :n/n.prop: :mrph:LOC :mrph:GENT ] +pattern :n/n.prop: [ {@nonnasal-v@|là|ká}:: ] | :n/n.prop: [ :n/n.prop: :mrph:LOC :mrph:GENT ] +pattern :n/n.prop: [ {@nonnasal-v@|la|ka}:: ] | :n/n.prop: [ :n/n.prop: :mrph:LOC :mrph:GENT ] +pattern :n/n.prop: [ {@nonnasal-v@|la|ka|`}:: ] | :n/n.prop: [ :n/n.prop: :mrph:LOC :mrph:GENT :mrph:ART] # -ka GENT pattern :n/n.prop: [ {|kà}:: ] | :n/n.prop: [ :n/n.prop: :mrph:GENT ] pattern :n/n.prop: [ {|ká}:: ] | :n/n.prop: [ :n/n.prop: :mrph:GENT ] +pattern :n/n.prop: [ {|ka}:: ] | :n/n.prop: [ :n/n.prop: :mrph:GENT ] +pattern :n/n.prop: [ {|ka|`}:: ] | :n/n.prop: [ :n/n.prop: :mrph:GENT :mrph:ART] # -la/-na LOC pattern :n/n.prop: [ {@nonnasal-v@|là}:: ] | :n/n.prop: [:n/n.prop: :mrph:LOC] pattern :n/n.prop: [ {@nonnasal-v@|lá}:: ] | :n/n.prop: [:n/n.prop: :mrph:LOC] +pattern :n/n.prop: [ {@nonnasal-v@|la}:: ] | :n/n.prop: [:n/n.prop: :mrph:LOC] +pattern :n/n.prop: [ {@nonnasal-v@|la|`}:: ] | :n/n.prop: [:n/n.prop: :mrph:LOC :mrph:ART] pattern :n/n.prop: [ {@nasal-v@|nà}:: ] | :n/n.prop: [:n/n.prop: :mrph:LOC] pattern :n/n.prop: [ {@nasal-v@|ná}:: ] | :n/n.prop: [:n/n.prop: :mrph:LOC] +pattern :n/n.prop: [ {@nasal-v@|na}:: ] | :n/n.prop: [:n/n.prop: :mrph:LOC] +pattern :n/n.prop: [ {@nasal-v@|na|`}:: ] | :n/n.prop: [:n/n.prop: :mrph:LOC :mrph:ART] # -ntan PRIV pattern :adj/n: [ {|ntàn}:: ] | :adj/n: [ :n: :mrph:PRIV] pattern :adj/n: [ {|ntán}:: ] | :adj/n: [ :n: :mrph:PRIV] +pattern :adj/n: [ {|ntan}:: ] | :adj/n: [ :n: :mrph:PRIV] +pattern :adj/n: [ {|ntan|`}:: ] | :adj/n: [ :n: :mrph:PRIV :mrph:ART] # -ma COM pattern :n: [ {|mà}:: ] | :adj/n: [ :n: :mrph:COM] pattern :n: [ {|má}:: ] | :adj/n: [ :n: :mrph:COM] +pattern :n: [ {|ma}:: ] | :adj/n: [ :n: :mrph:COM] +pattern :n: [ {|ma|`}:: ] | :adj/n: [ :n: :mrph:COM :mrph:ART] # -nan ORD pattern :num: [ {|nàn}:: ] | :adj: [ :num: :mrph:ORD ] pattern :num: [ {|nán}:: ] | :adj: [ :num: :mrph:ORD ] +pattern :num: [ {|nan}:: ] | :adj: [ :num: :mrph:ORD ] +pattern :num: [ {|nan|`}:: ] | :adj: [ :num: :mrph:ORD :mrph:ART] # -ta FOC.ADJ pattern :adj: [ {|tà}:: ] | :adj: [ :adj: :mrph:FOC.ADJ ] pattern :adj: [ {|tá}:: ] | :adj: [ :adj: :mrph:FOC.ADJ ] +pattern :adj: [ {|ta}:: ] | :adj: [ :adj: :mrph:FOC.ADJ ] +pattern :adj: [ {|ta|`}:: ] | :adj: [ :adj: :mrph:FOC.ADJ :mrph:ART] # -tɔ ST pattern :n/adj: [ {|tɔ́}:: ] | :n/adj: [ :n: :mrph:ST ] pattern :n/adj: [ {|tɔ̀}:: ] | :n/adj: [ :n: :mrph:ST ] +pattern :n/adj: [ {|tɔ}:: ] | :n/adj: [ :n: :mrph:ST ] +pattern :n/adj: [ {|tɔ|`}:: ] | :n/adj: [ :n: :mrph:ST :mrph:ART] # vq derivation @@ -146,11 +322,20 @@ section vq_derivation # -man ADJ pattern :vq: [ {|màn}:: ] | :adj: [ :vq: :mrph:ADJ ] pattern :vq: [ {|mán}:: ] | :adj: [ :vq: :mrph:ADJ ] +pattern :vq: [ {|man}:: ] | :adj: [ :vq: :mrph:ADJ ] +pattern :vq: [ {|man|`}:: ] | :adj: [ :vq: :mrph:ADJ :mrph:ART] # -ya/-ɲa DEQU pattern :vq: [ {@nonnasal-v@|yà}:: ] | :n/v: [ :vq: :mrph:DEQU] pattern :vq: [ {@nonnasal-v@|yá}:: ] | :n/v: [ :vq: :mrph:DEQU] +pattern :vq: [ {@nonnasal-v@|ya}:: ] | :n/v: [ :vq: :mrph:DEQU] +pattern :vq: [ {@nonnasal-v@|ya|`}:: ] | :n: [ :vq: :mrph:DEQU :mrph:ART] pattern :vq: [ {@nasal-v@|ɲà}:: ] | :n/v: [ :vq: :mrph:DEQU] pattern :vq: [ {@nasal-v@|ɲá}:: ] | :n/v: [ :vq: :mrph:DEQU] +pattern :vq: [ {@nasal-v@|ɲa}:: ] | :n/v: [ :vq: :mrph:DEQU] +pattern :vq: [ {@nasal-v@|ɲa|`}:: ] | :n: [ :vq: :mrph:DEQU :mrph:ART] +# cela arrive aussi quand même : +pattern :vq: [ {@nasal-v@|ya}:: ] | :n/v: [ :vq: :mrph:DEQU] +pattern :vq: [ {@nasal-v@|ya|`}:: ] | :n: [ :vq: :mrph:DEQU :mrph:ART] ## reduplication section reduplication @@ -169,13 +354,25 @@ pattern :adj: [ {(?P.+)|(?P=stem)|(?P=stem)}:: # two-word composites section pos_composition # v/n + n = n -pattern :n: [ :n/v: :n: ] | :n: [ :n/v: :n: ] +# BUGS(misses yìdako) pattern :n: [ :n/v: :n: ] | :n: [ :n/v: :n: ] +# NOT NEEDED -> pattern :n: [ :n/v: {|`}:n: ] | :n: [ :n/v: :n: :mrph:ART] +pattern :n/v: [ :v: :n: ] | :n: [ :v: :n: ] +pattern :n: [ :n: :n: ] | :n: [ :n: :n: ] + # n + v = n/v pattern :n/v: [ :n: :v: ] | :n/v: [ :n: :v: ] + # n + adj/num = n pattern :n: [ :n: :adj/num: ] | :n: [ :n: :adj/num: ] +# pattern :n/adj: [ :n: :adj: ] | :n: [ :n: :adj: ] +# pattern :n/num: [ :n: :num: ] | :n: [ :n: :num: ] + +# prn + v ɲɔ́ɔn.yé +pattern :n/v: [ :prn: :v: ] | :n/v: [ :prn: :v: ] + # dtm + v = n pattern :n: [ :dtm: :v: ] | :n: [ :dtm: :v: ] + # three-word composites # n + adj/pp + n = n pattern :n: [ :n: :adj/pp: :n: ] | :n: [ :n: :adj/pp: :n: ] diff --git a/docs/samples/meta.xml b/docs/samples/meta.xml index 7bea67d..b9f5847 100644 --- a/docs/samples/meta.xml +++ b/docs/samples/meta.xml @@ -1,4 +1,4 @@ - +
@@ -10,6 +10,7 @@ + @@ -20,10 +21,10 @@ - +
-
+
@@ -33,7 +34,7 @@ - + @@ -96,7 +97,7 @@
- + @@ -104,7 +105,7 @@ - + @@ -112,7 +113,7 @@ - + @@ -121,16 +122,16 @@ - + - - - - - - - - + + + + + + + + @@ -147,7 +148,7 @@ - + @@ -179,6 +180,7 @@ + @@ -186,15 +188,17 @@ + + - + @@ -208,24 +212,29 @@ - + - + + + + +
From 0b1f6bfa6b111ca7be26362fe64ba451ede8d05c Mon Sep 17 00:00:00 2001 From: corpus-team Date: Wed, 24 Sep 2025 15:17:11 +0200 Subject: [PATCH 2/7] added support for word+digits forms --- docs/samples/bamana.gram.txt | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/docs/samples/bamana.gram.txt b/docs/samples/bamana.gram.txt index 81df7bf..66d1372 100644 --- a/docs/samples/bamana.gram.txt +++ b/docs/samples/bamana.gram.txt @@ -13,6 +13,7 @@ macro @syl1@ [^aoeuiɔɛ]*(?P[aoeuiɔɛ])(?P=V1)?(n(?=([^aoeuiɔɛ]|$)))? macro @syl2@ [^aoeuiɔɛ]*(?P[aoeuiɔɛ])(?P=V2)?(n(?=([^aoeuiɔɛ]|$)))? macro @bam-cons@ [bcdfghjklmɲŋprstyz] macro @proper@ [A-ZƐƆƝŊ][a-zɛɔɲŋ́̀̌̂]+ +macro @worddigits@ [a-zA-ZɛɔɲŋƐƆƝŊ\-]{4,} # processing instructions plan @@ -47,8 +48,11 @@ stage 4 apply lookup return if parsed stage 5 add parallel decompose pos_composition4 return if parsed -stage 6 apply firstmatch parse propername -stage 6 apply firstmatch parse nonbamana +stage 6 add parallel parse alphadigits +stage 6 apply lookup +return if parsed +stage 7 apply firstmatch parse propername +stage 7 apply firstmatch parse nonbamana return if parsed #for sentence @@ -74,7 +78,6 @@ pattern :v: [ {@nonnasal-v@|la}:: ] | :v: [:v: :mrph:PROG] # -w PL pattern :n/adj/dtm/prn/ptcp/n.prop/num: [ {|w}:: ] | :n/adj/dtm/prn/ptcp/n.prop/num: [:n/adj/dtm/prn/ptcp/n.prop/num: :mrph:PL] - section inflection_MNT12_OPT2_DIR # produce nouns but moved here because of na/la ambiguity @@ -610,6 +613,27 @@ pattern @proper@:: | :n.prop:NOM # orthographically unlikely to be bamana words # for NEW orthography, with no tones marked + +section alphadigits +# still may be bamana : some forms ending with digits +pattern :num: [ {dɔrɔmɛ|[0-9]+}:: ] | :num: [ dɔ́rɔmɛ:n:cinq.francs.CFA :num:CARDINAL] +pattern :num: [ {d|[0-9]+}:: ] | :num: [ dɔ́rɔmɛ:n:cinq.francs.CFA :num:CARDINAL] +pattern :num: [ {m|[0-9]+}:: ] | :num: [ mɛ́tɛrɛ:n:mètre :num:CARDINAL] +pattern :num: [ {w|[0-9]+}:: ] | :num: [ wáati:n:moment :num:CARDINAL] +# waati au sens d'heure : w5 s30= waati 5 sanga 30 (sanga : minute) +pattern :num: [ {kg|[0-9]+}:: ] | :num: [ kílo:n:kilogramme :num:CARDINAL] +pattern :num: [ {km|[0-9]+}:: ] | :num: [ kílomɛtɛrɛ:n:kilomètre :num:CARDINAL] +# note : les occurrences de km kɛmɛmɛtɛrɛ (hectomètre) sont plutôt écrites séparées que collées. +pattern :n: [ {COP|[0-9]+}:: ] | :n.prop: [ COP:n:prop :num:CARDINAL] +pattern :n: [ {CAN|[0-9]+}:: ] | :n.prop: [ CAN:n.prop:ABR :num:CARDINAL] +pattern :n: [ {san|[0-9]+}:: ] | :n: [ sàn:n:année :num:CARDINAL] +# note: peut-être soit une date: san 2025, soit un nombre d'années: san 5 + +# some rare occurrences with maa/mɔgɔ, tile, san, siɲɛ... +pattern :n/n.prop: [ {@worddigits@|[0-9]+}:: ] | :n: [ :n/n.prop: :num:CARDINAL] + +# other forms may introduce footnotes and should be split (can't do that in bamana.gram), EG Ala²=Ala2 -> Ala (2) + section nonbamana # forms ending with nonfinal consonants pattern .+@bam-cons@:: | ::EMPR From cc4132051ae700773937b969d438216219704f3c Mon Sep 17 00:00:00 2001 From: corpus-team Date: Tue, 30 Sep 2025 09:01:39 +0200 Subject: [PATCH 3/7] go/ko and diya/ja problem - roll back formats, sort lemmas in mparser --- daba/formats.py | 42 +++++++++++++++++++++++++----------------- daba/mparser.py | 19 +++++++++++++++++++ 2 files changed, 44 insertions(+), 17 deletions(-) diff --git a/daba/formats.py b/daba/formats.py index 6844188..6b2b98d 100755 --- a/daba/formats.py +++ b/daba/formats.py @@ -840,10 +840,16 @@ def __init__(self, filename, encoding='utf-8', store=True, # Example (bam) : kó ve of gó (bad) as there are already other legitimate "ko" (lemmafields) # => need to create a first pass to load all values of lemmafields in a list (avoidlist) # then in 2d (normal) pass, check if ve already in avoidlist, then avoid, else add + # In summary, ve is ignored if it is already a legitimate lemma. # This handling is not ideal : # One could with that "a man ko" would display ve "ko" (="go") if preceded by "man" or "ka" # but this sentence analysis is beyond the scope of gparser - + # 29/09/2025 CAVEAT : tone included: já is not in the lemmas, so this \ve of díya is NOT Ignored. + # if tone is exluded - this behaviour is acceptable for a build + # however it is not for a normal work in gdisamb + # a better handling should be in mparser: + # list forms that are different from the original, but only at the end of possible lemma vars + # => rolled back self._dict = DabaDict() self._variants = VariantsDict(canonical=canonical) self._polisemy = defaultdict(ddlist) @@ -933,6 +939,7 @@ def process_record(key, lemmalist, ps, glossdict): self._variants.add(list(zip(*lemmalist))[1]) with codecs.open(filename, 'r', encoding=encoding) as dictfile: + """ removed 29/09/2025 # print("open 1st pass:",filename) # first pass: created avoid list later used to filter through conditionalavoidfields avoidlist=[] @@ -945,7 +952,7 @@ def process_record(key, lemmalist, ps, glossdict): value = normalizeText(value) if value not in avoidlist: avoidlist.append(value) - + """ # normal pass: with codecs.open(filename, 'r', encoding=encoding) as dictfile: # print("open 2d pass:",filename) @@ -1052,21 +1059,22 @@ def process_record(key, lemmalist, ps, glossdict): #lemmalist.append(make_item(value)) elif tag in self.conditionalavoidfields: - if value not in avoidlist: - # print("add ve:",value) - if " " in value : - value=value.replace(" "," ") # replace by hard space (cf enciclop "famous names") - # print("\033[1mILLEGAL\033[0m space in ",key," 've' variant for ",value," replaced by hard space") - try: - lemmalist1=[] - #lemmalist1.append(value) # try: value+":"+key and split before process to keep key ? (check for ":" in lkey string) - lemmalist1.append(value+":"+key) # tried lemmalist1.append("?"+value+":"+key)= never picked in gparser - lemmalist1.append(lemmalist[0][1]) # inherits lx gloss - lemmalist.append(lemmalist1) - # print("ve? lemmalist:",lemmalist) - # [['gó', ''], ['kó:gó', '']] - except: - print("error / value, key",value,key) + # removed 29/09/2025: + # if value not in avoidlist: + # print("add ve:",value) + if " " in value : + value=value.replace(" "," ") # replace by hard space (cf enciclop "famous names") + # print("\033[1mILLEGAL\033[0m space in ",key," 've' variant for ",value," replaced by hard space") + try: + lemmalist1=[] + #lemmalist1.append(value) # try: value+":"+key and split before process to keep key ? (check for ":" in lkey string) + lemmalist1.append(value+":"+key) # tried lemmalist1.append("?"+value+":"+key)= never picked in gparser + lemmalist1.append(lemmalist[0][1]) # inherits lx gloss + lemmalist.append(lemmalist1) + # print("ve? lemmalist:",lemmalist) + # [['gó', ''], ['kó:gó', '']] + except: + print("error / value, key",value,key) ignoremm=True elif tag=="vt": # JJM 26-06-2025 side effect of removing vt from variantfields diff --git a/daba/mparser.py b/daba/mparser.py index 5bca463..7b3ac9c 100644 --- a/daba/mparser.py +++ b/daba/mparser.py @@ -28,6 +28,8 @@ from daba.plugins.tokenizer import TokenizerData from daba.orthography import tones_match, detone +import re # JJM used in removing tones + class Tokenizer(object): def __init__(self): self._data = TokenizerData() @@ -338,6 +340,7 @@ def iscapitalized(s): wordindex+=1 if self.converters: wlist = self.convert_orthography(token.value) + # print("token.value, wlist", token.value, wlist) converts = [] for w in filter(None, wlist): converts.append( @@ -626,6 +629,22 @@ def iscapitalized(s): #else: print("no change") + # 29/09/2025: move forms that are different from original at the end of the list + glistsame=[] + glistdiff=[] + if len(glosslist)>1 : + refform=re.sub(r'[\u0300\u0301\u0302\030c]','',token.value) + # refform=re.sub(r'[\u0300\u0301\u0302\030c]','',wlist[0]) + for g in glosslist: + thisform=re.sub(r'[\u0300\u0301\u0302\030c]','',g.form) + # print("refform, thisform",refform,thisform) + if thisform==refform: + glistsame.append(g) + else: + glistdiff.append(g) + glosslist=glistsame+glistdiff + + if self.normalize_orthography and self.converters: if len(wlist) == 1: normform = wlist[0] From 9981b2e8c605be3b0cb5f8f982d9bc710463cf06 Mon Sep 17 00:00:00 2001 From: corpus-team Date: Tue, 30 Sep 2025 20:23:52 +0200 Subject: [PATCH 4/7] refform lower() for building sorted glosslist --- daba/mparser.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/daba/mparser.py b/daba/mparser.py index 7b3ac9c..c804ed7 100644 --- a/daba/mparser.py +++ b/daba/mparser.py @@ -633,11 +633,11 @@ def iscapitalized(s): glistsame=[] glistdiff=[] if len(glosslist)>1 : - refform=re.sub(r'[\u0300\u0301\u0302\030c]','',token.value) + refform=re.sub(r'[\u0300\u0301\u0302\030c]','',token.value.lower()) # refform=re.sub(r'[\u0300\u0301\u0302\030c]','',wlist[0]) for g in glosslist: thisform=re.sub(r'[\u0300\u0301\u0302\030c]','',g.form) - # print("refform, thisform",refform,thisform) + print("refform, thisform",refform,thisform) if thisform==refform: glistsame.append(g) else: From be01c1e878db18b61579e18d069e587d10fa26d0 Mon Sep 17 00:00:00 2001 From: corpus-team Date: Tue, 30 Sep 2025 20:29:55 +0200 Subject: [PATCH 5/7] removed print statement oops --- daba/mparser.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/daba/mparser.py b/daba/mparser.py index c804ed7..1c0d5a0 100644 --- a/daba/mparser.py +++ b/daba/mparser.py @@ -637,7 +637,7 @@ def iscapitalized(s): # refform=re.sub(r'[\u0300\u0301\u0302\030c]','',wlist[0]) for g in glosslist: thisform=re.sub(r'[\u0300\u0301\u0302\030c]','',g.form) - print("refform, thisform",refform,thisform) + #print("refform, thisform",refform,thisform) if thisform==refform: glistsame.append(g) else: From 8804e04ff671b920192c4f20e28e9462964f7301 Mon Sep 17 00:00:00 2001 From: corpus-team Date: Tue, 30 Sep 2025 21:26:44 +0200 Subject: [PATCH 6/7] gdisamb: dis file should not have ".old" --- daba/gdisamb.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/daba/gdisamb.py b/daba/gdisamb.py index a1be0b3..c21c980 100755 --- a/daba/gdisamb.py +++ b/daba/gdisamb.py @@ -3174,7 +3174,9 @@ def OnSaveAs(self, e): if not self.fileopened: self.NoFileError(e) else: - xfilename = ''.join(['.'.join([get_basename(self.infile), 'dis']), os.path.extsep, 'html']) + basefilename=get_basename(self.infile) + if basefilename.endswith(".old"): basefilename=basefilename[:-4] + xfilename = ''.join(['.'.join([basefilename, 'dis']), os.path.extsep, 'html']) dlg = wx.FileDialog(self, "Choose a file", os.path.dirname(self.infile), xfilename, "*.html", wx.FD_SAVE) if dlg.ShowModal() == wx.ID_OK: From 983a1a18cf47197672d7a9bfe96260fc11dc4384 Mon Sep 17 00:00:00 2001 From: corpus-team Date: Sat, 13 Dec 2025 11:17:25 +0100 Subject: [PATCH 7/7] intelligent word split/join (some) --- daba/gdisamb.py | 90 ++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 77 insertions(+), 13 deletions(-) diff --git a/daba/gdisamb.py b/daba/gdisamb.py index c21c980..dfd5dd3 100755 --- a/daba/gdisamb.py +++ b/daba/gdisamb.py @@ -281,7 +281,7 @@ def __init__(self, processor): @property def nmatches(self): - """property holding the number of mathces""" + """property holding the number of matches""" return len(self.matches) def _searcher(self, searchstr, searchtype, startsent): @@ -1604,6 +1604,8 @@ def OnTokenJoin(self, evt): snum = evt.snum startfirst, lenfirst = self.charspans[evt.first] startsecond, lensecond = self.charspans[evt.second] + # print("OnTokenJoin evt.first,second:",startfirst, startsecond) + #AttributeError: print("OnTokenJoin evt.index:",evt.index) first = self.text[startfirst:startfirst+lenfirst] second = self.text[startsecond:startsecond+lensecond] self.UpdateText(startfirst, startsecond+lensecond, u''.join((first, second)), snum) @@ -2116,6 +2118,17 @@ def CreateGlossButtons(self): annotsizer.Add(abox) self.annotlist.SetSizer(annotsizer) self.annotlist.Layout() + #NOT WORKING #self.annotlist.sb=wx.ScrollBar(self, wx.ID_ANY) + #NOT WORKING self.annotlist.sb=wx.ScrollBar() + """#NOT WORKING + self.sb=wx.ScrollBar(self.annotlist, wx.ID_ANY) + self.sb.Layout() + thumbpos=self.sb.GetThumbPosition() + print("thumbpos",thumbpos) + self.sb.SetThumbPosition(40) + thumbpos=self.sb.GetThumbPosition() + print("new thumbpos",thumbpos) + """ return tokenbuttons def ShowSent(self, sentannot): @@ -2717,15 +2730,41 @@ def OnTokenSplit(self, evt): snum, toknum = evt.index sent = self.processor.glosses[snum] savedtoken = sent.glosslist[toknum] + # print("savedtoken.token",savedtoken.token) + # print("vars(savedtoken)",vars(savedtoken)) + savedforms=[] # added JJM 14/10/2025 to build split tokens from saved morphemes if possible + # print("OnTokenSplit - selected= ") + # for g in savedtoken.glosslist: + # print(" g.gloss",g.gloss) # also tried gloss(g) and gloss(savedtoken.glosslist) + # which gloss is selected? I have not found how to... + # if word is ambiguous it would be better to start with the selected gloss instead of gloss 0 (first gloss in list) + for g in savedtoken.glosslist[0].morphemes: + #print("g.form",g.form) + savedforms.append(re.sub(r'[\u0301\u0300\u0302\u030c]','',g.form)) + savedformstuple=tuple(savedforms) edit = TokenEdit('split', toknum, toknum+len(evt.result), [savedtoken]) self.undolist[snum].append(edit) del sent.selectlist[toknum] del sent.glosslist[toknum] - shift = 0 - for token in evt.result: - sent.selectlist.insert(toknum+shift, []) - sent.glosslist.insert(toknum+shift, daba.formats.WordToken([Gloss(token, (), '', ())], token, '-1')) - shift = shift+1 + # print("savedformstuple",savedformstuple) + # print("evt.result",evt.result) + if len(savedtoken.glosslist)==1 and savedformstuple==evt.result: + # print("égalité des tuples") + shift=0 + for g in savedtoken.glosslist[0].morphemes: + # print("shift,g.form",shift,g.form) + sent.selectlist.insert(toknum+shift, []) + token=evt.result[shift] + sent.glosslist.insert(toknum+shift, daba.formats.WordToken([Gloss(g.form, g.ps, g.gloss, g.morphemes)], token, '-1')) + # equivalent to: sent.glosslist.insert(toknum+shift, daba.formats.WordToken([g], token, '-1')) + shift = shift+1 + else: + shift = 0 + for token in evt.result: + # print("shift,token",shift,token) + sent.selectlist.insert(toknum+shift, []) + sent.glosslist.insert(toknum+shift, daba.formats.WordToken([Gloss(token, (), '', ())], token, '-1')) + shift = shift+1 self.processor.dirty = True wx.CallAfter(self.ShowSent, snum) @@ -2736,19 +2775,38 @@ def OnTokenJoin(self, evt): second = evt.second sent = self.processor.glosses[snum] savedtokens = [2][first:second+1] + # print("OnTokenJoin - savedtokens",savedtokens) edit = TokenEdit('join', first, second, savedtokens) self.undolist[snum].append(edit) firsttoken = sent.glosslist[first] nexttoken = sent.glosslist[second] + # print("OnTokenJoin - firsttoken nexttoken",firsttoken, nexttoken) + # print("vars(firsttoken):",vars(firsttoken)) + # print("firsttoken.glosslist[0]",firsttoken.glosslist[0]) + # print("firsttoken.glosslist[0].ps",firsttoken.glosslist[0].ps) # FIXME: will break on non-word tokens - newform = firsttoken.token + nexttoken.token - newtoken = daba.formats.WordToken([Gloss(newform, (), '', ())], newform, '-1') + #newform = firsttoken.token + nexttoken.token + if len(firsttoken.glosslist)==1 and len(nexttoken.glosslist)==1 : + newform = firsttoken.glosslist[0].form + nexttoken.token + newtokenform = firsttoken.token + nexttoken.token + #original code: newtoken = daba.formats.WordToken([Gloss(newform, (), '', ())], newform, '-1') + # new code: JJM 13/10/2025 + pstuple=(firsttoken.glosslist[0].ps+nexttoken.glosslist[0].ps) + uniqueps = tuple(j for i, j in enumerate(pstuple) if pstuple.index(j) == i) + #not needed? joinedgloss='.'.join((firsttoken.glosslist[0].gloss,nexttoken.glosslist[0].gloss)) + newtoken = daba.formats.WordToken([Gloss(newform, uniqueps, '', (firsttoken.glosslist[0],nexttoken.glosslist[0]))], newtokenform, '-1') + else: + newform = firsttoken.token + nexttoken.token + newtoken = daba.formats.WordToken([Gloss(newform, (), '', ())], newform, '-1') sent.selectlist[first] = [] del sent.selectlist[second] sent.glosslist[first] = newtoken del sent.glosslist[second] self.processor.dirty = True + #NOT WORKING thumbpos=self.sentpanel.annotlist.sb.GetThumbPosition() wx.CallAfter(self.ShowSent, snum) + #NOT WORKING self.sentpanel.annotlist.sb.SetThumbPosition(thumbpos) + #NOT WORKING print("positionné à thumbpos", thumbpos) def OnTokenEdit(self, evt): """edit tokens in the processor glosses data, update UI""" @@ -2884,14 +2942,20 @@ def OnLocaldictSave(self, evt): # this will add an entry if token!=form so that future erroneous token may yield correct form lookup. print(xnotone,"<>",formlookup," : essayer de l'indexer?") if formlookup not in self.localdict: + print(formlookup,"not in self.localdict") self.localdict[formlookup] = gloss - print("¹OnLocaldictSave - also created localdict[",formlookup,"] =",gloss) + print("¹OnLocaldictSave - this session only! - also created localdict[",formlookup,"] =",gloss) + +# 04/10/2025 - toujours pas la bonne solution? elif gloss not in self.localdict[formlookup]: + print(gloss,"not in localdict[",formlookup,"]") self.localdict[formlookup] = gloss - print("ajout de localdict["+formlookup+"] =",gloss) - print("récap de localdict["+formlookup+"] =") - for g in self.localdict[formlookup]: - print("-",str(g)) + print("²OnLocaldictSave - this session only! - added localdict["+formlookup+"] =",gloss) + + print("récap de localdict["+formlookup+"] =") + for g in self.localdict[formlookup]: + print("-",str(g)) +# jan 2025: # if formlookup not in self.localdict: # self.localdict[formlookup] = gloss # print("¹OnLocaldictSave - also created localdict[",formlookup,"] =",gloss)