# ============================================================================ # # A COMMENTARY ON FORMATTING OF MAJORITY OF RULES # (read: a wannabe FORMATTING GUIDELINES) # ============================================================================ # # Lines do not exceed 79 characters. # # Rule layout # =========== # # There are two alternative layouts for writing a rule. An example for the # first one (of course the body of the rule won't be commented out): # # # INPUT: ^терістік/тер/терістік/ # # терістік$ ^бетіндегі/бет/ # # бет/$ # # OUTPUT: [0]^терістік/терістік/терістік$ # ^бетіндегі/бет...$ # REMOVE V IF # (0 PRE-N) # (1C N) # ; # # any additional comments here (if necessary) # # An abstract example of the second layout: # # # An explanation of what the rule does (if it's not obvious from # # code!), a name or any other comment that clarifies its purpose # SELECT ABC IF # (0 DEF) # (1 GHI) # ; # ## A sentence with the [0]form the rule was written for. # ## (!) A corner-case-sentence: the rule mispredicted on it initially # ## but was modified accordingly (additional constraints etc.); or the # ## rule still mispredicts on it, but this kind of sentences aren't # ## that frequent. (Alternatively, place the corner-case sentence on # ## the same line as the additional constraint). # # The first layout is more appropriate when you come up with a rule inductively # (i.e. you see a sentence badly translated because of errors in disambiguation # and want to fix it), the second one when you arrived at it deductively. E.g: # # # Participle appears immediately before a verb (verbal adverb doesn't) # REMOVE Participle IF # (NOT 1C V OR Vaux) # ; # ## Есік [0]ашып, ол үйге кірді. # # In context of apertium-kaz, the difference between a participle and a verbal # adverb is that participle immediately precedes a verb and verbal adverb # doesn't. We know this even without looking at tests, but it is a good idea # to back up the rule with a test case. # # Sometimes you can't fully disambiguate a form with only one rule. In that # case, several rules dealing with the same thing can be grouped together: # # # What the rule does? # SELECT ABC IF # (0 DEF) # (1 KLM) # ; # REMOVE XYZ IF # (0 DEF) # (1 NOP) # (2 QRS) # ; # ## Example sentences for both of the rules. # ## Another example sentence. # # Where a rule is placed? # ======================= # Any context involved? # / \ # YES NO # / \ # Disambiguates a particular wordform? "Heuristics" section # / \ at the end of the file # YES NO # / \ # "Wordform/lemma specific rules" Readings of # section different POS? # / \ # YES NO # / \ # "POS marking" \ # at the beginning \ # Corresponding section # ("Verbs", "Adjectives" etc.) # ============================ # # END OF FORMATTING GUIDELINES # # ============================ # # ========== # # Delimiters # # ========== # DELIMITERS = "<.>" "" "" "<...>" "<¶>"; SOFT-DELIMITERS = "<,>" ; SUBREADINGS = LTR ; # Alternate, left-to-right (main reading on the left) # ============= # # Tags and sets # # ============= # SETS LIST BOS = (>>>) ; LIST EOS = (<<<) ; # First-level/Parts-of-speech tags # ================================ LIST A = adj ; LIST Adv = adv ; LIST Pron = prn ; LIST Pron-Pers = (prn pers) ; LIST N = n ; LIST IJ = ij ; LIST Prop = np ; LIST V = v ; LIST Vaux = vaux ; LIST Cop = cop ; LIST Det = det ; LIST CC = cnjcoo ; LIST CS = cnjsub ; LIST Interj = ij ; LIST Pres = pres ; LIST Num = num ; LIST Post = post ; LIST Postadv = postadv ; LIST FinalClitic = mod_ass mod_emo mod qst emph ; LIST Cm = cm ; LIST Adv = adv ; LIST Rquot = rquot ; LIST Excl = "!" ; # POS sub-categories # ================== LIST Pers = pers ; LIST Interr = itg ; LIST Dem = dem ; LIST IV = iv ; LIST TV = tv ; LIST Pass = pass ; LIST Caus = caus ; LIST Coop = coop ; # "Syntactic" tags # ================ LIST Advl = advl ; LIST Attr = attr ; LIST Subst = subst ; LIST N-LIKE = subst n np prn ; # Actually, see NOMINAL # Morphosyntactic properties # if you find yourself embracing the same tag in # ========================== # brackets over and over again, you may want to # add it here LIST Sg = sg ; LIST Pl = pl ; LIST Nom = nom ; LIST Gen = gen ; LIST Dat = dat ; LIST Acc = acc ; LIST Abl = abl ; LIST Loc = loc ; LIST Ins = ins ; LIST P1 = p1 ; LIST P2 = p2 ; LIST P3 = p3 ; LIST PersonalPossessives = px1sg px2sg px3sp px1pl px2pl ; LIST Imper = imp ; # Specific lexemes # ========================== LIST Year = "жылғы" "жыл" ; LIST Colon = ":" ; LIST Qayda = "қайда" ; # Noun sets # ============== SET NGDAALI = Nom | Dat | Dat | Acc | Abl | Loc | Ins ; # Adjective sets # ============== LIST A/Advl = (adj advl) ; LIST A/Subst = (adj subst nom) ; SET A1-Nom = A/Advl | A/Subst ; # Verb sets # ========= LIST FiniteVerb = pres aor past ifi ifi_evid fut fut_plan imp opt pih ; LIST V-P3 = (v p3) (vaux p3) (cop p3) ; LIST Gerund = ger ger_ppot ger_past ger_perf ger_impf ger_abs ger_obs ; LIST Ger-obs = ger_obs ; SET V-NotGerund = V - Gerund ; LIST Participle = prc_perf prc_impf prc_cond prc_vol prc_plan ; LIST Prc-vol = prc_vol ; LIST VerbalAdverb = gna_perf gna_cond gna_until gna_after ; LIST VerbalAdjective = gpr_past gpr_fut gpr_pot gpr_impf ; LIST Gpr-pot = gpr_pot ; LIST FourAuxiliaries = "тұр" "жүр" "отыр" "жат" ; LIST V-IV = (v iv) ; LIST V-TV = (v tv) ; LIST Err/Orth = err_orth ; # All possible word categories # ============================ SET WORD = N | V | A | Post | Postadv | Pron | Det | Adv | CC | CS | Interj | Num | ("\?") ; SET PRE-N = A | Det | Postadv | Num | (n gen) | (prn gen) | CC | (attr) ; SET MARK = Cm | ("\\") | ("\;") | ("\(") ; SET WORDMARK = WORD | MARK ; SET N-MOD = A | Det | Num | (n gen) | (prn gen) ; SET ADJ-MOD = Postadv | Adv ; SET NPMARK = N-MOD | ADJ-MOD ; SET NOMINAL = N | Prop | Pron | Subst | Gerund ; # Categories which cannot be part of a noun phrase # ================================================ SET NPNH = WORDMARK - PRE-N ; SET NPNHA = WORDMARK - PRE-N - Adv ; SET NOT-ADV = WORDMARK - Adv ; # Barriers # ======== SET S-BOUNDARY = CS | Interr | EOS ; # ======= # SECTION # # ======= # REMOVE SUB:1 Err/Orth ; REMOVE Err/Orth ; # ======= # SECTION # (COPULAS) # ======= # # # "<кейін>" SELECT Post IF (-1 Abl) ; ## 23. Айгүл санап біткеннен кейін айналасына қарады. # INPUT: ^оның/ол/он/ # ол$ ^үйі/үй$ # OUTPUT: [0]^ол$ ^үй$ SELECT Pron-Pers IF (0 ("<оның>"i)) (1 (n px3sp nom)) ; REMOVE SUB:1 Cop IF (NOT 1 EOS OR MARK OR ("де")) ; REMOVE SUB:1 Cop IF (-1 BOS OR MARK) ## Headings or enumerations (NOT 1 EOS) ; ## ## Example: handle 'орында' in ## Қазақстанның басқа қалаларымен салыстырғанда тұрғыны жөнінен 3-ші орында ( Алматы мен Астанадан кейін ) . SELECT SUB:1 Cop IF (1 (lpar)) (2* (rpar) BARRIER EOS) (NOT -1 Colon) ; # SELECT SUB:1 Cop IF (1 MARK) (2*/1 Cop BARRIER EOS) (NOT 0 Interj) ## Дұрыс, оның мысығы бар. (NOT 0 FiniteVerb) ## 74 ... барлығы 53 ел [0]қатысты. (NOT 2 N) ; ## Жоқ, Айгүлдің күшігі [0]жоқ, оның мысығы [0]бар. SELECT SUB:1 Cop IF (1 EOS) (NOT 0 V OR Vaux) ; # ======= # SECTION # ======= # # POS marking # =========== REMOVE A IF (0 ("қол"i)) (1 ("жу"i)) ; "<қандай>" REMOVE N ; SELECT N IF (0 ("сурет"i)) (-1 (adj advl) OR Det OR A) ; #INPUT: ^Сіздің/сіз$ ^атыңыз/ат/ат/ат/ат$ ^кім/кім/кім/кім/кім$^?/?$^./.$ #OUPUT: ^Сіздің/сіз$ ^атыңыз/ат$ ^кім/кім$^?/?$^./.$ SELECT N IF (0 ("ат"i)) (-1 (prn pers)) ; # This rule is too general, breaks a few things.Corrected #INPUT: ^әдемі/әдемі #^жер/же/жер/жер/же/же/же/жер/жер/жер/жер$ #OUPUT: ^әдемі/әдемі #^жер/жер$ SELECT N IF (0 ("жер")) (-1 A) ; # INPUT: for examle: "ата келді" translated as "grandfather come" SELECT N IF (0 ("ата")) ( (NOT -1 N) OR (NOT -1 BOS)) ( (NOT -1 (Nacc)) OR (NOT -1 BOS)) ; # INPUT: for examle: "Мен жазуым мүмкін" translated as "I may write" # SELECT V IF # (-1 Pron-Pers) # (NOT 0 ("сол")) #; # # this rule fails several times when tested against puupankki corpus #INPUT: ^ластай/лас/лас/ласта$ ^аласың/ал/ал/ала/ала$ #OUTPUT:^ластай/ласта$ ^аласың/ал SELECT Participle IF (1 Vaux) ; # INPUT: "жүз теңге" translated as "hundred coins", екі жүз адам "two handred people" #"адамдардың жүзі" translated a "face of people" # ^жүз/жүз/жүз/жүз/жүз/жүз/жүз/жүз/жүз/жүз$^ SELECT Num IF ((0 Num) OR (-1 Num)) (1 N) (NOT 0 ("бірге")) (NOT -1 A) (NOT 0 ("бір")) (NOT 0 ("ол")) (NOT 0 ("біреу")) (NOT 0 ("үшін")) ; # # exceptions are added to handle e.g. 'мысығымен бірге үйде отыр', 'ол бір дыбысты естиді', 'үлкен бір ағаш' # "Ол қорғаушы." REMOVE SUB:1 FinalClitic IF (1 EOS OR MARK OR S-BOUNDARY) ; # "Ол қорғаушы." REMOVE SUB:2 FinalClitic IF (1 EOS OR MARK OR S-BOUNDARY) ; ## Балықшы бұл ақшаға үй тұрғызды. SELECT FiniteVerb IF (1 EOS OR ("де"i)) # FIXME s/.*/SentenceBoundary/ (NOT 0 ("шығар"i) OR ("бар"i)) # FIXME a better way? (NOT 0/1 Cop) ; ## (!) 40 . Мүмкін бұл Азамат [0]шығар? ## (!) 13 . Жоқ, Айгүлдің күшігі жоқ, оның мысығы [0]бар. ## Мағынасы төңкеріліп [0]кетті деп ойламағаным үшін ғафу етіңіз. # SELECT Interj OR (cnjadv) IF (-1 BOS) (1 Cm) ; ## "Мысалы, ежелгі заманның өзінде Арал теңізі көп елдерге мәлім болған." # INPUT: ^Мен/Мен/Мен/Мен$ # ^қазақпын/қазақ$ # OUTPUT: [0]^Мен/Мен/Мен$ # ^қазақпын/қазақ$ REMOVE Post IF (NOT -1 NOMINAL) (NOT -1 ("\*.+"r)) ; # # An adjective ending with -LI is ambiguous with: 1) a noun or adjective in # accusative, and 2) with a verb in form. REMOVE Acc IF (0 (n acc) OR (adj subst nom)) (0 A) (NOT 1 V) ; REMOVE V IF (0 A) (0 (ifi)) (NOT 1 EOS OR Cm) ; SELECT A IF (-1 ("аса"i) OR ("өте"i)) (0 A) (0 (n acc)) ; "<атты>" SELECT A IF (1 N) ; "<топырақты>" SELECT A IF (1 N) ; ## 53 . Еуро-2012 туралы [0]қызықты статистикаға көз салыңыз. ## 91 . Өйткені, <...> Әл-Истахри келтірген мәліметтер аса [0]құнды саналады. ## 184 . Үшінші қабатта «Тәуелсіз Қазақстандағы жаңа Түркістан» [0]атты экспозициялар қойылған. # Proper noun or not? SELECT Prop IF (0 ("[:upper:]+[:lower:]*"r)) (NOT -1 BOS) (NOT 0 ("Кеңес")) (NOT 0 ("Отан")) (NOT 0 ("сен")) ; ## 108. Өйткені бүгінгі [0]Арал деген атау сол XVII ғасырдан бергі жерге берілген. SELECT Prop IF (0 Prop) (0 ("<[:upper:][:upper:]+>"r)) ; ## [0]АЗАМАТ ҚАЙДА? SELECT Prop IF (1 ("мен") + Post) (2 Prop) ; ## [0]Азамат пен Айгүл бақшада. ### : for "Алма мен Аян"-cnjcoo SELECT CC IF (-1 N)(0 CC)(1 N); ### : for "қысқа ай"-adj SELECT A IF (0 N + Dat)(1 N ); # SELECT Pron IF (0C Det OR Pron) (1C Adv) ; ## 44 . [0]Ол енді ол дыбысты анығырақ ести бастады. # INPUT: ^терістік/тер/терістік/ # терістік$ ^бетіндегі/бет/ # бет/$ # OUTPUT: [0]^терістік/терістік/терістік$ # ^бетіндегі/бет...$ REMOVE V IF (0 PRE-N) (1C N) (NOT 0 Gerund) (NOT 0 VerbalAdjective) ; # # failed for a gerund 'өлшеу' in 'Радианның басқа да бұрышты өлшеу бірліктерімен арақатынасын мына формуламен сипатталады' => excluded gerunds and verbal adjectives in the rule # e.g., аумақта REMOVE Ger-obs IF (0 N) ; # e.g., қорғаушылар REMOVE Gpr-pot IF (0 N) ; # INPUT: ^бақша/бақша$ ^арқылы/арқылы/арқылы$ # OUTPUT: ^бақша$ [0]^арқылы$ REMOVE Adv IF (0 Post) (-1 N) (NOT 0 ("бірге"i)) # мысығымен бірге үйде # бақшада бірге ойнайды # бақша арқылы барамын (NOT 0 ("бұрын")) # Төстік бұрын ағалары бар екенін естіген жоқ екен . (NOT 1 A) ; #kaz-eng # INPUT: ^заңды/заң/заңды/заң+лы$ # INPUT: ^заңды/заң/заңды/заң+лы$ # REMOVE Sub:1 Post IF # (0 N) # (0 A) #; SELECT (cnjcoo) OR (cnjadv) IF (-1 BOS) (0 ("әлде")) ; # Determiners # =========== # FIXME removes determiner even when there is a noun 1 to the right # FIXED JNW 2017-08-12 REMOVE Det IF (0 Det OR Pron) # ADDED JNW 2017-08-11 (NOT 1 N OR Subst) (NEGATE 1 A LINK 1 N OR Subst) ; # 44 . Ол енді ол дыбысты анығырақ ести бастады. # (!) 34 . Ол Азаматтың қайда екенін білсе де айтқысы келген жоқ. # Nouns # ===== # REMOVE Attr IF (0 N OR Prop) (NOT 0 Loc) (NOT 1 N OR Prop) ; ## 176. Орталықта Түркістанның төл тарихына арналған музейлік [0]экспозиция жасақталған. ## (!) 184 . Үшінші қабатта «Тәуелсіз [0]Қазақстандағы жаңа Түркістан» атты экспозициялар қойылған. # Select attributive reading of the first noun of the II izafet construct # (as Tatar grammars call it) # SELECT Attr IF # (0C N OR Prop) # (1 N OR Prop OR Subst) # (1 (px3sp)) #; # Select attributive reading of the first noun of the II izafet construct # (as Tatar grammars call it) # SELECT Nom IF # (0C N OR Prop) # (1 N OR Prop OR Subst) # (1 (px3sp)) ; # Was: SELECT 'Attr' # # this rule didn't work for 'қазба' in: # Оған ежелгі қоныстарға жүргізілген археологиялық қазба жұмыстары кезінде табылған мәдениет мұралары дәлел бола алады. ## 111. Түркияның оңтүстік-шығысындағы [0]Газиантеп қаласында кеше болған жарылыстан қаза тапқандар саны 9-ға жетті. # If a former gerund or verbal adjective was lexicalized as a noun, select noun # SELECT N IF # (0 N) # (0 Gerund OR (gpr_pot)) #; # the rule contradicts with some of the analyzes in puupankki, which is considered to be 'gold' standard # ## professions, such as "оқушы"; -U gerunds , in theory other gerunds too SELECT Det IF (0 Det) (0 (gpr_ppot)) ; ## жетерлік has both readings, but we almost always want to translate it as det REMOVE PersonalPossessives IF (0 NOMINAL) (NOT 0 (gen)) (1C (px3sp)) ; ## only indefinite possessors can leave off the genitive suffix, and something possessed itself has to be definite, ## so: something possessed can only possess something else if it has gen case, ## so: px* with no gen cannot precede px3sp, so if that's one of the possible readings, you probably don't want it. ## 1929 ж. сырттай өлім жазасына кесілді. "<қысым>" REMOVE PersonalPossessives ; # Adjectives # ========== # select adverbial reading of adjectives if any verbal form except gerund follows # FIXME CHECK it might be a gerund as well SELECT Advl OR Adv IF (1C V-NotGerund) #(NOT 1C Participle) (NOT 1 ("бол")) (NOT 0 ("балама")) (NOT 1 ("де")) ; ## # example: in 'балама үйретейін' the 'балама' shouldn't be treated as adj.advl (equivalent), it should be n.px1sq.dat (to my son) # select adj+cop reading at the end of a sentence SELECT Sub:1 Cop IF (0C A1-Nom) (1 EOS OR MARK) ; REMOVE Subst IF # we want adj+cop reading here, not adj.subst+cop (0C A1-Nom) (1 EOS OR MARK) ; ## 19 . Ол еш нәрсені көріп тұрған [0]жоқ, ол санап жатыр. # REMOVE SUB:1 P3 IF (0/1 Cop) (0/1 P1) ; ## "Біз [0]қуаныштымыз." REMOVE A IF (0 Subst) (0 Pron) (0 NGDAALI) ; ## "[0]түгелімен." # Postpositions # ============= # "<қатар>" SELECT Post IF (-1 Pron + Ins) ; ## 174 . Орталық сонымен [0]қатар оқушыларға тәрбие беруде де маңызды рөл атқарады. ## 148 . Ол АҚШ үкіметін WikiLeaks сайтын қудалауын тоқтатуға шақырып, ## өзін ресейлік Pussy Riot панк тобымен және New York Times басылымымен [0]қатар қойды. # "<қарай>" SELECT Post IF (-1 Dat) ; ## # "<қарағанда>" SELECT Post IF (-1 Dat) ; ## # "<қарамастан>" SELECT Post IF (-1 Dat) ; ## # "<дейін>" SELECT Post IF (-1 Dat) ; ## # "<бері>" SELECT Post IF (-1 Abl) ; ## # бірге is an adverb, since dropping it results in grammatically correct phrase # # "<бірге>" SELECT Post IF # (-1 Ins) #; ## # "<қоса>" SELECT Post IF (-1 Dat) ; ## # Verbs # ===== # REMOVE Participle IF (NOT 1C V OR Vaux) ; ## # vs. REMOVE (prc_cond) IF (NOT 1 ("бол") + V) ; ## 34 . Ол Азаматтың қайда екенін [0]білсе де айтқысы келген жоқ. # SELECT Participle IF (0C Participle OR VerbalAdverb) (NOT 0C (prc_cond) OR (gna_cond)) (1 Vaux) ; ## 16 . Азамат ескі үлкен бір ағашқа қарай қатты [?]жүгіріп бара жатыр, ол сол ## ағаштың артына Айгүлден [0]жасырынып жатыр. # REMOVE Vaux IF (NOT -1 Participle) ; SELECT Vaux IF (-1C Participle) (NOT 1 Vaux) ; ## 187 . Біздің дәуірімізден 1 миллион жыл бұрын өмір сүрген "тік жүретін адамнан" [0]бастап, өз замандастарына дейінгі ## кезеңдерді қамтитын, ... орталықтың экспозициясы негізгі сегіз ірі бөлімнен тұрады. # REMOVE Vaux IF # (0 Vaux OR V) # (1 Vaux) #; # # counterexample: 'таба алмай жатыр', the word 'алмай' should be # Imperative or not? # ------------------ # is more common, so let's set it as default # Rules for selecting imperative reading of these three (if any) must be placed # before this rule SELECT (vaux p3) IF (-1 (prc_perf) OR (prc_plan) OR (prc_impf)) (0 ("<жүр>") OR ("<тұр>") OR ("<отыр>")) ; ## 15. Олардың анасы мысығымен бірге үйде, ол терезеден Азамат пен Айгүлдің ## ойнағанына қарап [0]тұр. ## 36 . Әлі де болса Азаматты табуға әрекет етіп [0]жүр. # 2p sg imperative form is a bare stem, so it is often ambigious with other # parts of speech REMOVE (imp) IF (NOT 1 EOS OR MARK OR ("де") OR Rquot OR (guio)) ; ## 96 . Ал оң жақ жағалауы батпақты, онда [0]қалың орман өскен. ## [0]Бар деп айттым мен оған. # ---------- # SELECT (gpr_past) IF (0 (ger_past) + Nom) (1C N) (NOT 0 Det) ; REMOVE IJ IF (0 A) (1 N) ; # e.g., дұрыс! () | дұрыс жерден () ## 172 . Сот арқылы немесе өзгеде осындай құзыреті бар мемлекеттік органдардың ## шешімі арқылы тәркіленген мұражайлық маңызы бар жинақтардың немесе ## [0]жекелеген заттардың есебінен; ################### TO BE DONE #################### # Deciding about the number of a verb or copula in the 3 person # Basic idea is to remove plural reading if subject is not in plural, # but there a lot of corner cases, which lead to lots of mispredictions. # So let's just delete plural reading for now. # # In Tatar, when the subject indicates the number, this LAR affix for the verbs # in 3 person is kind of optional too, so singular reading will work/is right for # the majority of cases. # # Selecting plural reading might be a more productive approach. REMOVE Pl IF (0 V OR Vaux OR Cop) (0 P3) ; ## # Thought that the above rule should cover copulas, seems that sometimes it doesn't REMOVE SUB:1 Pl IF (0/1 Cop) (0/1 P3) ; # Wordform/lemma-specific rules # Adding new stuff here is discouraged. # ============================= # Try to generalize, if possible, existing # rules. # "<өте>" SELECT Adv IF (1 A) ; ## Бірақ кеше _өте_ суық еді! # ugly and RISKY "<сол>" SELECT Det IF (NOT 1 ("қол"i) OR ("жақ"i)) ; ## (!) Күйеуім - сол жақтың қазағы. # "<аса>" SELECT Adv IF (1 A) ; ## "Әл-Истахри келтірген мәліметтер аса құнды саналады." # "<ал>" REMOVE CC IF (NOT -1 BOS OR Cm ) ; ## Бөлмеде шкаф бар, содан бiр кiтап ал. # "<жылы>" SELECT N IF (-1 Num) ; ## "<теңге>" SELECT N IF (0 A) ; # "<жылы>" SELECT N IF (-1 A) ; # "<қарасты>" SELECT A IF (-1 (dat)) ; ## 177. Орталыққа _қарасты_ Түркістан қаласында Н.Оңдасынов атындағы ## тарихи-мемориалдық мұражайы атты филиал жұмыс жасайды. # "<қайта>" SELECT Adv IF (1C V) ; ## 41 . Ол дыбыс қайта естіледі! ## Ол қайта алмайды. # "<енді>" SELECT Adv IF (1* Acc BARRIER EOS) (1* V BARRIER EOS) ; ## # "<көптеген>" SELECT Det IF (1 N + Pl) ; ## # ambigious with v.pass "<құрал>" SELECT N IF (-1 A OR (n attr)) ; ## # UGLY # "сый" is certainly not in the following example, # I don't think that сый is ever used "<сый>" SELECT N ; ## 171. Жеке және заңды тұлғалардан _сый_ немесе мұра ретінде қабылданған заттар ## есебінен. # imperative of "ісу" ("to swell") - just like "<сый>" above sounds odd, # but let's try to deal with it in a less ugly way "<іс>" SELECT N IF (-1 A) ; ## 178. ...тәрбиелік мәні бар іс-шараларды бірге ұйымдастыру... # FIXME: could be achieved with a more general rule I think "<көрме>" SELECT N IF (1 ("зал"i)) ; ## 181. Ғимарат 3 қабаттан, 5 көрме залынан, конференция залынан, ## қолөнершілердің шеберханасы... # SELECT N IF (0 ("же"i) + (gpr_fut)) (0 ("жер"i) + N) ; ## 24 . Ол "Азамат қай [0]жерге кетті? Оны көрдіңдер ме?" деп іздеп жатыр. # "<қарайды>" SELECT ("қара") IF (-1 Dat) ; ## 30 . Айгүл терезеде тұрған анасына қарайды. # SELECT CC IF (0 ("сондай-ақ"i)) (-1 BOS OR Cm) ; ## 87 . Сондай-ақ, Арал теңізінің көлемі жайлы, Арал теңізі жайлы ұғымдар сонау ## ерте дүние әдебиеттерінде де кездеседі. # SELECT N IF (0 ("құрама"i)) (-1 PRE-N) ; ## 76 . Қазақстандық құрама «А» тобында соңғы орында қалып қойды. # SELECT N IF (0 ("қор")) (-1 N) ; ## 169. Музей [0]қоры Қазақстан Республикасы Мәдениет және ақпарат министрінің... # SELECT A IF (0 ("құрама")) (-1 (np top)) ; ## 69. Франция құрамасының бұрынғы ойыншысы Мишель Платини... # "<жинағы>" SELECT N IF (-1 N + Pl) ; ## 165. ...тарихи жәдігерлер жинағы арқылы көрсету. ## Қазақстан заңдарының жинағы # "<Ертең>" SELECT Adv ; "<ертең>" SELECT Adv IF (1 V) ; ## Ертең келесің бе? ## Ертең Елбасы Нұрсұлтан Назарбаев Қазақстанның 2050 жылға дейінгі даму бағдарламасын жариялайды. ## Оны ертең еститін боласыздар. # SELECT N IF (0 ("сыра"i)) (1 ("іш") + V) ; ## Шелекпен сыра ішемін. # да SELECT SUB:1 Postadv IF (0 (gna_cond)) (NOT 0 (cnjadv)) ; ## 34 . Ол Азаматтың қайда екенін [0]білсе+[0/1_or_-1]де айтқысы келген жоқ. # with SUBREADINGS = LTR ; option ## Ол Азаматтың қайла екенін [0]білсе+[0/1]де+[0/2_or_-1]мі? # with SUBREADINGS = LTR ; option ## Сөйтсе де осы оқыған балалар — ана оқымаған қазақ балаларынан үздік , озық . # SELECT Adv IF (0 ("бірге")) (NOT -1 Ins) (1 V) ; ## 6 . Азамат пен Айгүл ойнағанды жақсы көреді, олар әрдайым үлкен үйдің алдындағы бақшада [0]бірге ойнайды. ## (!) Ол Азаматпен бірге келді. # "<жасар>" SELECT A IF (-1 Num) ; ## 7 . Азамат алты жасар кішкентай бала. SELECT Pron IF (0 ("<ешкім>"i)) ; ## 70. Оның рекордын әзірше ешкім бұза алған жоқ. ################### TEMPORARY HACKS TO GET THE STORY TRANSLATED #################### ################### SOME SHOULD BE REWRITTEN LATER #################### REMOVE N IF (0 ("ақырын")); ## Айгүл оны _ақырын_ тыңдайды. SELECT A/Advl IF (0 ("ақырын")); ## Айгүл оны _ақырын_ тыңдайды. REMOVE N IF (0 ("жылы")) (NOT -1 N OR Num) ; #! Ауа райы бүгін әбден жақсы, ^жылы/жыл/жылы/жылы. ############################################################################### REMOVE (pass) IF (0 ("қырыл")); ## жасушалардың қырылуы "<жаппай>" SELECT A IF (1 N) ; ## Қытай мамандары ауыл тұрғындарының қалаға жаппай ағылуын тоқтататын жаңа # саясат жүргізуге шақырып отыр. # "<бір>" SELECT Det IF (-1C A) (1 N); ## Әхмәт тиз генә иске зур _бер_ агачка йөгерә. ## Әхмәт акрын гына иске зур _бер_ агачка йөгерә. # Must be placed before "SELECT Det IF (1* NPMARK BARRIER N OR MARK) ;" "<бар>" REMOVE Det IF (1 ("енді"i)) (2 Rquot) ; ## # Себебі Түрік Әуежолдары сынды бір серігіміз бар енді» деді. # "<бар>" SELECT V IF (-1 Dat) ; "<бар>" SELECT A IF (-1 (px3sp)) ; "<бар>" SELECT Det IF (1* NPMARK BARRIER N OR MARK) ; "<бар>" REMOVE Det IF (1 S-BOUNDARY OR MARK) ; ## 172. Сот арқылы немесе өзгеде осындай құзыреті _бар_ мемлекеттік органдардың ## шешімі арқылы тәркіленген мұражайлық маңызы бар жинақтардың немесе жекелеген ## заттардың есебінен. ## Бар җирдән карый, әмма Әхмәтне таба алмый. ## Акча бармы? Бар. ## Акча бармы? Бар, ләкин бик аз! # басым recognized as noun бас, select ADJ form "<басым>" SELECT A IF (1 (px3sp)) ; ## Олардың басым бөлігі – 2011 жылы жұмыс іздеп, # тұрғыны recognized as noun тұрғы should select тұрғын before қаза "<тұрғыны>" SELECT ("тұрғын") IF (1 ("қаза")) ; ## 2011 жылы 16 желтоқсанда 16 тұрғыны қаза тапқан # V-Iп FourAuxiliaries-GAн жоқ-COP SELECT (gpr_past) IF (-1 (prc_perf)) (0 FourAuxiliaries) (1 ("жоқ")) ; "<жоқ>" SELECT SUB:1 Cop IF (-2 (prc_perf)) (-1 FourAuxiliaries) ; "<жоқ>" REMOVE Subst IF (-2 (prc_perf)) (-1 FourAuxiliaries) ; ## 19 . Ол еш нәрсені көріп тұрған жоқ, ол санап жатыр. # "<керек>" SELECT A ; ## 45 . Бұл Азамат болу керек! # Сен бардың ба? REMOVE (gen) IF (0 (ifi p2)) (-1* (prn nom)) ; # INPUT: ^Мен/Мен/Мен/Мен$ # ^қазақпын/қазақ$ # OUTPUT: [0]^Мен$ # ^қазақ$ SELECT Pron-Pers IF (0 ("<Мен>")) (-1 BOS) ; #kaz-eng SELECT Pron-Pers IF (0 ("<онда>"i)) (1 N) ; # INPUT: ^онымен/он/ол$ # OUTPUT: [0]^ол$ SELECT Pron-Pers IF (0 ("<онымен>"i)) (NOT -1 (Pron-Pers)) ; #kaz-eng # INPUT: ^Ол/ол/ол/ол$ # ^дәрігер/дәрігер/дәрігер/дәрігер+ # е/дәрігер$^./.$ # OUTPUT: ^Ол/ол/ол/ол$ # [0]^дәрігер/дәрігер$^./.$ # SELECT SUB:1 Sg IF # (-1 ("<Ол>"i) OR ("<Олар>"i)) # (0/1 Cop) # (0/1 P3) #; #kaz-eng # FIXME this rule is unnecessary because of the next rule # INPUT: ^Ол/ол/ол/ол$ # ^әдемі/әдемі/әдемі/әдемі$ # ^қыз/қыз/қыз/қыз/ # қыз/қыз$^./.$ # OUTPUT: ^Ол/ол/ол/ол$ # ^әдемі/әдемі/әдемі/әдемі$ # [0]^қыз/қыз$^./.$ #SELECT SUB:1 Sg IF # (-1* ("<Ол>"i) OR ("<Олар>"i)) # (0/1 Cop) # (0/1 P3) #; #kaz-eng # FIXME doesn't work yet SELECT N IF (0 ("<үстінде>"i)OR ("<астында>" i)OR ("<артында>" i)) (-1 N) ; SELECT SUB:1 Pl IF (-1 ("<Біз>"i)) (0/1 Cop) (0/1 P1) ; #Біз бақыттымыз # this rule doesn't work for 'бақшада' in # Азамат пен Айгүл бақшада . # # REMOVE SUB:1 Pl IF # (NOT -1* ("<Ол>"i) OR ("<Олар>"i)) #; SELECT Cop IF (-1 ("<керек>"i)) (0 Cop) ; REMOVE Adv IF (0 ("<емес>"i)) ; #"<мен>" SELECT Post IF # (-1 NOMINAL) # (1 NOMINAL) #; #for choosing "астында" as n.px3sp.loc #SELECT N IF # (-1 N) # (0 (n.*.loc) OR Adv) # #; # two verbs қайт SELECT V-IV IF (0 ("қайт")) (-1* Dat BARRIER N-LIKE) ; ## Сол жерге қайтып барасың ба? SELECT V-TV IF (0 ("қайт")) (-1* Acc BARRIER N-LIKE) ; ## Соны қайтып қыласың? SELECT V-IV IF (0 ("істе")) (NOT -1 NOMINAL) ; # INPUT: ^іш/іш/ішкі$ # кел/кел/кел/кел$ # OUTPUT: ^іш/іш$ # ккел/кел/кел$ SELECT Prc-vol IF (1 ("кел")) ; ; # INPUT: ^Орал/орал/орал/Орал/Орал/ора/Орал/Орал/орал/орал/Орал/Орал/Орал/Орал/Орал/Орал$ #^тауы/тауы/тауы/тау/тауы/тауы/тау/тау$^ # OUTPUT: ^Орал/Орал #тау SELECT (np top attr) IF (1 ("тауы")) ; ; ############################################################################### # FMT: #Орыс мәдениетінің қалыптасу ерекшеліктері негізінен төмендегі факторларға тығыз байланысты болды. REMOVE Acc IF (1C V-IV) ; REMOVE VerbalAdjective IF (1 Cm) ; "<қатар>" SELECT Post IF (-1C N + Ins) ; REMOVE Num + Subst IF (0C Num) (1C Num LINK 1 N) ; "<барды>" SELECT V IF (-1 Dat) ; # this rule didn't work for 'қазба' in: # Оған ежелгі қоныстарға жүргізілген археологиялық қазба жұмыстары кезінде табылған мәдениет мұралары дәлел бола алады. #REMOVE N + Attr IF # (1 PersonalPossessives) # (NOT -1* Gen OR Nom BARRIER (*) - N) ; REMOVE A + Subst + $$NGDAALI IF (0 N + $$NGDAALI) (NOT 0 ("бар")) ; # could be 'bar' as a drinking place VS 'бар' as 'there is/are' REMOVE Num + Subst IF (-1C Num) (1C N) ; REMOVE VerbalAdjective + Subst IF (-1C Gen) (1C N) ; REMOVE A + Subst IF (0C A - Subst OR A + Subst ) (NOT 0 ("бар")) (NOT 0 ("жоқ")) ; # example: Кірді , шықты , ілді , қайтты , түбегейлеп қуған бала да жоқ . # 'жоқ' should be adj.subst here REMOVE Num + Subst IF (0C Num - Subst OR Num + Subst) ; REMOVE Num + Subst IF (1C Year) ; REMOVE Participle IF (NOT 1* Vaux) ; #morph disambiquashion example кеңсе-(1-adj, 2-noun) #SELECT A OR Adv + Attr IF # (1 N); #SELECT Adv IF (1 V); #it didn't work for 'не' in 'Ал Азамат ағаштың жанында не істеп жатыр ?' #morph disambiquashion example еңбектен-(1-verb, 2-noun) SELECT V IF (0 Pron) (1 N + Abl); SELECT Pron IF (0 ("не")) (1 ("үшін")) ; #Адамдар as people SELECT N IF (0 ("<адамдар>"i)) ; # 100 адам SELECT N IF (-1 Num) (0 ("адам")) ; #су ішетін SELECT N IF (0 ("<су>"i))(1 V) ; #бұл су SELECT N IF (-1 Dem) (0 ("<су>"i)) ; #менің үйім SELECT (n px1sg) IF (-1 (prn pers p1 sg gen)) ; #құрылғымен қауіпсіз. #INPUT: <қауіпсіз>" "қауіп" n nom"е" cop aor p2 frm sg # "қауіпсіз" adj "е" cop aor p3 sg #OUTPUT: "қауіпсіз" adj "е" cop aor p3 sg SELECT A IF (-1 N) (0 ("<қауіпсіз>"i)) ; SELECT Imper IF (1* Excl) ; REMOVE Imper IF (NOT 1* Excl) (0C Imper OR Pres) ; REMOVE Coop IF (0 IV - Coop) ; REMOVE N IF (-1 Dat) (0 Dat) (0C N OR V) ; SELECT Vaux IF (-1 Participle) ; SELECT Adv IF (0 Qayda) ; # қала тұрғындарының санын көбейтті. SELECT N IF (0 ("қала")) (1 ("тұрғын")) ; # бойынша is almost always a postposition, not n.px3sp.equ SELECT Post IF (0 ("бойынша")) (-1 NOMINAL) ; # Толқын ұзындығы, керісінше, энергияға кері пропорционал болады. # Pretty much always goning to be the adverb reading # - especially good for translation SELECT Adv IF (0 ("керісінше")) ; # The ablative reading of жаңадан doesn't really make sense? REMOVE Abl IF (0 ("жаңадан")) ;