public List <string> all_assoc; // ассоциации к найденным словам, все подряд public Words(string str) { // создаем части объектов. пока что пустые. src = str; ru = new List <string>(); ru_check = new List <string>(); en = new List <string>(); en_trans = new List <string>(); all_find = new List <string>(); all_base = new List <string>(); all_base10 = new List <string>(); all_assoc = new List <string>(); f_b_noun = new List <string>(); f_b_adjective = new List <string>(); f_b_verb = new List <string>(); f_b_others = new List <string>(); // уберем грязные слова foreach (string s1 in badwrds) { str = str.Replace(" " + s1 + " ", " "); } str = str.Replace(" ", " ").Replace(" ", " ").Replace(" ", " ").Replace(" ", " ").Replace(" ", " ").Replace(" ", " ").Replace(" ", " ").Replace(" ", " ").Replace(" ", " ").Replace(" ", " ").Replace(" ", " ").Replace(" ", " ").Replace(" ", " ").Replace(" ", " "); string[] ar = str.Split(' '); // разберем слова по языкам - ру или ен. foreach (string ss in ar) { if (ss.Length > 1) { bool eng = false, rus = false, oth = false; for (int i = 0; i < ss.Length; i++) { char c = ss[i]; if ((c >= 'a') && (c <= 'z')) { eng = true; } else if (((c >= 'а') && (c <= 'я')) || (c == 'ё')) { rus = true; } else { oth = true; } // буквоцыфры и незнакомые языки выбросим } if (!rus && eng && !oth) { en.Add(ss); } if (rus && !eng && !oth) { ru.Add(ss); } } } // переведем en, проверим орфографию у ru if (en.Count > 0) { List <string> temp2 = TranslateEnRu(en); var spch = new SpellChecker(); en_trans.AddRange(spch.Check(temp2)); spch.Close(); } if (ru.Count > 0) { var spch = new SpellChecker(); ru_check.AddRange(spch.Check(ru)); spch.Close(); } // соберем вместе результат all_find.AddRange(ru_check); all_find.AddRange(en_trans); List <string> lt = new List <string>(all_find); // убирем дупы, ранжируем. источник - lt all_find = KillDupesAndRange(lt); // найдем базовые слова, уберем дупы, ранжируем по виду части речи, ранжируем по частоте List <string>[] temp1 = FindBaseWord(lt); f_b_noun = temp1[0]; f_b_adjective = temp1[1]; f_b_verb = temp1[2]; f_b_others = temp1[3]; // выберем в базовые только существительные. *** возможно позже будет нужно и прилагательные - надо замерить эффеткивность all_base = KillDupesAndRange(f_b_noun); all_base10 = KillDupesAndRange(f_b_noun, 10); // найдем ассоциации ко всем базовым словам, уберем дупы //all_assoc = KillDupesAndRange(Associations.Get(all_base));//вынесено ниже в отдельный метод // объект создан, все счастливо танцую и поют, как в индийских фильмах }