public void FitIntoBaseStructure(ref VerbBasedSentence verbBasedSentence, VerbInSentence verbInSentence) { if (HasPrepositionalObject1) { foreach (var dependencyBasedToken in verbBasedSentence.SentenceTokens) { if ((dependencyBasedToken.CPOSTag == "P" || dependencyBasedToken.CPOSTag == "POSTP") && dependencyBasedToken.DependencyRelation != "VPRT") { if (dependencyBasedToken.WordForm == PrepositionalObjectPreposition1) { if (verbInSentence.NonVerbalElementIndex != -1 && verbInSentence.VerbalPrepositionIndex == -1) { dependencyBasedToken.HeadNumber = verbInSentence.NonVerbalElementIndex; dependencyBasedToken.DependencyRelation = "VPP"; } else { dependencyBasedToken.HeadNumber = verbInSentence.LightVerbIndex; dependencyBasedToken.DependencyRelation = "VPP"; } if (dependencyBasedToken.CPOSTag == "P") { for (int i = dependencyBasedToken.Position; i < verbBasedSentence.SentenceTokens.Count; i++) { if (verbBasedSentence.SentenceTokens[i].CPOSTag == "PR" || verbBasedSentence.SentenceTokens[i].CPOSTag == "N") { verbBasedSentence.SentenceTokens[i].DependencyRelation = "POSDEP"; verbBasedSentence.SentenceTokens[i].HeadNumber = dependencyBasedToken.Position; break; } } } else { for (int i = dependencyBasedToken.Position - 2; i >= 0; i--) { if ((verbBasedSentence.SentenceTokens[i].CPOSTag == "PR" || verbBasedSentence.SentenceTokens[i].CPOSTag == "N") && (i == 0 || verbBasedSentence.SentenceTokens[i - 1].CPOSTag != "N")) { verbBasedSentence.SentenceTokens[i].DependencyRelation = "PREDEP"; verbBasedSentence.SentenceTokens[i].HeadNumber = dependencyBasedToken.Position; break; } } } break; } } } } if (HasPrepositionalObject2) { foreach (var dependencyBasedToken in verbBasedSentence.SentenceTokens) { if ((dependencyBasedToken.CPOSTag == "P" || dependencyBasedToken.CPOSTag == "POSTP") && dependencyBasedToken.DependencyRelation != "VPRT") { if (dependencyBasedToken.WordForm == PrepositionalObjectPreposition2) { if (verbInSentence.NonVerbalElementIndex != -1 && verbInSentence.VerbalPrepositionIndex == -1) { dependencyBasedToken.HeadNumber = verbInSentence.NonVerbalElementIndex; dependencyBasedToken.DependencyRelation = "VPP"; } else { dependencyBasedToken.HeadNumber = verbInSentence.LightVerbIndex; dependencyBasedToken.DependencyRelation = "VPP"; } if (dependencyBasedToken.CPOSTag == "P") { for (int i = dependencyBasedToken.Position; i < verbBasedSentence.SentenceTokens.Count; i++) { if (verbBasedSentence.SentenceTokens[i].CPOSTag == "PR" || verbBasedSentence.SentenceTokens[i].CPOSTag == "N") { verbBasedSentence.SentenceTokens[i].DependencyRelation = "POSDEP"; verbBasedSentence.SentenceTokens[i].HeadNumber = dependencyBasedToken.Position; break; } } } else { for (int i = dependencyBasedToken.Position - 2; i >= 0; i--) { if ((verbBasedSentence.SentenceTokens[i].CPOSTag == "PR" || verbBasedSentence.SentenceTokens[i].CPOSTag == "N") && (i == 0 || verbBasedSentence.SentenceTokens[i - 1].CPOSTag != "N")) { verbBasedSentence.SentenceTokens[i].DependencyRelation = "PREDEP"; verbBasedSentence.SentenceTokens[i].HeadNumber = dependencyBasedToken.Position; break; } } } break; } } } } if (HasObject && HasRa) { foreach (var dependencyBasedToken in verbBasedSentence.SentenceTokens) { if (dependencyBasedToken.WordForm == "را" && dependencyBasedToken.Position < verbInSentence.LightVerbIndex) { dependencyBasedToken.HeadNumber = verbInSentence.LightVerbIndex; dependencyBasedToken.DependencyRelation = "OBJ"; for (int i = dependencyBasedToken.Position - 2; i >= 0; i--) { if ((verbBasedSentence.SentenceTokens[i].CPOSTag == "PR" || verbBasedSentence.SentenceTokens[i].CPOSTag == "N") && (i == 0 || verbBasedSentence.SentenceTokens[i - 1].CPOSTag != "N")) { verbBasedSentence.SentenceTokens[i].DependencyRelation = "PREDEP"; verbBasedSentence.SentenceTokens[i].HeadNumber = dependencyBasedToken.Position; break; } } break; } } } if (HasBandMotammemi) { foreach (var dependencyBasedToken in verbBasedSentence.SentenceTokens) { if (dependencyBasedToken.CPOSTag == "V" && dependencyBasedToken.Position > verbInSentence.LightVerbIndex) { bool hasConnector = false; if (HasBandMotemmemiAgreement) { if (dependencyBasedToken.MorphoSyntacticFeats.Person == verbBasedSentence.SentenceTokens[verbInSentence.LightVerbIndex].MorphoSyntacticFeats. Person) { if (HasBandMotemmemiEltezami) { if (dependencyBasedToken.MorphoSyntacticFeats.TenseMoodAspect == TenseFormationType.HAAL_ELTEZAMI || dependencyBasedToken.MorphoSyntacticFeats.TenseMoodAspect == TenseFormationType.GOZASHTEH_ESTEMRAARI) { for (int i = verbInSentence.LightVerbIndex - 1; i < dependencyBasedToken.Position && i > 0; i++) { if (verbBasedSentence.SentenceTokens[i].WordForm == "که" || verbBasedSentence.SentenceTokens[i].WordForm == "تا") { hasConnector = true; dependencyBasedToken.HeadNumber = verbBasedSentence.SentenceTokens[i].Position; dependencyBasedToken.DependencyRelation = "PRD"; verbBasedSentence.SentenceTokens[i].HeadNumber = verbInSentence.LightVerbIndex; verbBasedSentence.SentenceTokens[i].DependencyRelation = "VCL"; break; } if (!hasConnector) { dependencyBasedToken.HeadNumber = verbInSentence.LightVerbIndex; dependencyBasedToken.DependencyRelation = "VCL"; } } break; } } } } else { if (HasBandMotemmemiEltezami) { if (dependencyBasedToken.MorphoSyntacticFeats.TenseMoodAspect == TenseFormationType.HAAL_ELTEZAMI || dependencyBasedToken.MorphoSyntacticFeats.TenseMoodAspect == TenseFormationType.GOZASHTEH_ESTEMRAARI) { for (int i = verbInSentence.LightVerbIndex - 1; i < dependencyBasedToken.Position && i > 0; i++) { if (verbBasedSentence.SentenceTokens[i].WordForm == "که" || verbBasedSentence.SentenceTokens[i].WordForm == "تا") { hasConnector = true; dependencyBasedToken.HeadNumber = verbBasedSentence.SentenceTokens[i].Position; dependencyBasedToken.DependencyRelation = "PRD"; verbBasedSentence.SentenceTokens[i].HeadNumber = verbInSentence.LightVerbIndex; verbBasedSentence.SentenceTokens[i].DependencyRelation = "VCL"; break; } if (!hasConnector) { dependencyBasedToken.HeadNumber = verbInSentence.LightVerbIndex; dependencyBasedToken.DependencyRelation = "VCL"; } } break; } } else { for (int i = verbInSentence.LightVerbIndex - 1; i < dependencyBasedToken.Position && i > 0; i++) { if (verbBasedSentence.SentenceTokens[i].WordForm == "که" || verbBasedSentence.SentenceTokens[i].WordForm == "تا") { hasConnector = true; dependencyBasedToken.HeadNumber = verbBasedSentence.SentenceTokens[i].Position; dependencyBasedToken.DependencyRelation = "PRD"; verbBasedSentence.SentenceTokens[i].HeadNumber = verbInSentence.LightVerbIndex; verbBasedSentence.SentenceTokens[i].DependencyRelation = "VCL"; break; } if (!hasConnector) { dependencyBasedToken.HeadNumber = verbInSentence.LightVerbIndex; dependencyBasedToken.DependencyRelation = "VCL"; } } break; } } } } } }
public bool Satisfy(VerbBasedSentence verbBasedSentence, VerbInSentence verbInSentence) { bool satisfy = false; if (HasPrepositionalObject1) { satisfy = false; foreach (var dependencyBasedToken in verbBasedSentence.SentenceTokens) { if ((dependencyBasedToken.CPOSTag == "P" || dependencyBasedToken.CPOSTag == "POSTP") && dependencyBasedToken.DependencyRelation != "VPRT") { if (dependencyBasedToken.WordForm == PrepositionalObjectPreposition1) { satisfy = true; break; } } } if (!satisfy) { return(false); } } if (HasPrepositionalObject2) { satisfy = false; foreach (var dependencyBasedToken in verbBasedSentence.SentenceTokens) { if ((dependencyBasedToken.CPOSTag == "P" || dependencyBasedToken.CPOSTag == "POSTP") && dependencyBasedToken.DependencyRelation != "VPRT") { if (dependencyBasedToken.WordForm == PrepositionalObjectPreposition2) { satisfy = true; break; } } } if (!satisfy) { return(false); } } if (HasObject && HasRa) { satisfy = false; foreach (var dependencyBasedToken in verbBasedSentence.SentenceTokens) { if (dependencyBasedToken.WordForm == "را" && dependencyBasedToken.Position < verbInSentence.LightVerbIndex) { satisfy = true; break; } } if (!satisfy) { return(false); } } if (HasBandMotammemi) { satisfy = false; foreach (var dependencyBasedToken in verbBasedSentence.SentenceTokens) { if (dependencyBasedToken.CPOSTag == "V" && dependencyBasedToken.Position > verbInSentence.LightVerbIndex) { if (HasBandMotemmemiAgreement) { if (dependencyBasedToken.MorphoSyntacticFeats.Person == verbBasedSentence.SentenceTokens[verbInSentence.LightVerbIndex].MorphoSyntacticFeats. Person) { if (HasBandMotemmemiEltezami) { if (dependencyBasedToken.MorphoSyntacticFeats.TenseMoodAspect == TenseFormationType.HAAL_ELTEZAMI || dependencyBasedToken.MorphoSyntacticFeats.TenseMoodAspect == TenseFormationType.GOZASHTEH_ESTEMRAARI) { satisfy = true; break; } } } } else { if (HasBandMotemmemiEltezami) { if (dependencyBasedToken.MorphoSyntacticFeats.TenseMoodAspect == TenseFormationType.HAAL_ELTEZAMI || dependencyBasedToken.MorphoSyntacticFeats.TenseMoodAspect == TenseFormationType.GOZASHTEH_ESTEMRAARI) { satisfy = true; break; } } else { satisfy = true; break; } } } } if (!satisfy) { return(false); } } return(true); }