public void PrintLemma(Lemma l) { FlexiaModel flexModel = _flexiaModels[l.FlexModelNo]; AccentModel accentModel = _accentModels[l.AccentModelNo]; UserSession session = _userSessions[l.SessionNo]; Console.WriteLine("=== {0} {1} {2} {3} ===", l.Base, _gramtab.LookupAncode(l.TypeAncode), flexModel.Forms.Count, accentModel.AccentForms.Count); int formNo = 0; foreach (Flexia form in flexModel.Forms) { if (!string.IsNullOrWhiteSpace(form.Prefix)) { Console.ForegroundColor = ConsoleColor.Red; Console.Write(form.Prefix); } Console.ForegroundColor = ConsoleColor.Green; Console.Write(l.Base); Console.ForegroundColor = ConsoleColor.Yellow; Console.Write(form.Flexion); int accent = accentModel.AccentForms[formNo]; Console.Write(" {0} ", accent); string accWord = AccentHelper.SetAccent(form.Prefix + l.Base + form.Flexion, accent); Console.Write(" " + accWord + " "); Console.ForegroundColor = ConsoleColor.Cyan; Console.Write("\t" + _gramtab.LookupAncode(form.Ancode)); Console.ResetColor(); Console.WriteLine(); formNo++; } if (l.PrefixSetNo.HasValue) { PrefixSet prefixSet = _prefixSets[l.PrefixSetNo.Value]; Console.WriteLine("PrefixSets:"); foreach (string pref in prefixSet.Prefixes) { Console.WriteLine(pref); } } Console.WriteLine("-------------------"); }
public void PrintLookup(string word) { FormInterpretations forms = Lookup(word); if (forms != null) { foreach (var kvp in forms.AccentToAncodes) { Console.WriteLine("Accent {0} {1}", kvp.Key, AccentHelper.SetAccent(word, kvp.Key)); foreach (ushort ancodeNo in kvp.Value) { Console.WriteLine(" {0}", _gramtab.LookupByNo(ancodeNo)); } } } else { Console.WriteLine(word + " not found"); } }
public virtual void ProcessWord() { Console.WriteLine(_currentWord); FormInterpretations forms = _morph.Lookup(_currentWord); if (forms != null) { if (forms.AccentToAncodes.Count == 1) { SingleAccentWords.Add(AccentHelper.SetAccent(_currentWord, forms.AccentToAncodes.Keys.First())); } else { ManyAccentWords.Add(_currentWord); } } else { NotFoundWords.Add(_currentWord); } }
public void PrintStat() { StreamWriter manyAccentWords = File.CreateText(Path.Combine(_workDir, "manyAccentWords.txt")); //- ударение НЕ задано (255) //-ударение задано однозначно(совпадает во всех интерпретациях) //-ударение задано омонимично(различается в интерпретациях) int cntUndefinedAccentOneVowel = 0; int cntUndefinedAccentMoreVowels = 0; int cntSingleAccentOneVowel = 0; int cntSingleAccentMoreVowels = 0; int cntTwoAccent = 0; int cntManyAccent = 0; int cntManyAccentReal = 0; foreach (var kvp in _dawg) { string form = kvp.Key; int vowels = AccentHelper.CountVowels(form); if (kvp.Value.AccentToAncodes.Count == 1) { int ac = kvp.Value.AccentToAncodes.Keys.First(); if (ac == 255) { if (vowels == 1) { cntUndefinedAccentOneVowel++; } else { cntUndefinedAccentMoreVowels++; } } else { if (vowels == 1) { cntSingleAccentOneVowel++; } else { cntSingleAccentMoreVowels++; } } } else if (kvp.Value.AccentToAncodes.Count == 2) { cntTwoAccent++; } else { cntManyAccent++; if (kvp.Value.AccentToAncodes.Keys.All(a => a != 255)) { cntManyAccentReal++; manyAccentWords.WriteLine("{0}, {1}, {2}", vowels, form, string.Join("-", kvp.Value.AccentToAncodes.Keys)); } } } Console.WriteLine("cntUndefinedAccent {0}", cntUndefinedAccentOneVowel + cntUndefinedAccentMoreVowels); Console.WriteLine("cntUndefinedAccentOneVowel {0}", cntUndefinedAccentOneVowel); Console.WriteLine("cntUndefinedAccentMoreVowels {0}", cntUndefinedAccentMoreVowels); Console.WriteLine("cntSingleAccent {0}", cntSingleAccentOneVowel + cntSingleAccentMoreVowels); Console.WriteLine("cntSingleAccentOneVowel {0}", cntSingleAccentOneVowel); Console.WriteLine("cntSingleAccentMoreVowels {0}", cntSingleAccentMoreVowels); Console.WriteLine("cntTwoAccent {0}", cntTwoAccent); Console.WriteLine("cntManyAccent {0}", cntManyAccent); Console.WriteLine("cntManyAccentReal {0}", cntManyAccentReal); Console.WriteLine("sum {0}", cntUndefinedAccentOneVowel + cntUndefinedAccentMoreVowels + cntSingleAccentOneVowel + cntSingleAccentMoreVowels + cntTwoAccent + cntManyAccent); manyAccentWords.Close(); }
public void PrintStat2() { // !!! // Здесь число интерпретаций, а не форм слова // Общее число форм List <WordForm> forms = AllForms.ToList(); Console.WriteLine("forms: {0}", forms.Count); // статистика по гласным foreach (var g in forms .Select(f => AccentHelper.CountVowels(f.ToString())) .GroupBy(i => i) .OrderBy(g => g.Key)) { Console.WriteLine("форм где {0} гласных: {1}", g.Key, g.Count()); } //количество форм, где менее двух гласных(ударение итак однозначно) int cntVo01 = forms.Count(f => AccentHelper.CountVowels(f.ToString()) <= 1); Console.WriteLine("количество форм, где менее двух гласных(ударение итак однозначно): " + cntVo01); //количество форм с двумя и более гласными, для которых var forms2 = forms.Where(f => AccentHelper.CountVowels(f.ToString()) > 1).ToList(); //var forms15 = forms.Where(f => AccentHelper.CountVowels(f.ToString()) == 15).ToList(); //foreach (var f in forms15) //{ // Console.WriteLine(f); //} Console.WriteLine("количество форм с двумя и более гласными: " + forms2.Count); // -ударение НЕ задано(255) Console.WriteLine(" ударение НЕ задано(255): " + forms2.Count(f => f.Accent == 255)); // Следующие 2 посчитаны в MorphAn.PrintStat // -ударение задано однозначно(совпадает во всех интерпретациях) //-ударение задано омонимично(различается в интерпретациях) //-FlexiaModels с приставками var flexModelWithPre = _flexiaModels.Where(fm => fm.Forms.Any(f => !string.IsNullOrWhiteSpace(f.Prefix))).ToList(); var flexModelWithPreAll = _flexiaModels.Where(fm => fm.Forms.All(f => !string.IsNullOrWhiteSpace(f.Prefix))).ToList(); Console.WriteLine("FlexiaModels с приставками: {0}", flexModelWithPre.Count); Console.WriteLine("FlexiaModels все с приставками: {0}", flexModelWithPreAll.Count); //-формы с приставками var formsWithPre = forms.Where(form => !string.IsNullOrWhiteSpace(form.Flexia.Prefix)).ToList(); Console.WriteLine("формы с приставками: {0}", formsWithPre.Count); // все леммы, имеющие Prefix Set //var prefixLemmas = Lemmas.Where(l => l.PrefixSetNo.HasValue).ToList(); //Console.WriteLine("PrefixSet lemmas: {0}", prefixLemmas.Count); //foreach (var g in prefixLemmas.GroupBy(l => l.PrefixSetNo.Value)) //{ // Console.WriteLine("{0}", string.Join("; ", _prefixSets[g.Key].Prefixes)); // foreach (Lemma l in g) // { // Console.WriteLine(" {0}", l.Base); // } //} }