private static Predicate <AdjectiveRaw> PrepareFilter(Comparability comp) { if (comp == Comparability.Undefined) { return((item) => true); } return((item) => item.Comparability == comp); }
public Adverb(string parametrs) { var args = parametrs.Split(' '); if (args[0] != "adv") { throw new Exception("Method CreateS recieved wrong data"); } var other = args.ToList(); other.RemoveAt(0); foreach (string arg in other) { switch (arg) { //степень сравнения case "срав": _comparability = Comparability.Сomparative; break; case "прев": _comparability = Comparability.Superior; break; //смягченная сравнительная степень case "смяг": _softened = true; break; //нестандартное написание слова case "нестанд": _nonStandart = true; break; //неправильное употребление слова case "неправ": _wrong = true; break; //не уверенна, что у меня полная памятка, ПОПОЗЖЕ ПОИСКАТЬ НА САЙТЕ СИНТАГРУСА case "мета": break; default: throw new Exception("New parametr has arrived: " + arg); break; } } }
/// <summary> /// Поиск одного точного совпадения. Null - если не найдено. /// </summary> public static Adjective FindOne(string sourceForm, Comparability comparability = Comparability.Undefined) { var searchWord = PrepareWord(sourceForm); var res = items.FindOne(new AdjectiveRaw() { Word = searchWord }, new StringReverseComparer <AdjectiveRaw>(), PrepareFilter(comparability)); if (res.Word == null) { return(null); } return(new Adjective(res, sourceForm)); }
/// <summary> /// Returns the names in the same comparability set as <code>name</code>. This set includes <code>name</code>. /// </summary> /// <param name="name"></param> /// <returns></returns> public HashSet <string> ComparabilitySet(string name) { Contract.Requires(!string.IsNullOrWhiteSpace(name)); Contract.Ensures(Contract.Result <HashSet <string> >() != null); Contract.Ensures(Contract.Result <HashSet <string> >().Contains(name)); if (ids.ContainsKey(name)) { var groupId = comparability.FindSet(ids[name]); return(new HashSet <string>(Comparability.Where(x => x.Value == groupId).Select(x => x.Key))); } else { return(new HashSet <string>(new[] { name })); } }
/// <summary> /// Поиск по точному или приблизительному совпадению /// </summary> public static Adjective FindSimilar(string sourceForm, Comparability comparability = Comparability.Undefined) { var searchWord = PrepareWord(sourceForm); var res = items.FindSimilar(new AdjectiveRaw() { Word = searchWord }, new StringReverseComparer <AdjectiveRaw>(), PrepareFilter(comparability)); if (res.Word == null) { return(null); } return(new Adjective { Word = sourceForm, SchemaIndex = res.SchemaIndex, Inexact = res.Word != searchWord }); }
public Adjective(string pars) { var args = pars.Split(' '); if (args[0] != "a") { throw new Exception("Method CreateS recieved wrong data"); } var other = args.ToList(); other.RemoveAt(0); foreach (string arg in other) { switch (arg) { //число case "мн": _plural = true; break; case "ед": _plural = false; break; //род case "муж": _gender = Gender.M; break; case "жен": _gender = Gender.W; break; case "сред": _gender = Gender.N; break; //падеж case "им": _case = Case.Nominative; break; case "род": _case = Case.Genetive; break; case "парт": _case = Case.Partitive; break; case "дат": _case = Case.Dative; break; case "вин": _case = Case.Accusative; break; case "твор": _case = Case.Instrumentalis; break; case "пр": _case = Case.Praepositionalis; break; case "местн": _case = Case.Locative; break; //одушевленность case "од": _animation = true; break; case "неод": _animation = false; break; //краткость case "кр": _shortness = true; break; //степень сравнения case "срав": _comparability = Comparability.Сomparative; break; case "прев": _comparability = Comparability.Superior; break; //смягченная сравнительная степень case "смяг": _softened = true; break; //форма, используемая в словосложении case "сл": _composite = true; break; //неправильное употребление слова case "неправ": _wrong = true; break; //нестандартное написание слова case "нестанд": _nonStandart = true; break; //не уверенна, что у меня полная памятка, ПОПОЗЖЕ ПОИСКАТЬ НА САЙТЕ СИНТАГРУСА case "мета": break; default: throw new Exception("New parametr has arrived: " + arg); break; } } }