qutuf / SourceCode /Models /Lexicon /RootAndPatterns /VoweledVerbalPattern.py
Boulbaba's picture
Upload 210 files
21baa2f verified
'''
Created on ูขูจโ€/ู ูคโ€/ูขู ูกู 
@Created by: Muhammad Altabba
'''
from ...Lexicon.RootAndPatterns.Root import *;
from ...Lexicon.RootAndPatterns.VoweledPattern import *;
from ...Tagging.POSTags.VerbalPOS import *;
class VoweledVerbalPattern(VoweledPattern):
"""
# PyUML: Do not remove this line! # XMI_ID:_qz4WZ435Ed-gg8GOK1TmhA
"""
'''
classdocs
'''
def __init__(self, id, voweledForm, canonicForm):
'''
Constructor
'''
self.ID = id;
self.VoweledForm = voweledForm;
self.CanonicForm = canonicForm;
self.POS = VerbalPOS();
self.POS.MainClass = VerbalPOSConstants.MainClass.Verb;
pass
def AssignFromAlKhalilDB(self, type, cas, ncg, aug, trans):
if type == "ู…ู…":
# "ูุนู„ ู…ุงุถ ู…ุจู†ูŠ ู„ู„ู…ุนู„ูˆู…"
self.POS.Aspect = VerbalPOSConstants.Aspect.Perfective;
self.POS.Activeness = VerbalPOSConstants.Activeness.Active;
elif type == "ู…ุฌ":
# "ูุนู„ ู…ุงุถ ู…ุจู†ูŠ ู„ู„ู…ุฌู‡ูˆู„"
self.POS.Aspect = VerbalPOSConstants.Aspect.Perfective;
self.POS.Activeness = VerbalPOSConstants.Activeness.Passive;
elif type == "ุถู…":
# "ูุนู„ ู…ุถุงุฑุน ู…ุจู†ูŠ ู„ู„ู…ุนู„ูˆู…"
self.POS.Aspect = VerbalPOSConstants.Aspect.Imperfective;
self.POS.Activeness = VerbalPOSConstants.Activeness.Active;
self.POS.Asserted = VerbalPOSConstants.Asserted.Unasserted;
elif type == "ุถุกู…":
# "ูุนู„ ู…ุถุงุฑุน ู…ุคูƒุฏ ู…ุจู†ูŠ ู„ู„ู…ุนู„ูˆู…"
self.POS.Aspect = VerbalPOSConstants.Aspect.Imperfective;
self.POS.Activeness = VerbalPOSConstants.Activeness.Active;
self.POS.Asserted = VerbalPOSConstants.Asserted.Asserted;
elif type == "ุถุฌ":
# "ูุนู„ ู…ุถุงุฑุน ู…ุจู†ูŠ ู„ู„ู…ุฌู‡ูˆู„"
self.POS.Aspect = VerbalPOSConstants.Aspect.Imperfective;
self.POS.Activeness = VerbalPOSConstants.Activeness.Passive;
self.POS.Asserted = VerbalPOSConstants.Asserted.Unasserted;
elif type == "ุถุกุฌ":
# "ูุนู„ ู…ุถุงุฑุน ู…ุคูƒุฏ ู…ุจู†ูŠ ู„ู„ู…ุฌู‡ูˆู„"
self.POS.Aspect = VerbalPOSConstants.Aspect.Imperfective;
self.POS.Activeness = VerbalPOSConstants.Activeness.Passive;
self.POS.Asserted = VerbalPOSConstants.Asserted.Asserted;
elif type == "ุฃ":
# "ูุนู„ ุฃู…ุฑ"
self.POS.Aspect = VerbalPOSConstants.Aspect.Imperative;
self.POS.Asserted = VerbalPOSConstants.Asserted.Unasserted;
elif type == "ุฃุก":
# "ูุนู„ ุฃู…ุฑ ู…ุคูƒุฏ"
self.POS.Aspect = VerbalPOSConstants.Aspect.Imperative;
self.POS.Asserted = VerbalPOSConstants.Asserted.Asserted;
elif type == "#":
# ุญู…ูŠุน ุงู„ุญุงู„ุงุช
self.POS.Aspect = VerbalPOSConstants.Aspect.all_Cases;
self.POS.Activeness = VerbalPOSConstants.Activeness.all_Cases;
self.POS.Asserted = VerbalPOSConstants.Asserted.all_Cases;
else:
raise Exception('This [type] for Verbal Pattern is unknown!, ['+str(type)+']');
if cas == "ุฑ":
# "ู…ุฑููˆุน"
self.POS.CaseAndMood = VerbalPOSConstants.CaseAndMood.NominativeOrIndicative;
elif cas == "ู†":
# "ู…ู†ุตูˆุจ"
self.POS.CaseAndMood = VerbalPOSConstants.CaseAndMood.AccusativeOrSubjunctive;
elif cas == "ุฌ":
# "ู…ุฌุฒูˆู…"
self.POS.CaseAndMood = VerbalPOSConstants.CaseAndMood.GenitiveOrJussive;
elif cas == "":
# ุญู…ูŠุน ุงู„ุญุงู„ุงุช
if(self.POS.Aspect == VerbalPOSConstants.Aspect.Imperative or \
self.POS.Aspect == VerbalPOSConstants.Aspect.Perfective):
self.POS.CaseAndMood = VerbalPOSConstants.CaseAndMood.Inapplicable;
else:
self.POS.CaseAndMood = VerbalPOSConstants.CaseAndMood.Unprocessed;
# elif cas == "#":
## ุญู…ูŠุน ุงู„ุญุงู„ุงุช
# self.POS.CaseAndMood = VerbalPOSConstants.CaseAndMood.all_Cases;
else:
raise Exception('This [cas] for Verbal Pattern is unknown!, ['+cas+']');
if ncg.isnumeric() or (ncg[0] == '-' and ncg[1:].isnumeric()):
ncg = int(ncg);
if ncg == 1:
# "ู…ุณู†ุฏ ุฅู„ู‰ ุงู„ู…ุชูƒู„ู… ุฃู†ุง"
self.POS.Number = VerbalPOSConstants.Number.Singular;
self.POS.Gender = VerbalPOSConstants.Gender.all_Cases;
self.POS.Person = VerbalPOSConstants.Person.First_Person;
elif ncg == 2:
# "ู…ุณู†ุฏ ุฅู„ู‰ ุงู„ู…ุชูƒู„ู…ูŠู† (ู†ุญู†)"
self.POS.Number = VerbalPOSConstants.Number.Plural;
self.POS.Gender = VerbalPOSConstants.Gender.all_Cases;
self.POS.Person = VerbalPOSConstants.Person.First_Person;
elif ncg == 3:
# "ู…ุณู†ุฏ ุฅู„ู‰ ุงู„ู…ุฎุงุทูŽุจ ุฃู†ุช"
self.POS.Number = VerbalPOSConstants.Number.Singular;
self.POS.Gender = VerbalPOSConstants.Gender.Masculine;
self.POS.Person = VerbalPOSConstants.Person.Second_Person;
elif ncg == 4:
# "ู…ุณู†ุฏ ุฅู„ู‰ ุงู„ู…ุฎุงุทุจุฉ (ุฃู†ุชู)"
self.POS.Number = VerbalPOSConstants.Number.Singular;
self.POS.Gender = VerbalPOSConstants.Gender.Feminine;
self.POS.Person = VerbalPOSConstants.Person.Second_Person;
elif ncg == 5:
# "ู…ุณู†ุฏ ุฅู„ู‰ ุงู„ู…ุฎุงุทูŽุจูŽูŠู† (ุฃู†ุชู…ุง)"
self.POS.Number = VerbalPOSConstants.Number.Dual;
self.POS.Gender = VerbalPOSConstants.Gender.Masculine;
self.POS.Person = VerbalPOSConstants.Person.Second_Person;
elif ncg == 6:
# "ู…ุณู†ุฏ ุฅู„ู‰ ุงู„ู…ุฎุงุทุจูŠู† (ุฃู†ุชู…)"
self.POS.Number = VerbalPOSConstants.Number.Plural;
self.POS.Gender = VerbalPOSConstants.Gender.Masculine;
self.POS.Person = VerbalPOSConstants.Person.Second_Person;
elif ncg == 7:
# "ู…ุณู†ุฏ ุฅู„ู‰ ุงู„ู…ุฎุงุทูŽุจุงุช (ุฃู†ุชู†)"
self.POS.Number = VerbalPOSConstants.Number.Plural;
self.POS.Gender = VerbalPOSConstants.Gender.Feminine;
self.POS.Person = VerbalPOSConstants.Person.Second_Person;
elif ncg == 8:
# "ู…ุณู†ุฏ ุฅู„ู‰ ุงู„ุบุงุฆุจ (ู‡ูˆ)"
self.POS.Number = VerbalPOSConstants.Number.Singular;
self.POS.Gender = VerbalPOSConstants.Gender.Masculine;
self.POS.Person = VerbalPOSConstants.Person.Third_Person;
elif ncg == 9:
# "ู…ุณู†ุฏ ุฅู„ู‰ ุงู„ุบุงุฆุจุฉ (ู‡ูŠ)"
self.POS.Number = VerbalPOSConstants.Number.Singular;
self.POS.Gender = VerbalPOSConstants.Gender.Feminine;
self.POS.Person = VerbalPOSConstants.Person.Third_Person;
elif ncg == 10:
# "ู…ุณู†ุฏ ุฅู„ู‰ ุงู„ุบุงุฆุจูŽูŠู† (ู‡ู…ุง)"
self.POS.Number = VerbalPOSConstants.Number.Dual;
self.POS.Gender = VerbalPOSConstants.Gender.Masculine;
self.POS.Person = VerbalPOSConstants.Person.Third_Person;
elif ncg == 11:
# "ู…ุณู†ุฏ ุฅู„ู‰ ุงู„ุบุงุฆุจุชูŠู† (ู‡ู…ุง)"
self.POS.Number = VerbalPOSConstants.Number.Dual;
self.POS.Gender = VerbalPOSConstants.Gender.Feminine;
self.POS.Person = VerbalPOSConstants.Person.Third_Person;
elif ncg == 12:
# "ู…ุณู†ุฏ ุฅู„ู‰ ุงู„ุบุงุฆุจูŠู† (ู‡ู…)"
self.POS.Number = VerbalPOSConstants.Number.Plural;
self.POS.Gender = VerbalPOSConstants.Gender.Masculine;
self.POS.Person = VerbalPOSConstants.Person.Third_Person;
elif ncg == 13:
# "ู…ุณู†ุฏ ุฅู„ู‰ ุงู„ุบุงุฆุจุงุช (ู‡ู†)"
self.POS.Number = VerbalPOSConstants.Number.Singular;
self.POS.Gender = VerbalPOSConstants.Gender.Feminine;
self.POS.Person = VerbalPOSConstants.Person.Third_Person;
elif ncg == "#":
self.POS.Number = VerbalPOSConstants.Number.all_Cases;
self.POS.Gender = VerbalPOSConstants.Gender.all_Cases;
self.POS.Person = VerbalPOSConstants.CaseAndMood.all_Cases;
else:
raise Exception('This [ncg] for Verbal Pattern is unknown!, ['+str(ncg)+']');
# ุงู„ู…ุฌุฑู‘ุฏ ูˆุงู„ู…ุฒูŠุฏ (aug):
if (aug == "ุฌุฑ"):
# "ุฌุฑ" => "ู…ุฌุฑุฏ"
self.POS.IsAugmented = False;
elif (aug == "ุฒูŠ"):
# "ุฒูŠ" => "ู…ุฒูŠุฏ"
self.POS.IsAugmented = True;
elif (aug == "#"):
self.POS.IsAugmented = None;
else:
raise Exception('This [aug] for Verbal Pattern is unknown!, ['+str(aug)+']');
# ุงู„ู„ุฒูˆู… ูˆุงู„ุชุนุฏูŠ (trans):
if (trans == "ู„"):
# "ู„" => "ู„ุงุฒู…"
self.POS.Transitive = VerbalPOSConstants.Transitive.Intransitive;
elif (trans == "ู…"):
# "ู…" => "ู…ุชุนุฏ"
self.POS.Transitive = 0;
self.POS.Transitive += VerbalPOSConstants.Transitive.Transitive_for_1;
self.POS.Transitive += VerbalPOSConstants.Transitive.Transitive_for_2;
self.POS.Transitive += VerbalPOSConstants.Transitive.Transitive_for_3;
elif (trans == "ูƒ"):
# "ูƒ" => "ู„ุงุฒู… ูˆู…ุชุนุฏ"
self.POS.Transitive = VerbalPOSConstants.Transitive.all_Cases;
else:
raise Exception('This [trans] for Verbal Pattern is unknown!, ['+str(trans)+']');
self.POS.Perfectness = VerbalPOSConstants.Perfectness.Unprocessed;
pass