File size: 7,111 Bytes
21baa2f | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 |
'''
Created on ٠٢/٠٧/٢٠١٠
@Created by: Muhammad Altabba
'''
from ...Morphology.Cliticlization.CliticsGrammers import CliticsGrammers;
from ...Morphology.Cliticlization.ProcliticGrammer import ProcliticGrammer;
from ....Models.Lexicon.LettersConstants import DiacriticsConstants;
from ....Models.Tagging.POSTags.ParticlePOS import ParticlePOSConstants;
from ....Models.Tagging.POSTags.POS import POSConstants;
from ....Models.Tagging.POSTags.CliticlessPOS import CliticlessPOSConstants;
from ....Models.Tagging.POSTags.VerbalPOS import VerbalPOSConstants;
from ....Models.Tagging.POSTags.NominalPOS import NominalPOSConstants;
class ProcliticsGrammers(CliticsGrammers):
"""
# PyUML: Do not remove this line! # XMI_ID:_hUUgWo34Ed-gg8GOK1TmhA
"""
'''
classdocs
'''
GrammersDict = {};
def __init__(self):
'''
Constructor
'''
# ProcliticGrammer parameters:
# Particle SubClass
# nextMainClass = POSConstants.MainClass.all_Cases, \
# nextCaseAndMood = CliticlessPOSConstants.CaseAndMood.all_Cases, \
# nextNounSubClass = NominalPOSConstants.SubClass.all_Cases, \
# nextVerbAspect = VerbalPOSConstants.Aspect.all_Cases, \
# nextDefiniteness = NominalPOSConstants.Definiteness.all_Cases, \
# comesAsLast = False):
#العطف
conjunction = ProcliticGrammer(ParticlePOSConstants.SubClass.Conjunction);
#الاستئناف
resumption = ProcliticGrammer(ParticlePOSConstants.SubClass.Resumption);
#الاستفهام
interrogative = ProcliticGrammer(ParticlePOSConstants.SubClass.Interrogative, \
POSConstants.MainClass.all_Cases, \
CliticlessPOSConstants.CaseAndMood.all_Cases, \
NominalPOSConstants.SubClass.all_Cases, \
VerbalPOSConstants.Aspect.Perfective + VerbalPOSConstants.Aspect.Imperfective\
);
#جر
preposition = ProcliticGrammer(ParticlePOSConstants.SubClass.Preposition, \
POSConstants.MainClass.Noun, \
CliticlessPOSConstants.CaseAndMood.GenitiveOrJussive, \
NominalPOSConstants.SubClass.all_Cases);
#قسم - القسم يدخل فقط على الاسم الظاهر - الاسم الظاهر هو كل اسم عدا الضمير
jurative = ProcliticGrammer(ParticlePOSConstants.SubClass.Jurative, \
POSConstants.MainClass.Noun, \
CliticlessPOSConstants.CaseAndMood.GenitiveOrJussive, \
NominalPOSConstants.SubClass.all_Cases - NominalPOSConstants.SubClass.Nominative_Pronoun - NominalPOSConstants.SubClass.Accusative_or_Genitive_Pronoun , \
VerbalPOSConstants.Aspect.all_Cases, \
NominalPOSConstants.Definiteness.all_Cases,
True);
#نصب الفعل المضارع
accusative = ProcliticGrammer(ParticlePOSConstants.SubClass.Accusative, \
POSConstants.MainClass.Verb, \
CliticlessPOSConstants.CaseAndMood.AccusativeOrSubjunctive, \
NominalPOSConstants.SubClass.all_Cases, \
VerbalPOSConstants.Aspect.Imperfective);
#لام الأمر
imperative = ProcliticGrammer(ParticlePOSConstants.SubClass.Imperative, \
POSConstants.MainClass.Verb, \
CliticlessPOSConstants.CaseAndMood.GenitiveOrJussive, \
NominalPOSConstants.SubClass.all_Cases, \
VerbalPOSConstants.Aspect.Imperfective);
#لام الإبتداء وتأتي للتوكيد
emphasisStarter = ProcliticGrammer(ParticlePOSConstants.SubClass.EmphasisStarter, \
POSConstants.MainClass.Noun + POSConstants.MainClass.Verb, \
CliticlessPOSConstants.CaseAndMood.all_Cases, \
NominalPOSConstants.SubClass.all_Cases, \
VerbalPOSConstants.Aspect.Imperfective+VerbalPOSConstants.Aspect.Perfective);
#سين المستقبل القريب
forthcomingFuturity = ProcliticGrammer(ParticlePOSConstants.SubClass.ForthcomingFuturity, \
POSConstants.MainClass.Verb, \
CliticlessPOSConstants.CaseAndMood.NominativeOrIndicative, \
NominalPOSConstants.SubClass.all_Cases, \
VerbalPOSConstants.Aspect.Imperfective);
#ال التعريف
definite = ProcliticGrammer(ParticlePOSConstants.SubClass.Appendix, \
POSConstants.MainClass.Noun, \
CliticlessPOSConstants.CaseAndMood.all_Cases, \
NominalPOSConstants.SubClass.all_Cases, \
VerbalPOSConstants.Aspect.all_Cases,\
NominalPOSConstants.Definiteness.Definite_by_Itself,\
True);
#حرف زائد - كالواو في بعض الأحيان
appendix = ProcliticGrammer(ParticlePOSConstants.SubClass.Appendix);
self.GrammersDict = {};
self.GrammersDict['ب'] = {};
self.GrammersDict['ب'][DiacriticsConstants.Kasra] = [preposition, jurative];
self.GrammersDict['ك'] = {};
self.GrammersDict['ك'][DiacriticsConstants.Fatha] = [preposition];
self.GrammersDict['ل'] = {};
self.GrammersDict['ل'][DiacriticsConstants.Kasra] = [preposition, imperative];
self.GrammersDict['ل'][DiacriticsConstants.Fatha] = [emphasisStarter, accusative];
self.GrammersDict['س'] = {};
self.GrammersDict['س'][DiacriticsConstants.Fatha] = [forthcomingFuturity];
self.GrammersDict['و'] = {};
self.GrammersDict['و'][DiacriticsConstants.Fatha] = [conjunction, preposition, jurative, appendix];
self.GrammersDict['ف'] = {};
self.GrammersDict['ف'][DiacriticsConstants.Fatha] = [conjunction, resumption];
self.GrammersDict['أ'] = {};
self.GrammersDict['أ'][DiacriticsConstants.Fatha] = [interrogative];
self.GrammersDict['ال'] = {};
self.GrammersDict['ال'][DiacriticsConstants.Fatha, DiacriticsConstants.Sukoon] = [definite];
|