コード例 #1
0
        public static void RefreshVerbList(string verbpath, string valencePath)
        {
            BaseStrucDic = new Dictionary<string, List<BaseStructure>>();
            var verbValDic = new Dictionary<string, VerbPlusValency>();
            var reader = new StreamReader(verbpath);
            var newVerbReader = new StreamReader(valencePath);
            string sentence;
            var mainCatList = new List<List<string>>();
            while ((sentence = reader.ReadLine()) != null)
            {
                sentence = StringUtil.RefineAndFilterPersianWord(sentence);
                mainCatList.Add(sentence.Trim().Split("\t".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).ToList());
            }
            while ((sentence = newVerbReader.ReadLine()) != null)
            {
                sentence = StringUtil.RefineAndFilterPersianWord(sentence);
                var split = sentence.Split("\t".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
                string bonMazi = split[0];
                string bonMozare = split[1];
                string prefix = split[2];
                string nonVerbalElement = split[3];
                string preposition = split[4];

                foreach (List<string> list in mainCatList)
                {
                    if (bonMazi == list[2] && bonMozare == list[3] && prefix == list[5] && nonVerbalElement == list[4] && preposition == list[6])
                    {
                        string verbStr = prefix + "#" + bonMazi + "#" + bonMozare + "#" + nonVerbalElement + "#" + preposition;
                        if (prefix == "-")
                            verbStr = bonMazi + "#" + bonMozare + "#" + nonVerbalElement + "#" + preposition;
                        var newVerbPlusVal = new VerbPlusValency(verbStr, new List<ValencyFrame>());
                        if (!verbValDic.ContainsKey(verbStr))
                            verbValDic.Add(verbStr, newVerbPlusVal);

                        verbValDic[verbStr].AddNewFrame(GetValencyFrame(split[5]));

                        if (bonMazi == "کرد" && nonVerbalElement != "-")
                        {
                            string newVerbStr = prefix + "\t" + "\tنمود\tنما\t" +
                                         nonVerbalElement + "\t" + preposition;
                            if (prefix == "-")
                                newVerbStr = "\t" + "\tنمود\tنما\t" + nonVerbalElement + "\t" + preposition;
                            var newerVerbPlusVal = new VerbPlusValency(newVerbStr, new List<ValencyFrame>());
                            if (!verbValDic.ContainsKey(newVerbStr))
                                verbValDic.Add(newVerbStr, newerVerbPlusVal);
                            verbValDic[newVerbStr].AddNewFrame(GetValencyFrame(split[5]));
                        }

                    }
                }
            }
            int maxTedad = 0;
            foreach (var verbPlusValency in verbValDic)
            {
                int counter = 0;
                int sumTedad = 0;
                foreach (ValencyFrame valencyFrame in verbPlusValency.Value.ValencyFrameList)
                {
                    int tedad = 1;
                    foreach (ValencySlot valencySlot in valencyFrame.ValencyList)
                    {
                        int localTedad = 1;
                        if (valencySlot.ValencyType is Mafool)
                        {
                            var maf = (Mafool)valencySlot.ValencyType;
                            if (maf.RaState == "را+/-")
                                localTedad *= 2;
                        }
                        if (valencySlot.ValencyType is MafoolHarfeEzafeh)
                        {
                            var mafh = (MafoolHarfeEzafeh)valencySlot.ValencyType;
                            localTedad *= mafh.PrepositionList.Count;
                        }
                        if (valencySlot.ValencyType is MotammemQeidi)
                        {
                            var motammemQeidi = (MotammemQeidi)valencySlot.ValencyType;
                            localTedad *= motammemQeidi.AdverbialCase.Count;
                        }
                        if (valencySlot.ValencyType is BandMotammemi)
                        {
                            var band = (BandMotammemi)valencySlot.ValencyType;
                            if (band.Agreement == "مطابقت+/-")
                                localTedad *= 2;
                            if (band.Eltezami == "التزامی+/-")
                                localTedad *= 2;
                        }
                        if (valencySlot.Obligatory == false)
                            localTedad++;
                        tedad *= localTedad;
                    }
                    verbValDic[verbPlusValency.Key].ValencyFrameList[counter].NumOfDifferentFrames = tedad;
                    counter++;
                    sumTedad += tedad;
                }
                verbValDic[verbPlusValency.Key].NumOfBaseStructures = sumTedad;
                if (sumTedad > maxTedad)
                    maxTedad = sumTedad;
            }
            foreach (var verbPlusValency in verbValDic)
            {
                int sumTedad = verbValDic[verbPlusValency.Key].NumOfBaseStructures;
                var structures = new BaseStructure[sumTedad];
                for (int i = 0; i < sumTedad; i++)
                {
                    structures[i] = new BaseStructure();
                }

            }
            var dic = new Dictionary<string, List<string>>();
            var basicBaseStructure = new BaseStructure();
            foreach (var verbPlusValency in verbValDic)
            {
                if (!BaseStrucDic.ContainsKey(verbPlusValency.Key))
                    BaseStrucDic.Add(verbPlusValency.Key, new List<BaseStructure>());
                var baseStructureList = new List<BaseStructure>();
                baseStructureList.Add(basicBaseStructure.Clone());

                foreach (ValencyFrame valencyFrame in verbPlusValency.Value.ValencyFrameList)
                {
                    foreach (ValencySlot valencySlot in valencyFrame.ValencyList)
                    {
                        var newTempList = new List<BaseStructure>();
                        if (!valencySlot.Obligatory)
                        {
                            newTempList.AddRange(baseStructureList.Select(baseStructure => baseStructure.Clone()));
                        }
                        if (valencySlot.ValencyType is Fael)
                        {

                            foreach (BaseStructure baseStructure in baseStructureList)
                            {
                                var newBaseStruct1 = baseStructure.Clone();
                                newBaseStruct1.HasSubject = true;
                                newTempList.Add(newBaseStruct1);
                            }
                        }
                        else if (valencySlot.ValencyType is MafoolNeshanehEzafi)
                        {
                            foreach (BaseStructure baseStructure in baseStructureList)
                            {
                                var newBaseStruct1 = baseStructure.Clone();
                                newBaseStruct1.HasEzafehObject = true;
                                newTempList.Add(newBaseStruct1);
                            }
                        }
                        else if (valencySlot.ValencyType is MafoolDovvom)
                        {
                            foreach (BaseStructure baseStructure in baseStructureList)
                            {
                                var newBaseStruct1 = baseStructure.Clone();
                                newBaseStruct1.HasSecondObject = true;
                                newTempList.Add(newBaseStruct1);
                            }
                        }
                        else if (valencySlot.ValencyType is Mosnad)
                        {
                            foreach (BaseStructure baseStructure in baseStructureList)
                            {
                                var newBaseStruct1 = baseStructure.Clone();
                                newBaseStruct1.HasMosnad = true;
                                newTempList.Add(newBaseStruct1);
                            }
                        }
                        else if (valencySlot.ValencyType is Tameez)
                        {
                            foreach (BaseStructure baseStructure in baseStructureList)
                            {
                                var newBaseStruct1 = baseStructure.Clone();
                                newBaseStruct1.HasTammeez = true;
                                newTempList.Add(newBaseStruct1);
                            }
                        }
                        else if (valencySlot.ValencyType is Mafool)
                        {
                            var maf = (Mafool)valencySlot.ValencyType;
                            if (maf.RaState == "را+/-")
                            {
                                foreach (BaseStructure baseStructure in baseStructureList)
                                {
                                    var newBaseStruct1 = baseStructure.Clone();
                                    newBaseStruct1.HasObject = true;
                                    newBaseStruct1.HasRa = true;
                                    var newBaseStruct2 = baseStructure.Clone();
                                    newBaseStruct2.HasObject = true;
                                    newBaseStruct2.HasRa = false;
                                    newTempList.Add(newBaseStruct1);
                                    newTempList.Add(newBaseStruct2);
                                }
                            }
                            else if (maf.RaState == "را+")
                            {
                                foreach (BaseStructure baseStructure in baseStructureList)
                                {
                                    var newBaseStruct1 = baseStructure.Clone();
                                    newBaseStruct1.HasObject = true;
                                    newBaseStruct1.HasRa = true;
                                    newTempList.Add(newBaseStruct1);
                                }
                            }
                            else
                            {
                                foreach (BaseStructure baseStructure in baseStructureList)
                                {
                                    var newBaseStruct2 = baseStructure.Clone();
                                    newBaseStruct2.HasObject = true;
                                    newBaseStruct2.HasRa = false;
                                    newTempList.Add(newBaseStruct2);
                                }
                            }
                        }

                        else if (valencySlot.ValencyType is MafoolHarfeEzafeh)
                        {
                            var mafh = (MafoolHarfeEzafeh)valencySlot.ValencyType;
                            foreach (string preposition in mafh.PrepositionList)
                            {
                                foreach (BaseStructure baseStructure in baseStructureList)
                                {
                                    var newBaseStruct = baseStructure.Clone();
                                    if (newBaseStruct.HasPrepositionalObject1)
                                    {
                                        newBaseStruct.HasPrepositionalObject2 = true;
                                        newBaseStruct.PrepositionalObjectPreposition2 = preposition;
                                    }
                                    else
                                    {
                                        newBaseStruct.HasPrepositionalObject1 = true;
                                        newBaseStruct.PrepositionalObjectPreposition1 = preposition;
                                    }
                                    newTempList.Add(newBaseStruct);
                                }
                            }
                        }

                        else if (valencySlot.ValencyType is MotammemQeidi)
                        {
                            var motammemQeidi = (MotammemQeidi)valencySlot.ValencyType;
                            foreach (string advCase in motammemQeidi.AdverbialCase)
                            {
                                foreach (BaseStructure baseStructure in baseStructureList)
                                {
                                    var newBaseStruct = baseStructure.Clone();
                                    newBaseStruct.HasMoq = true;
                                    newBaseStruct.MoqType = advCase;
                                    newTempList.Add(newBaseStruct);
                                }
                            }
                        }

                        else if (valencySlot.ValencyType is BandMotammemi)
                        {
                            var band = (BandMotammemi)valencySlot.ValencyType;
                            if (band.Agreement == "مطابقت+/-" && band.Eltezami == "التزامی+/-")
                            {
                                foreach (BaseStructure baseStructure in baseStructureList)
                                {
                                    var baseStruct1 = baseStructure.Clone();
                                    baseStruct1.HasBandMotammemi = true;
                                    baseStruct1.HasBandMotemmemiAgreement = true;
                                    baseStruct1.HasBandMotemmemiEltezami = true;
                                    newTempList.Add(baseStruct1);
                                    var baseStruct2 = baseStruct1.Clone();
                                    baseStruct2.HasBandMotemmemiAgreement = false;
                                    newTempList.Add(baseStruct2);
                                    var baseStruct3 = baseStruct1.Clone();
                                    baseStruct3.HasBandMotemmemiEltezami = false;
                                    newTempList.Add(baseStruct3);
                                    var baseStruct4 = baseStruct1.Clone();
                                    baseStruct4.HasBandMotemmemiEltezami = false;
                                    baseStruct4.HasBandMotemmemiAgreement = false;
                                    newTempList.Add(baseStruct4);
                                }
                            }
                            else if (band.Agreement == "مطابقت+/-" && band.Eltezami == "التزامی+")
                            {
                                foreach (BaseStructure baseStructure in baseStructureList)
                                {
                                    var baseStruct1 = baseStructure.Clone();
                                    baseStruct1.HasBandMotammemi = true;
                                    baseStruct1.HasBandMotemmemiAgreement = true;
                                    baseStruct1.HasBandMotemmemiEltezami = true;
                                    newTempList.Add(baseStruct1);
                                    var baseStruct2 = baseStruct1.Clone();
                                    baseStruct2.HasBandMotemmemiAgreement = false;
                                    newTempList.Add(baseStruct2);
                                }
                            }
                            else if (band.Agreement == "مطابقت+/-" && band.Eltezami == "التزامی-")
                            {
                                foreach (BaseStructure baseStructure in baseStructureList)
                                {
                                    var baseStruct1 = baseStructure.Clone();
                                    baseStruct1.HasBandMotammemi = true;
                                    baseStruct1.HasBandMotemmemiAgreement = true;
                                    baseStruct1.HasBandMotemmemiEltezami = false;
                                    newTempList.Add(baseStruct1);
                                    var baseStruct2 = baseStruct1.Clone();
                                    baseStruct2.HasBandMotemmemiAgreement = false;
                                    newTempList.Add(baseStruct2);
                                }
                            }
                            else if (band.Agreement == "مطابقت+" && band.Eltezami == "التزامی+/-")
                            {
                                foreach (BaseStructure baseStructure in baseStructureList)
                                {
                                    var baseStruct1 = baseStructure.Clone();
                                    baseStruct1.HasBandMotammemi = true;
                                    baseStruct1.HasBandMotemmemiAgreement = true;
                                    baseStruct1.HasBandMotemmemiEltezami = true;
                                    newTempList.Add(baseStruct1);
                                    var baseStruct3 = baseStruct1.Clone();
                                    baseStruct3.HasBandMotemmemiEltezami = false;
                                    newTempList.Add(baseStruct3);
                                }
                            }
                            else if (band.Agreement == "مطابقت+" && band.Eltezami == "التزامی+")
                            {
                                foreach (BaseStructure baseStructure in baseStructureList)
                                {
                                    var baseStruct1 = baseStructure.Clone();
                                    baseStruct1.HasBandMotammemi = true;
                                    baseStruct1.HasBandMotemmemiAgreement = true;
                                    baseStruct1.HasBandMotemmemiEltezami = true;
                                    newTempList.Add(baseStruct1);
                                }
                            }
                            else if (band.Agreement == "مطابقت+" && band.Eltezami == "التزامی-")
                            {
                                foreach (BaseStructure baseStructure in baseStructureList)
                                {
                                    var baseStruct1 = baseStructure.Clone();
                                    baseStruct1.HasBandMotammemi = true;
                                    baseStruct1.HasBandMotemmemiAgreement = true;
                                    baseStruct1.HasBandMotemmemiEltezami = false;
                                    newTempList.Add(baseStruct1);
                                }
                            }
                            else if (band.Agreement == "مطابقت-" && band.Eltezami == "التزامی+/-")
                            {
                                foreach (BaseStructure baseStructure in baseStructureList)
                                {
                                    var baseStruct1 = baseStructure.Clone();
                                    baseStruct1.HasBandMotammemi = true;
                                    baseStruct1.HasBandMotemmemiAgreement = false;
                                    baseStruct1.HasBandMotemmemiEltezami = true;
                                    newTempList.Add(baseStruct1);
                                    var baseStruct3 = baseStruct1.Clone();
                                    baseStruct3.HasBandMotemmemiEltezami = false;
                                    newTempList.Add(baseStruct3);
                                }
                            }
                            else if (band.Agreement == "مطابقت-" && band.Eltezami == "التزامی+")
                            {
                                foreach (BaseStructure baseStructure in baseStructureList)
                                {
                                    var baseStruct1 = baseStructure.Clone();
                                    baseStruct1.HasBandMotammemi = true;
                                    baseStruct1.HasBandMotemmemiAgreement = false;
                                    baseStruct1.HasBandMotemmemiEltezami = true;
                                    newTempList.Add(baseStruct1);
                                }
                            }
                            else if (band.Agreement == "مطابقت-" && band.Eltezami == "التزامی-")
                            {
                                foreach (BaseStructure baseStructure in baseStructureList)
                                {
                                    var baseStruct4 = baseStructure.Clone();
                                    baseStruct4.HasBandMotemmemiEltezami = false;
                                    baseStruct4.HasBandMotemmemiAgreement = false;
                                    newTempList.Add(baseStruct4);
                                }
                            }
                        }
                        if (newTempList.Count > 0)
                            baseStructureList = newTempList;
                    }
                }
                foreach (BaseStructure baseStructure in baseStructureList)
                {
                    if (!BaseStrucDic[verbPlusValency.Key].Contains(baseStructure))
                        BaseStrucDic[verbPlusValency.Key].Add(baseStructure);
                }
            }
        }
コード例 #2
0
        public static void RefreshVerbList(string verbpath, string valencePath)
        {
            BaseStrucDic = new Dictionary <string, List <BaseStructure> >();
            var    verbValDic    = new Dictionary <string, VerbPlusValency>();
            var    reader        = new StreamReader(verbpath);
            var    newVerbReader = new StreamReader(valencePath);
            string sentence;
            var    mainCatList = new List <List <string> >();

            while ((sentence = reader.ReadLine()) != null)
            {
                sentence = StringUtil.RefineAndFilterPersianWord(sentence);
                mainCatList.Add(sentence.Trim().Split("\t".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).ToList());
            }
            while ((sentence = newVerbReader.ReadLine()) != null)
            {
                sentence = StringUtil.RefineAndFilterPersianWord(sentence);
                var    split            = sentence.Split("\t".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
                string bonMazi          = split[0];
                string bonMozare        = split[1];
                string prefix           = split[2];
                string nonVerbalElement = split[3];
                string preposition      = split[4];

                foreach (List <string> list in mainCatList)
                {
                    if (bonMazi == list[2] && bonMozare == list[3] && prefix == list[5] && nonVerbalElement == list[4] && preposition == list[6])
                    {
                        string verbStr = prefix + "#" + bonMazi + "#" + bonMozare + "#" + nonVerbalElement + "#" + preposition;
                        if (prefix == "-")
                        {
                            verbStr = bonMazi + "#" + bonMozare + "#" + nonVerbalElement + "#" + preposition;
                        }
                        var newVerbPlusVal = new VerbPlusValency(verbStr, new List <ValencyFrame>());
                        if (!verbValDic.ContainsKey(verbStr))
                        {
                            verbValDic.Add(verbStr, newVerbPlusVal);
                        }

                        verbValDic[verbStr].AddNewFrame(GetValencyFrame(split[5]));

                        if (bonMazi == "کرد" && nonVerbalElement != "-")
                        {
                            string newVerbStr = prefix + "\t" + "\tنمود\tنما\t" +
                                                nonVerbalElement + "\t" + preposition;
                            if (prefix == "-")
                            {
                                newVerbStr = "\t" + "\tنمود\tنما\t" + nonVerbalElement + "\t" + preposition;
                            }
                            var newerVerbPlusVal = new VerbPlusValency(newVerbStr, new List <ValencyFrame>());
                            if (!verbValDic.ContainsKey(newVerbStr))
                            {
                                verbValDic.Add(newVerbStr, newerVerbPlusVal);
                            }
                            verbValDic[newVerbStr].AddNewFrame(GetValencyFrame(split[5]));
                        }
                    }
                }
            }
            int maxTedad = 0;

            foreach (var verbPlusValency in verbValDic)
            {
                int counter  = 0;
                int sumTedad = 0;
                foreach (ValencyFrame valencyFrame in verbPlusValency.Value.ValencyFrameList)
                {
                    int tedad = 1;
                    foreach (ValencySlot valencySlot in valencyFrame.ValencyList)
                    {
                        int localTedad = 1;
                        if (valencySlot.ValencyType is Mafool)
                        {
                            var maf = (Mafool)valencySlot.ValencyType;
                            if (maf.RaState == "را+/-")
                            {
                                localTedad *= 2;
                            }
                        }
                        if (valencySlot.ValencyType is MafoolHarfeEzafeh)
                        {
                            var mafh = (MafoolHarfeEzafeh)valencySlot.ValencyType;
                            localTedad *= mafh.PrepositionList.Count;
                        }
                        if (valencySlot.ValencyType is MotammemQeidi)
                        {
                            var motammemQeidi = (MotammemQeidi)valencySlot.ValencyType;
                            localTedad *= motammemQeidi.AdverbialCase.Count;
                        }
                        if (valencySlot.ValencyType is BandMotammemi)
                        {
                            var band = (BandMotammemi)valencySlot.ValencyType;
                            if (band.Agreement == "مطابقت+/-")
                            {
                                localTedad *= 2;
                            }
                            if (band.Eltezami == "التزامی+/-")
                            {
                                localTedad *= 2;
                            }
                        }
                        if (valencySlot.Obligatory == false)
                        {
                            localTedad++;
                        }
                        tedad *= localTedad;
                    }
                    verbValDic[verbPlusValency.Key].ValencyFrameList[counter].NumOfDifferentFrames = tedad;
                    counter++;
                    sumTedad += tedad;
                }
                verbValDic[verbPlusValency.Key].NumOfBaseStructures = sumTedad;
                if (sumTedad > maxTedad)
                {
                    maxTedad = sumTedad;
                }
            }
            foreach (var verbPlusValency in verbValDic)
            {
                int sumTedad   = verbValDic[verbPlusValency.Key].NumOfBaseStructures;
                var structures = new BaseStructure[sumTedad];
                for (int i = 0; i < sumTedad; i++)
                {
                    structures[i] = new BaseStructure();
                }
            }
            var dic = new Dictionary <string, List <string> >();
            var basicBaseStructure = new BaseStructure();

            foreach (var verbPlusValency in verbValDic)
            {
                if (!BaseStrucDic.ContainsKey(verbPlusValency.Key))
                {
                    BaseStrucDic.Add(verbPlusValency.Key, new List <BaseStructure>());
                }
                var baseStructureList = new List <BaseStructure>();
                baseStructureList.Add(basicBaseStructure.Clone());

                foreach (ValencyFrame valencyFrame in verbPlusValency.Value.ValencyFrameList)
                {
                    foreach (ValencySlot valencySlot in valencyFrame.ValencyList)
                    {
                        var newTempList = new List <BaseStructure>();
                        if (!valencySlot.Obligatory)
                        {
                            newTempList.AddRange(baseStructureList.Select(baseStructure => baseStructure.Clone()));
                        }
                        if (valencySlot.ValencyType is Fael)
                        {
                            foreach (BaseStructure baseStructure in baseStructureList)
                            {
                                var newBaseStruct1 = baseStructure.Clone();
                                newBaseStruct1.HasSubject = true;
                                newTempList.Add(newBaseStruct1);
                            }
                        }
                        else if (valencySlot.ValencyType is MafoolNeshanehEzafi)
                        {
                            foreach (BaseStructure baseStructure in baseStructureList)
                            {
                                var newBaseStruct1 = baseStructure.Clone();
                                newBaseStruct1.HasEzafehObject = true;
                                newTempList.Add(newBaseStruct1);
                            }
                        }
                        else if (valencySlot.ValencyType is MafoolDovvom)
                        {
                            foreach (BaseStructure baseStructure in baseStructureList)
                            {
                                var newBaseStruct1 = baseStructure.Clone();
                                newBaseStruct1.HasSecondObject = true;
                                newTempList.Add(newBaseStruct1);
                            }
                        }
                        else if (valencySlot.ValencyType is Mosnad)
                        {
                            foreach (BaseStructure baseStructure in baseStructureList)
                            {
                                var newBaseStruct1 = baseStructure.Clone();
                                newBaseStruct1.HasMosnad = true;
                                newTempList.Add(newBaseStruct1);
                            }
                        }
                        else if (valencySlot.ValencyType is Tameez)
                        {
                            foreach (BaseStructure baseStructure in baseStructureList)
                            {
                                var newBaseStruct1 = baseStructure.Clone();
                                newBaseStruct1.HasTammeez = true;
                                newTempList.Add(newBaseStruct1);
                            }
                        }
                        else if (valencySlot.ValencyType is Mafool)
                        {
                            var maf = (Mafool)valencySlot.ValencyType;
                            if (maf.RaState == "را+/-")
                            {
                                foreach (BaseStructure baseStructure in baseStructureList)
                                {
                                    var newBaseStruct1 = baseStructure.Clone();
                                    newBaseStruct1.HasObject = true;
                                    newBaseStruct1.HasRa     = true;
                                    var newBaseStruct2 = baseStructure.Clone();
                                    newBaseStruct2.HasObject = true;
                                    newBaseStruct2.HasRa     = false;
                                    newTempList.Add(newBaseStruct1);
                                    newTempList.Add(newBaseStruct2);
                                }
                            }
                            else if (maf.RaState == "را+")
                            {
                                foreach (BaseStructure baseStructure in baseStructureList)
                                {
                                    var newBaseStruct1 = baseStructure.Clone();
                                    newBaseStruct1.HasObject = true;
                                    newBaseStruct1.HasRa     = true;
                                    newTempList.Add(newBaseStruct1);
                                }
                            }
                            else
                            {
                                foreach (BaseStructure baseStructure in baseStructureList)
                                {
                                    var newBaseStruct2 = baseStructure.Clone();
                                    newBaseStruct2.HasObject = true;
                                    newBaseStruct2.HasRa     = false;
                                    newTempList.Add(newBaseStruct2);
                                }
                            }
                        }

                        else if (valencySlot.ValencyType is MafoolHarfeEzafeh)
                        {
                            var mafh = (MafoolHarfeEzafeh)valencySlot.ValencyType;
                            foreach (string preposition in mafh.PrepositionList)
                            {
                                foreach (BaseStructure baseStructure in baseStructureList)
                                {
                                    var newBaseStruct = baseStructure.Clone();
                                    if (newBaseStruct.HasPrepositionalObject1)
                                    {
                                        newBaseStruct.HasPrepositionalObject2         = true;
                                        newBaseStruct.PrepositionalObjectPreposition2 = preposition;
                                    }
                                    else
                                    {
                                        newBaseStruct.HasPrepositionalObject1         = true;
                                        newBaseStruct.PrepositionalObjectPreposition1 = preposition;
                                    }
                                    newTempList.Add(newBaseStruct);
                                }
                            }
                        }

                        else if (valencySlot.ValencyType is MotammemQeidi)
                        {
                            var motammemQeidi = (MotammemQeidi)valencySlot.ValencyType;
                            foreach (string advCase in motammemQeidi.AdverbialCase)
                            {
                                foreach (BaseStructure baseStructure in baseStructureList)
                                {
                                    var newBaseStruct = baseStructure.Clone();
                                    newBaseStruct.HasMoq  = true;
                                    newBaseStruct.MoqType = advCase;
                                    newTempList.Add(newBaseStruct);
                                }
                            }
                        }

                        else if (valencySlot.ValencyType is BandMotammemi)
                        {
                            var band = (BandMotammemi)valencySlot.ValencyType;
                            if (band.Agreement == "مطابقت+/-" && band.Eltezami == "التزامی+/-")
                            {
                                foreach (BaseStructure baseStructure in baseStructureList)
                                {
                                    var baseStruct1 = baseStructure.Clone();
                                    baseStruct1.HasBandMotammemi          = true;
                                    baseStruct1.HasBandMotemmemiAgreement = true;
                                    baseStruct1.HasBandMotemmemiEltezami  = true;
                                    newTempList.Add(baseStruct1);
                                    var baseStruct2 = baseStruct1.Clone();
                                    baseStruct2.HasBandMotemmemiAgreement = false;
                                    newTempList.Add(baseStruct2);
                                    var baseStruct3 = baseStruct1.Clone();
                                    baseStruct3.HasBandMotemmemiEltezami = false;
                                    newTempList.Add(baseStruct3);
                                    var baseStruct4 = baseStruct1.Clone();
                                    baseStruct4.HasBandMotemmemiEltezami  = false;
                                    baseStruct4.HasBandMotemmemiAgreement = false;
                                    newTempList.Add(baseStruct4);
                                }
                            }
                            else if (band.Agreement == "مطابقت+/-" && band.Eltezami == "التزامی+")
                            {
                                foreach (BaseStructure baseStructure in baseStructureList)
                                {
                                    var baseStruct1 = baseStructure.Clone();
                                    baseStruct1.HasBandMotammemi          = true;
                                    baseStruct1.HasBandMotemmemiAgreement = true;
                                    baseStruct1.HasBandMotemmemiEltezami  = true;
                                    newTempList.Add(baseStruct1);
                                    var baseStruct2 = baseStruct1.Clone();
                                    baseStruct2.HasBandMotemmemiAgreement = false;
                                    newTempList.Add(baseStruct2);
                                }
                            }
                            else if (band.Agreement == "مطابقت+/-" && band.Eltezami == "التزامی-")
                            {
                                foreach (BaseStructure baseStructure in baseStructureList)
                                {
                                    var baseStruct1 = baseStructure.Clone();
                                    baseStruct1.HasBandMotammemi          = true;
                                    baseStruct1.HasBandMotemmemiAgreement = true;
                                    baseStruct1.HasBandMotemmemiEltezami  = false;
                                    newTempList.Add(baseStruct1);
                                    var baseStruct2 = baseStruct1.Clone();
                                    baseStruct2.HasBandMotemmemiAgreement = false;
                                    newTempList.Add(baseStruct2);
                                }
                            }
                            else if (band.Agreement == "مطابقت+" && band.Eltezami == "التزامی+/-")
                            {
                                foreach (BaseStructure baseStructure in baseStructureList)
                                {
                                    var baseStruct1 = baseStructure.Clone();
                                    baseStruct1.HasBandMotammemi          = true;
                                    baseStruct1.HasBandMotemmemiAgreement = true;
                                    baseStruct1.HasBandMotemmemiEltezami  = true;
                                    newTempList.Add(baseStruct1);
                                    var baseStruct3 = baseStruct1.Clone();
                                    baseStruct3.HasBandMotemmemiEltezami = false;
                                    newTempList.Add(baseStruct3);
                                }
                            }
                            else if (band.Agreement == "مطابقت+" && band.Eltezami == "التزامی+")
                            {
                                foreach (BaseStructure baseStructure in baseStructureList)
                                {
                                    var baseStruct1 = baseStructure.Clone();
                                    baseStruct1.HasBandMotammemi          = true;
                                    baseStruct1.HasBandMotemmemiAgreement = true;
                                    baseStruct1.HasBandMotemmemiEltezami  = true;
                                    newTempList.Add(baseStruct1);
                                }
                            }
                            else if (band.Agreement == "مطابقت+" && band.Eltezami == "التزامی-")
                            {
                                foreach (BaseStructure baseStructure in baseStructureList)
                                {
                                    var baseStruct1 = baseStructure.Clone();
                                    baseStruct1.HasBandMotammemi          = true;
                                    baseStruct1.HasBandMotemmemiAgreement = true;
                                    baseStruct1.HasBandMotemmemiEltezami  = false;
                                    newTempList.Add(baseStruct1);
                                }
                            }
                            else if (band.Agreement == "مطابقت-" && band.Eltezami == "التزامی+/-")
                            {
                                foreach (BaseStructure baseStructure in baseStructureList)
                                {
                                    var baseStruct1 = baseStructure.Clone();
                                    baseStruct1.HasBandMotammemi          = true;
                                    baseStruct1.HasBandMotemmemiAgreement = false;
                                    baseStruct1.HasBandMotemmemiEltezami  = true;
                                    newTempList.Add(baseStruct1);
                                    var baseStruct3 = baseStruct1.Clone();
                                    baseStruct3.HasBandMotemmemiEltezami = false;
                                    newTempList.Add(baseStruct3);
                                }
                            }
                            else if (band.Agreement == "مطابقت-" && band.Eltezami == "التزامی+")
                            {
                                foreach (BaseStructure baseStructure in baseStructureList)
                                {
                                    var baseStruct1 = baseStructure.Clone();
                                    baseStruct1.HasBandMotammemi          = true;
                                    baseStruct1.HasBandMotemmemiAgreement = false;
                                    baseStruct1.HasBandMotemmemiEltezami  = true;
                                    newTempList.Add(baseStruct1);
                                }
                            }
                            else if (band.Agreement == "مطابقت-" && band.Eltezami == "التزامی-")
                            {
                                foreach (BaseStructure baseStructure in baseStructureList)
                                {
                                    var baseStruct4 = baseStructure.Clone();
                                    baseStruct4.HasBandMotemmemiEltezami  = false;
                                    baseStruct4.HasBandMotemmemiAgreement = false;
                                    newTempList.Add(baseStruct4);
                                }
                            }
                        }
                        if (newTempList.Count > 0)
                        {
                            baseStructureList = newTempList;
                        }
                    }
                }
                foreach (BaseStructure baseStructure in baseStructureList)
                {
                    if (!BaseStrucDic[verbPlusValency.Key].Contains(baseStructure))
                    {
                        BaseStrucDic[verbPlusValency.Key].Add(baseStructure);
                    }
                }
            }
        }