private void Case_1__2(WordMorphoAmbiguity_t wma_0, WordMorphoAmbiguity_t wma_1) { var len_0 = wma_0.MorphoAmbiguityTuples.Count; var len_1 = wma_1.MorphoAmbiguityTuples.Count; if (len_0 == 1) { #region [.1 == mats_0 & 1 < mats_1.] if (1 < len_1) { var ma_case_0 = (wma_0.MorphoAmbiguityTuples[0].WordFormMorphology.MorphoAttribute & MorphoAttributeAllCases); if (!IsCaseAnycase(ma_case_0)) { for (var j = 0; j < len_1; j++) { var mat_1 = wma_1.MorphoAmbiguityTuples[j]; var ma_1 = mat_1.WordFormMorphology.MorphoAttribute; if (ma_case_0 == (ma_1 & MorphoAttributeAllCases)) { _Mats_1.Add(mat_1); } } if (_Mats_1.Count != 0) { var wasModify = (_Mats_1.Count < len_1); if (wasModify) { wma_1.MorphoAmbiguityTuples.Clear(); wma_1.MorphoAmbiguityTuples.AddRange(_Mats_1); } _Mats_1.Clear(); } } } #endregion } else if (len_1 == 1) { #region [.1 < mats_0 & 1 == mats_1.] var ma_case_1 = (wma_1.MorphoAmbiguityTuples[0].WordFormMorphology.MorphoAttribute & MorphoAttributeAllCases); if (!IsCaseAnycase(ma_case_1)) { for (var i = 0; i < len_0; i++) { var mat_0 = wma_0.MorphoAmbiguityTuples[i]; var ma_0 = mat_0.WordFormMorphology.MorphoAttribute; if (ma_case_1 == (ma_0 & MorphoAttributeAllCases)) { _Mats_0.Add(mat_0); } } if (_Mats_0.Count != 0) { var wasModify = (_Mats_0.Count < len_0); if (wasModify) { wma_0.MorphoAmbiguityTuples.Clear(); wma_0.MorphoAmbiguityTuples.AddRange(_Mats_0); } _Mats_0.Clear(); } } #endregion } else { #region [.1 < mats_0 & 1 < mats_1.] for (var i = 0; i < len_0; i++) { var mat_0 = wma_0.MorphoAmbiguityTuples[i]; var ma_case_0 = (mat_0.WordFormMorphology.MorphoAttribute & MorphoAttributeAllCases); if (!IsCaseAnycase(ma_case_0)) { for (var j = 0; j < len_1; j++) { var mat_1 = wma_1.MorphoAmbiguityTuples[j]; var ma_1 = mat_1.WordFormMorphology.MorphoAttribute; if (ma_case_0 == (ma_1 & MorphoAttributeAllCases)) { _Mats_0.AddIfNotExists(mat_0); _Mats_1.AddIfNotExists(mat_1); } } } } if (_Mats_0.Count != 0 /*&& _Mats_1.Count != 0*/) { var wasModify = ((_Mats_0.Count < len_0) || (_Mats_1.Count < len_1)); if (wasModify) { wma_0.MorphoAmbiguityTuples.Clear(); wma_0.MorphoAmbiguityTuples.AddRange(_Mats_0); wma_1.MorphoAmbiguityTuples.Clear(); wma_1.MorphoAmbiguityTuples.AddRange(_Mats_1); } _Mats_0.Clear(); _Mats_1.Clear(); } #endregion } }
private bool Case_1__1_stepII_2(WordMorphoAmbiguity_t wma_2) { System.Diagnostics.Debug.Assert(_Mats_0.Count == _Mats_1.Count, "_Mats_0.Count != _Mats_1.Count"); var len_0 = _Mats_0.Count /*|| _Mats_1.Count*/; var len_2 = wma_2.MorphoAmbiguityTuples.Count; if (len_0 == 1) { #region [.1 == _Mats_0 & 1 < wma.MorphoAmbiguityTuples.] if (1 < len_2) { var ma_case_0 = (_Mats_0[0].WordFormMorphology.MorphoAttribute & MorphoAttributeAllCases); if (!IsCaseAnycase(ma_case_0)) { for (var j = 0; j < len_2; j++) { var mat_2 = wma_2.MorphoAmbiguityTuples[j]; var ma_2 = mat_2.WordFormMorphology.MorphoAttribute; if (ma_case_0 == (ma_2 & MorphoAttributeAllCases)) { _Mats_2_stepII.Add(mat_2); } } if (_Mats_2_stepII.Count != 0) { var wasModify = (_Mats_2_stepII.Count < len_2); if (wasModify) { wma_2.MorphoAmbiguityTuples.Clear(); wma_2.MorphoAmbiguityTuples.AddRange(_Mats_2_stepII); } _Mats_2_stepII.Clear(); return(wasModify); } } } #endregion } else if (len_2 == 1) { #region [.1 < _Mats_0 & 1 == wma.MorphoAmbiguityTuples.] var ma_case_2 = (wma_2.MorphoAmbiguityTuples[0].WordFormMorphology.MorphoAttribute & MorphoAttributeAllCases); if (!IsCaseAnycase(ma_case_2)) { for (var i = 0; i < len_0; i++) { var mat_0 = _Mats_0[i]; var ma_0 = mat_0.WordFormMorphology.MorphoAttribute; if (ma_case_2 == (ma_0 & MorphoAttributeAllCases)) { _Mats_0_stepII.Add(mat_0); var mat_1 = _Mats_1[i]; _Mats_1_stepII.Add(mat_1); } } if (_Mats_0_stepII.Count != 0) { var wasModify = (_Mats_0_stepII.Count < len_0); if (wasModify) { _Mats_0.Clear(); _Mats_0.AddRange(_Mats_0_stepII); _Mats_1.Clear(); _Mats_1.AddRange(_Mats_1_stepII); } _Mats_0_stepII.Clear(); _Mats_1_stepII.Clear(); return(wasModify); } } #endregion } else { #region [.1 < _Mats_0 & 1 < wma.MorphoAmbiguityTuples.] for (var i = 0; i < len_0; i++) { var mat_0 = _Mats_0[i]; var ma_case_0 = (mat_0.WordFormMorphology.MorphoAttribute & MorphoAttributeAllCases); if (!IsCaseAnycase(ma_case_0)) { for (var j = 0; j < len_2; j++) { var mat_2 = wma_2.MorphoAmbiguityTuples[j]; var ma_2 = mat_2.WordFormMorphology.MorphoAttribute; if (ma_case_0 == (ma_2 & MorphoAttributeAllCases)) { _Mats_0_stepII.Add(mat_0); var mat_1 = _Mats_1[i]; _Mats_1_stepII.Add(mat_1); _Mats_2_stepII.Add(mat_2); } } } } if (_Mats_0_stepII.Count != 0 /*&& _Mats_2_stepII.Count != 0*/) { var wasModify = ((_Mats_0_stepII.Count < len_0) || (_Mats_2_stepII.Count < len_2)); if (wasModify) { _Mats_0.Clear(); _Mats_0.AddRange(_Mats_0_stepII); _Mats_1.Clear(); _Mats_1.AddRange(_Mats_1_stepII); wma_2.MorphoAmbiguityTuples.Clear(); wma_2.MorphoAmbiguityTuples.AddRange(_Mats_2_stepII); } _Mats_0_stepII.Clear(); _Mats_1_stepII.Clear(); _Mats_2_stepII.Clear(); return(wasModify); } #endregion } return(false); }
private void Run(WordMorphoAmbiguity_t wma_0, WordMorphoAmbiguity_t wma_1) { switch (wma_0.Word.posTaggerOutputType) { #region [.Case_1__2.] //Preposition: {+ Noun, + Pronoun, + Numeral, + PossessivePronoun, + Adjective, + AdjectivePronoun} case PosTaggerOutputType.Preposition: #region switch (wma_1.Word.posTaggerOutputType) { case PosTaggerOutputType.Noun: case PosTaggerOutputType.Pronoun: case PosTaggerOutputType.Numeral: case PosTaggerOutputType.PossessivePronoun: case PosTaggerOutputType.Adjective: case PosTaggerOutputType.AdjectivePronoun: Case_1__2(wma_0, wma_1); break; } #endregion break; #endregion #region [.Case_2.] //PossessivePronoun + Noun case PosTaggerOutputType.PossessivePronoun: #region if (wma_1.Word.posTaggerOutputType == PosTaggerOutputType.Pronoun) { Case_2(wma_0, wma_1); } #endregion break; //Adjective: {+ Noun, + Adjective} case PosTaggerOutputType.Adjective: #region switch (wma_1.Word.posTaggerOutputType) { case PosTaggerOutputType.Noun: case PosTaggerOutputType.Adjective: Case_2(wma_0, wma_1); break; } #endregion break; //AdjectivePronoun: {+ Noun, + Pronoun, + AdjectivePronoun, + Adjective} case PosTaggerOutputType.AdjectivePronoun: #region switch (wma_1.Word.posTaggerOutputType) { case PosTaggerOutputType.Noun: case PosTaggerOutputType.Pronoun: case PosTaggerOutputType.AdjectivePronoun: case PosTaggerOutputType.Adjective: Case_2(wma_0, wma_1); break; } #endregion break; //Numeral + Noun case PosTaggerOutputType.Numeral: #region if (wma_1.Word.posTaggerOutputType == PosTaggerOutputType.Noun) { Case_2(wma_0, wma_1); } #endregion break; #endregion } }
private bool Case_1__1_stepII_1(List <MorphoAmbiguityTuple_t> mats, WordMorphoAmbiguity_t wma_2) { var len_0 = mats.Count; var len_2 = wma_2.MorphoAmbiguityTuples.Count; if (len_0 == 1) { #region [.1 == mats & 1 < wma.MorphoAmbiguityTuples.] if (1 < len_2) { var ma_case_0 = (mats[0].WordFormMorphology.MorphoAttribute & MorphoAttributeAllCases); if (!IsCaseAnycase(ma_case_0)) { for (var j = 0; j < len_2; j++) { var mat_2 = wma_2.MorphoAmbiguityTuples[j]; var ma_2 = mat_2.WordFormMorphology.MorphoAttribute; if (ma_case_0 == (ma_2 & MorphoAttributeAllCases)) { _Mats_2_stepII.Add(mat_2); } } if (_Mats_2_stepII.Count != 0) { var wasModify = (_Mats_2_stepII.Count < len_2); if (wasModify) { wma_2.MorphoAmbiguityTuples.Clear(); wma_2.MorphoAmbiguityTuples.AddRange(_Mats_2_stepII); } _Mats_2_stepII.Clear(); return(wasModify); } } } #endregion } else if (len_2 == 1) { #region [.1 < mats & 1 == wma.MorphoAmbiguityTuples.] var ma_case_2 = (wma_2.MorphoAmbiguityTuples[0].WordFormMorphology.MorphoAttribute & MorphoAttributeAllCases); if (!IsCaseAnycase(ma_case_2)) { for (var i = 0; i < len_0; i++) { var mat_0 = mats[i]; var ma_0 = mat_0.WordFormMorphology.MorphoAttribute; if (ma_case_2 == (ma_0 & MorphoAttributeAllCases)) { _Mats_0_stepII.Add(mat_0); } } if (_Mats_0_stepII.Count != 0) { var wasModify = (_Mats_0_stepII.Count < len_0); if (wasModify) { mats.Clear(); mats.AddRange(_Mats_0_stepII); } _Mats_0_stepII.Clear(); return(wasModify); } } #endregion } else { #region [.1 < mats & 1 < wma.MorphoAmbiguityTuples.] for (var i = 0; i < len_0; i++) { var mat_0 = mats[i]; var ma_case_0 = (mat_0.WordFormMorphology.MorphoAttribute & MorphoAttributeAllCases); if (!IsCaseAnycase(ma_case_0)) { for (var j = 0; j < len_2; j++) { var mat_2 = wma_2.MorphoAmbiguityTuples[j]; var ma_2 = mat_2.WordFormMorphology.MorphoAttribute; if (ma_case_0 == (ma_2 & MorphoAttributeAllCases)) { _Mats_0_stepII.Add(mat_0); _Mats_2_stepII.Add(mat_2); } } } } if (_Mats_0_stepII.Count != 0 /*&& _Mats_1__2.Count != 0*/) { var wasModify = ((_Mats_0_stepII.Count < len_0) || (_Mats_2_stepII.Count < len_2)); if (wasModify) { mats.Clear(); mats.AddRange(_Mats_0_stepII); wma_2.MorphoAmbiguityTuples.Clear(); wma_2.MorphoAmbiguityTuples.AddRange(_Mats_2_stepII); } _Mats_0_stepII.Clear(); _Mats_2_stepII.Clear(); return(wasModify); } #endregion } return(false); }
private bool Case_2(WordMorphoAmbiguity_t wma_0, WordMorphoAmbiguity_t wma_1) { var len_0 = wma_0.MorphoAmbiguityTuples.Count; var len_1 = wma_1.MorphoAmbiguityTuples.Count; if (len_0 == 1) { #region [.1 == mats_0 & 1 < mats_1.] if (1 < len_1) { var ma_0 = wma_0.MorphoAmbiguityTuples[0].WordFormMorphology.MorphoAttribute; var ma_case_0 = (ma_0 & MorphoAttributeAllCases); if (!IsCaseAnycase(ma_case_0)) { for (var j = 0; j < len_1; j++) { var mat_1 = wma_1.MorphoAmbiguityTuples[j]; if (ma_case_0 == (mat_1.WordFormMorphology.MorphoAttribute & MorphoAttributeAllCases)) { _Mats_1.Add(mat_1); } } if (_Mats_1.Count != 0) { if (Case_2_TryFilterByMask(MorphoAttributeAllNumber, ma_0, _Mats_1)) { if (!IsGenderGeneral(ma_0)) { Case_2_TryFilterByMask(MorphoAttributeAllGender, ma_0, _Mats_1); } } var wasModify = (_Mats_1.Count < wma_1.MorphoAmbiguityTuples.Count); if (wasModify) { wma_1.MorphoAmbiguityTuples.Clear(); wma_1.MorphoAmbiguityTuples.AddRange(_Mats_1); } _Mats_1.Clear(); return(wasModify); } } } #endregion } else if (len_1 == 1) { #region [.1 < mats_0 & 1 == mats_1.] var ma_1 = wma_1.MorphoAmbiguityTuples[0].WordFormMorphology.MorphoAttribute; var ma_case_1 = (ma_1 & MorphoAttributeAllCases); if (!IsCaseAnycase(ma_case_1)) { for (var i = 0; i < len_0; i++) { var mat_0 = wma_0.MorphoAmbiguityTuples[i]; if (ma_case_1 == (mat_0.WordFormMorphology.MorphoAttribute & MorphoAttributeAllCases)) { _Mats_0.Add(mat_0); } } if (_Mats_0.Count != 0) { if (Case_2_TryFilterByMask(MorphoAttributeAllNumber, ma_1, _Mats_0)) { if (!IsGenderGeneral(ma_1)) { Case_2_TryFilterByMask(MorphoAttributeAllGender, ma_1, _Mats_0); } } var wasModify = (_Mats_0.Count < wma_0.MorphoAmbiguityTuples.Count); if (wasModify) { wma_0.MorphoAmbiguityTuples.Clear(); wma_0.MorphoAmbiguityTuples.AddRange(_Mats_0); } _Mats_0.Clear(); return(wasModify); } } #endregion } else { #region [.1 < mats_0 & 1 < mats_1.] for (var i = 0; i < len_0; i++) { var mat_0 = wma_0.MorphoAmbiguityTuples[i]; var ma_0 = mat_0.WordFormMorphology.MorphoAttribute; var ma_case_0 = (ma_0 & MorphoAttributeAllCases); if (!IsCaseAnycase(ma_case_0)) { for (var j = 0; j < len_1; j++) { var mat_1 = wma_1.MorphoAmbiguityTuples[j]; if (ma_case_0 == (mat_1.WordFormMorphology.MorphoAttribute & MorphoAttributeAllCases)) { _Mats_0.AddIfNotExists(mat_0); _Mats_1.AddIfNotExists(mat_1); } } } } if (_Mats_0.Count != 0 /*&& _Mats_1.Count != 0*/) { if (Case_2_TryFilterByNumber(_Mats_0, _Mats_1)) { Case_2_TryFilterByGender(_Mats_0, _Mats_1); } var wasModify = ((_Mats_0.Count < wma_0.MorphoAmbiguityTuples.Count) || (_Mats_1.Count < wma_1.MorphoAmbiguityTuples.Count) ); if (wasModify) { wma_0.MorphoAmbiguityTuples.Clear(); wma_0.MorphoAmbiguityTuples.AddRange(_Mats_0); wma_1.MorphoAmbiguityTuples.Clear(); wma_1.MorphoAmbiguityTuples.AddRange(_Mats_1); } _Mats_1.Clear(); _Mats_0.Clear(); return(wasModify); } #endregion } return(false); }