qutuf / SourceCode /Models /Lexicon /RootAndPatterns /VoweledNominalPattern.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 VoweledPattern;
from ...Tagging.POSTags.NominalPOS import NominalPOSConstants, NominalPOS;
class VoweledNominalPattern:
"""
# PyUML: Do not remove this line! # XMI_ID:_qz4WI435Ed-gg8GOK1TmhA
"""
'''
classdocs
'''
def __init__(self, id, voweledForm, canonicForm):
'''
Constructor
'''
self.ID = id;
self.VoweledForm = voweledForm;
self.CanonicForm = canonicForm;
self.POS = NominalPOS();
self.POS.MainClass = NominalPOSConstants.MainClass.Noun;
pass
def AssignFromAlKhalilDB(self, type, cas, ncg):
if type == "":
# "غير معالج"
self.POS.SubClass = NominalPOSConstants.SubClass.Unprocessed;
elif type == "فا":
# "اسم فاعل"
self.POS.SubClass = NominalPOSConstants.SubClass.Active_Participle;
elif type == "مف" :
# "اسم مفعول"
self.POS.SubClass = NominalPOSConstants.SubClass.Passive_Participle;
elif type == "مفا":
# "مبالغة اسم الفاعل"
self.POS.SubClass = NominalPOSConstants.SubClass.Exaggeration_Active_Participle;
elif type == "آ":
# "اسم آلة"
self.POS.SubClass = NominalPOSConstants.SubClass.Instrumental_Noun;
elif type == "زمك":
# "اسم زمان ومكان"
self.POS.SubClass = NominalPOSConstants.SubClass.Noun_of_Place;
self.POS.SubClass += NominalPOSConstants.SubClass.Noun_of_Time;
elif type == "فض" :
# "اسم تفضيل"
self.POS.SubClass = NominalPOSConstants.SubClass.Elative_Noun;
elif type == "وش":
# "صفة مشبهة"
self.POS.SubClass = NominalPOSConstants.SubClass.Assimilate_Adjective;
elif type == "صأ":
# "مصدر أصلي"
self.POS.SubClass = NominalPOSConstants.SubClass.Gerund;
elif type == "صم":
# "مصدر ميمي"
self.POS.SubClass = NominalPOSConstants.SubClass.Meem_Gerund;
elif type == "صه":
# "مصدر هيئة"
self.POS.SubClass = NominalPOSConstants.SubClass.Quality_Gerund;
elif type == "صر":
# "مصدر مرة"
self.POS.SubClass = NominalPOSConstants.SubClass.Nomen_Vicis;
elif type == "جا":
# "اسم جامد"
self.POS.SubClass = NominalPOSConstants.SubClass.Indeclinable_Noun;
elif type == "#":
self.POS.SubClass = NominalPOSConstants.SubClass.all_Cases;
# حميع الحالات
else:
raise Exception('This [type] for Nominal Pattern id: ('+str(self.ID)+') is unknown!, ['+type+']');
if cas == "":
# غير معالج
self.POS.Definiteness = NominalPOSConstants.Definiteness.Unprocessed;
elif cas == "إض":
# معرّف Definite
self.POS.Definiteness = NominalPOSConstants.Definiteness.Definite_by_Itself + \
NominalPOSConstants.Definiteness.Definite_by_Another;
elif cas == "نك":
# نكرة Indefinite
self.POS.Definiteness = NominalPOSConstants.Definiteness.Indefinite;
elif cas == "#":
# حميع الحالات
self.POS.Definiteness = NominalPOSConstants.Definiteness.all_Cases;
else:
raise Exception('This [cas] for Nominal Pattern is unknown!, ['+cas+']');
if ncg.isnumeric() or (ncg[0] == '-' and ncg[1:].isnumeric()):
ncg = int(ncg);
if ncg == 0:
# 0 => "مفرد مذكر"
self.POS.Number = NominalPOSConstants.Number.Singular;
self.POS.Gender = NominalPOSConstants.Gender.Masculine;
self.POS.CaseAndMood = NominalPOSConstants.CaseAndMood.all_Cases;
elif ncg == -1:
# -1 => "مفرد مؤنث"
self.POS.Number = NominalPOSConstants.Number.Singular;
self.POS.Gender = NominalPOSConstants.Gender.Feminine;
self.POS.CaseAndMood = NominalPOSConstants.CaseAndMood.all_Cases;
elif ncg == -2:
# -2 => "جمع مذكر"
self.POS.Number = NominalPOSConstants.Number.Plural;
self.POS.Gender = NominalPOSConstants.Gender.Masculine;
self.POS.CaseAndMood = NominalPOSConstants.CaseAndMood.all_Cases;
elif ncg == -3:
# -3 => "جمع مؤنث"
self.POS.Number = NominalPOSConstants.Number.Plural;
self.POS.Gender = NominalPOSConstants.Gender.Feminine;
self.POS.CaseAndMood = NominalPOSConstants.CaseAndMood.all_Cases;
elif ncg == 1:
# 1 => "مفرد مذكر مرفوع"
self.POS.Number = NominalPOSConstants.Number.Singular;
self.POS.Gender = NominalPOSConstants.Gender.Masculine;
self.POS.CaseAndMood = NominalPOSConstants.CaseAndMood.NominativeOrIndicative;
elif ncg == 2:
# 2 => "مفرد مؤنث مرفوع"
self.POS.Number = NominalPOSConstants.Number.Singular;
self.POS.Gender = NominalPOSConstants.Gender.Feminine;
self.POS.CaseAndMood = NominalPOSConstants.CaseAndMood.NominativeOrIndicative;
elif ncg == 3:
# 3 => "مثنى مذكر مرفوع"
self.POS.Number = NominalPOSConstants.Number.Dual;
self.POS.Gender = NominalPOSConstants.Gender.Masculine;
self.POS.CaseAndMood = NominalPOSConstants.CaseAndMood.NominativeOrIndicative;
elif ncg == 4:
# 4 => "مثنى مؤنث مرفوع"
self.POS.Number = NominalPOSConstants.Number.Dual;
self.POS.Gender = NominalPOSConstants.Gender.Feminine;
self.POS.CaseAndMood = NominalPOSConstants.CaseAndMood.NominativeOrIndicative;
elif ncg == 5:
# 5 => "جمع مذكر مرفوع"
self.POS.Number = NominalPOSConstants.Number.Plural;
self.POS.Gender = NominalPOSConstants.Gender.Masculine;
self.POS.CaseAndMood = NominalPOSConstants.CaseAndMood.NominativeOrIndicative;
elif ncg == 6:
# 6 => "جمع مؤنث مرفوع"
self.POS.Number = NominalPOSConstants.Number.Plural;
self.POS.Gender = NominalPOSConstants.Gender.Feminine;
self.POS.CaseAndMood = NominalPOSConstants.CaseAndMood.NominativeOrIndicative;
elif ncg == 7:
# 7 => "مفرد مذكر منصوب"
self.POS.Number = NominalPOSConstants.Number.Singular;
self.POS.Gender = NominalPOSConstants.Gender.Masculine;
self.POS.CaseAndMood = NominalPOSConstants.CaseAndMood.AccusativeOrSubjunctive;
elif ncg == 8:
# 8 => "مفرد مؤنث منصوب"
self.POS.Number = NominalPOSConstants.Number.Singular;
self.POS.Gender = NominalPOSConstants.Gender.Feminine;
self.POS.CaseAndMood = NominalPOSConstants.CaseAndMood.AccusativeOrSubjunctive;
elif ncg == 9:
# 9 => "مثنى مذكر منصوب"
self.POS.Number = NominalPOSConstants.Number.Dual;
self.POS.Gender = NominalPOSConstants.Gender.Masculine;
self.POS.CaseAndMood = NominalPOSConstants.CaseAndMood.AccusativeOrSubjunctive;
elif ncg == 10:
# 10 => "مثنى مؤنث منصوب"
self.POS.Number = NominalPOSConstants.Number.Dual;
self.POS.Gender = NominalPOSConstants.Gender.Feminine;
self.POS.CaseAndMood = NominalPOSConstants.CaseAndMood.AccusativeOrSubjunctive;
elif ncg == 11:
# 11 => "جمع مذكر منصوب"
self.POS.Number = NominalPOSConstants.Number.Plural;
self.POS.Gender = NominalPOSConstants.Gender.Masculine;
self.POS.CaseAndMood = NominalPOSConstants.CaseAndMood.AccusativeOrSubjunctive;
elif ncg == 12:
# 12 => "جمع مؤنث منصوب"
self.POS.Number = NominalPOSConstants.Number.Plural;
self.POS.Gender = NominalPOSConstants.Gender.Feminine;
self.POS.CaseAndMood = NominalPOSConstants.CaseAndMood.AccusativeOrSubjunctive;
elif ncg == 13:
# 13 => "مفرد مذكر مجرور"
self.POS.Number = NominalPOSConstants.Number.Singular;
self.POS.Gender = NominalPOSConstants.Gender.Masculine;
self.POS.CaseAndMood = NominalPOSConstants.CaseAndMood.GenitiveOrJussive;
elif ncg == 14:
# 14 => "مفرد مؤنث مجرور"
self.POS.Number = NominalPOSConstants.Number.Singular;
self.POS.Gender = NominalPOSConstants.Gender.Feminine;
self.POS.CaseAndMood = NominalPOSConstants.CaseAndMood.GenitiveOrJussive;
elif ncg == 15:
# 15 => "مثنى مذكر مجرور"
self.POS.Number = NominalPOSConstants.Number.Dual;
self.POS.Gender = NominalPOSConstants.Gender.Masculine;
self.POS.CaseAndMood = NominalPOSConstants.CaseAndMood.GenitiveOrJussive;
elif ncg == 16:
# 16 => "مثنى مؤنث مجرور"
self.POS.Number = NominalPOSConstants.Number.Dual;
self.POS.Gender = NominalPOSConstants.Gender.Feminine;
self.POS.CaseAndMood = NominalPOSConstants.CaseAndMood.GenitiveOrJussive;
elif ncg == 17:
# 17 => "جمع مذكر مجرور"
self.POS.Number = NominalPOSConstants.Number.Plural;
self.POS.Gender = NominalPOSConstants.Gender.Masculine;
self.POS.CaseAndMood = NominalPOSConstants.CaseAndMood.GenitiveOrJussive;
elif ncg == 18:
# 18 => "جمع مؤنث مجرور"
self.POS.Number = NominalPOSConstants.Number.Plural;
self.POS.Gender = NominalPOSConstants.Gender.Feminine;
self.POS.CaseAndMood = NominalPOSConstants.CaseAndMood.GenitiveOrJussive;
elif ncg == "#":
self.POS.Number = NominalPOSConstants.Number.all_Cases;
self.POS.Gender = NominalPOSConstants.Gender.all_Cases;
self.POS.CaseAndMood = NominalPOSConstants.CaseAndMood.all_Cases;
else:
raise Exception('This [ncg] for Nominal Pattern is unknown!, ['+str(ncg)+']');
self.POS.Substantivness = NominalPOSConstants.Substantivness.Substantive;
pass