public void FinishLearning() { PA = new double[tags.Count(), tags.Count()]; for (int i = 0; i < tags.Count(); ++i) { for (int j = 0; j < tags.Count(); ++j) { if (T_counts[i] > 0) { double p = (double)A_counts[i, j] / (double)T_counts[i]; PA[i, j] = p; } else { PA[i, j] = 0.0; } } } PB = new Dictionary <int, Dictionary <int, double> >(); foreach (var k1 in B_counts) { Dictionary <int, double> b = new Dictionary <int, double>(); foreach (var k2 in k1.Value) { double pb = (double)k2.Value / (double)T_counts[k1.Key]; b.Add(k2.Key, pb); } PB.Add(k1.Key, b); } return; }
public void FinishLearning() { wrt_train.Close(); wrt_test.Close(); wrt_test2.Close(); using (System.IO.StreamWriter wrt = new System.IO.StreamWriter("rnnsharp_tags.txt")) { for (int i = 0; i < tags.Count(); ++i) { wrt.WriteLine("{1}", i, tags.GetIdByIndex(i)); } } string cmd = string.Format("{0}\\rnnsharp_train.cmd", System.IO.Directory.GetCurrentDirectory()); System.Diagnostics.Process p = new System.Diagnostics.Process(); p.StartInfo.Arguments = null; p.StartInfo.FileName = cmd; Console.WriteLine("Executing {0}", p.StartInfo.FileName); bool r = p.Start(); p.WaitForExit(); return; }
public void Init() { foreach (string w in new[] { "надо", "подо", "между", "выше", "ниже" }) { undividable_words.Add(w); } tags = new TagBook("POS_prediction"); string str_tags = /* * @" * ЧАСТИЦА:БЫ{}, * ЧАСТИЦА:ЛИ{}, * ЧАСТИЦА:КА{}, * * ГЛАГОЛ:БЫТЬ{}, * ИНФИНИТИВ:БЫТЬ{}, * ГЛАГОЛ:ХОТЕТЬ{}, * ИНФИНИТИВ:ХОТЕТЬ{}, * ГЛАГОЛ:МОЧЬ{}, * ИНФИНИТИВ:МОЧЬ{}, * 'ДОЛЖЕН' * 'ДОЛЖНА' * 'НЕ' * 'ДАВАЙ' * 'ДАВАЙТЕ' * 'ДАЙ' * * СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ИМ ЧИСЛО:ЕД РОД:ЖЕН * СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ИМ ЧИСЛО:ЕД РОД:МУЖ * СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ИМ ЧИСЛО:ЕД РОД:СР * СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ИМ ЧИСЛО:МН * * СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:РОД ЧИСЛО:ЕД РОД:ЖЕН * СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:РОД ЧИСЛО:ЕД РОД:МУЖ * СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:РОД ЧИСЛО:ЕД РОД:СР * СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:РОД ЧИСЛО:МН * * СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ПАРТ ЧИСЛО:ЕД РОД:ЖЕН * СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ПАРТ ЧИСЛО:ЕД РОД:МУЖ * СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ПАРТ ЧИСЛО:ЕД РОД:СР * * СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ТВОР ЧИСЛО:ЕД РОД:ЖЕН * СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ТВОР ЧИСЛО:ЕД РОД:МУЖ * СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ТВОР ЧИСЛО:ЕД РОД:СР * СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ТВОР ЧИСЛО:МН * * СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ВИН ЧИСЛО:ЕД РОД:ЖЕН * СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ВИН ЧИСЛО:ЕД РОД:МУЖ * СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ВИН ЧИСЛО:ЕД РОД:СР * СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ВИН ЧИСЛО:МН * * СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ДАТ ЧИСЛО:ЕД РОД:ЖЕН * СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ДАТ ЧИСЛО:ЕД РОД:МУЖ * СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ДАТ ЧИСЛО:ЕД РОД:СР * СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ДАТ ЧИСЛО:МН * * СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ПРЕДЛ ЧИСЛО:ЕД РОД:ЖЕН * СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ПРЕДЛ ЧИСЛО:ЕД РОД:МУЖ * СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ПРЕДЛ ЧИСЛО:ЕД РОД:СР * СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ПРЕДЛ ЧИСЛО:МН * * СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:МЕСТ ЧИСЛО:ЕД РОД:ЖЕН * СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:МЕСТ ЧИСЛО:ЕД РОД:МУЖ * СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:МЕСТ ЧИСЛО:ЕД РОД:СР * * ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:ИМ ЧИСЛО:ЕД РОД:ЖЕН * ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:ИМ ЧИСЛО:ЕД РОД:МУЖ * ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:ИМ ЧИСЛО:ЕД РОД:СР * ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:ИМ ЧИСЛО:МН * * ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:РОД ЧИСЛО:ЕД РОД:ЖЕН * ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:РОД ЧИСЛО:ЕД РОД:МУЖ * ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:РОД ЧИСЛО:ЕД РОД:СР * ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:РОД ЧИСЛО:МН * * ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:ТВОР ЧИСЛО:ЕД РОД:ЖЕН * ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:ТВОР ЧИСЛО:ЕД РОД:МУЖ * ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:ТВОР ЧИСЛО:ЕД РОД:СР * ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:ТВОР ЧИСЛО:МН * * ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:ВИН ЧИСЛО:ЕД РОД:ЖЕН * ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:ВИН ЧИСЛО:ЕД РОД:МУЖ * ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:ВИН ЧИСЛО:ЕД РОД:СР * ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:ВИН ЧИСЛО:МН * * ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:ДАТ ЧИСЛО:ЕД РОД:ЖЕН * ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:ДАТ ЧИСЛО:ЕД РОД:МУЖ * ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:ДАТ ЧИСЛО:ЕД РОД:СР * ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:ДАТ ЧИСЛО:МН * * ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:ПРЕДЛ ЧИСЛО:ЕД РОД:ЖЕН * ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:ПРЕДЛ ЧИСЛО:ЕД РОД:МУЖ * ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:ПРЕДЛ ЧИСЛО:ЕД РОД:СР * ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:ПРЕДЛ ЧИСЛО:МН * * ПРИЛАГАТЕЛЬНОЕ КРАТКИЙ РОД:ЖЕН ЧИСЛО:ЕД * ПРИЛАГАТЕЛЬНОЕ КРАТКИЙ РОД:МУЖ ЧИСЛО:ЕД * ПРИЛАГАТЕЛЬНОЕ КРАТКИЙ РОД:СР ЧИСЛО:ЕД * ПРИЛАГАТЕЛЬНОЕ КРАТКИЙ ЧИСЛО:МН * * ПРИЛАГАТЕЛЬНОЕ СТЕПЕНЬ:СРАВН * * МЕСТОИМЕНИЕ ПАДЕЖ:ИМ ЧИСЛО:ЕД ЛИЦО:1 * МЕСТОИМЕНИЕ ПАДЕЖ:ИМ ЧИСЛО:МН ЛИЦО:1 * * МЕСТОИМЕНИЕ ПАДЕЖ:ИМ ЧИСЛО:ЕД ЛИЦО:2 * МЕСТОИМЕНИЕ ПАДЕЖ:ИМ ЧИСЛО:МН ЛИЦО:2 * * МЕСТОИМЕНИЕ ПАДЕЖ:ИМ ЧИСЛО:ЕД ЛИЦО:3 РОД:МУЖ * МЕСТОИМЕНИЕ ПАДЕЖ:ИМ ЧИСЛО:ЕД ЛИЦО:3 РОД:ЖЕН * МЕСТОИМЕНИЕ ПАДЕЖ:ИМ ЧИСЛО:ЕД ЛИЦО:3 РОД:СР * МЕСТОИМЕНИЕ ПАДЕЖ:ИМ ЧИСЛО:МН ЛИЦО:3 * * МЕСТОИМЕНИЕ ПАДЕЖ:РОД ЧИСЛО:ЕД * МЕСТОИМЕНИЕ ПАДЕЖ:РОД ЧИСЛО:МН * * МЕСТОИМЕНИЕ ПАДЕЖ:ТВОР ЧИСЛО:ЕД * МЕСТОИМЕНИЕ ПАДЕЖ:ТВОР ЧИСЛО:МН * * МЕСТОИМЕНИЕ ПАДЕЖ:ВИН ЧИСЛО:ЕД * МЕСТОИМЕНИЕ ПАДЕЖ:ВИН ЧИСЛО:МН * * МЕСТОИМЕНИЕ ПАДЕЖ:ДАТ ЧИСЛО:ЕД * МЕСТОИМЕНИЕ ПАДЕЖ:ДАТ ЧИСЛО:МН * * МЕСТОИМЕНИЕ ПАДЕЖ:ПРЕДЛ ЧИСЛО:ЕД * МЕСТОИМЕНИЕ ПАДЕЖ:ПРЕДЛ ЧИСЛО:МН * * МЕСТОИМ_СУЩ ПАДЕЖ:ИМ * МЕСТОИМ_СУЩ ПАДЕЖ:РОД * МЕСТОИМ_СУЩ ПАДЕЖ:ТВОР * МЕСТОИМ_СУЩ ПАДЕЖ:ВИН * МЕСТОИМ_СУЩ ПАДЕЖ:ДАТ * МЕСТОИМ_СУЩ ПАДЕЖ:ПРЕДЛ * * ЧИСЛИТЕЛЬНОЕ ПАДЕЖ:ИМ * ЧИСЛИТЕЛЬНОЕ ПАДЕЖ:РОД * ЧИСЛИТЕЛЬНОЕ ПАДЕЖ:ТВОР * ЧИСЛИТЕЛЬНОЕ ПАДЕЖ:ВИН * ЧИСЛИТЕЛЬНОЕ ПАДЕЖ:ДАТ * ЧИСЛИТЕЛЬНОЕ ПАДЕЖ:ПРЕДЛ * * ГЛАГОЛ МОДАЛЬНЫЙ * ГЛАГОЛ ПЕРЕХОДНОСТЬ:ПЕРЕХОДНЫЙ * ГЛАГОЛ * БЕЗЛИЧ_ГЛАГОЛ * ИНФИНИТИВ МОДАЛЬНЫЙ * ИНФИНИТИВ ПЕРЕХОДНОСТЬ:ПЕРЕХОДНЫЙ * ИНФИНИТИВ * ДЕЕПРИЧАСТИЕ МОДАЛЬНЫЙ * ДЕЕПРИЧАСТИЕ ПЕРЕХОДНОСТЬ:ПЕРЕХОДНЫЙ * ДЕЕПРИЧАСТИЕ * ПРЕДЛОГ * ПОСЛЕЛОГ * СОЮЗ * ЧАСТИЦА * ПУНКТУАТОР * НАРЕЧИЕ * ВВОДНОЕ * NUM_WORD * UNKNOWNENTRIES * BETH:BEGIN{} * BETH:END{} * "; */ @"ГЛАГОЛ ИНФИНИТИВ ПРИЛАГАТЕЛЬНОЕ ДЕЕПРИЧАСТИЕ ПРЕДЛОГ СУЩЕСТВИТЕЛЬНОЕ МЕСТОИМЕНИЕ ЧИСЛИТЕЛЬНОЕ МЕСТОИМ_СУЩ СОЮЗ ЧАСТИЦА НАРЕЧИЕ ПОСЛЕЛОГ БЕЗЛИЧ_ГЛАГОЛ ПУНКТУАТОР UNKNOWNENTRIES ВВОДНОЕ NUM_WORD BETH"; tags.Load(str_tags, gren); A_counts = new int[tags.Count(), tags.Count()]; for (int i = 0; i < tags.Count(); ++i) { for (int j = 0; j < tags.Count(); ++j) { A_counts[i, j] = 0; } } T_counts = new int[tags.Count()]; for (int i = 0; i < tags.Count(); ++i) { T_counts[i] = 0; } B_counts = new Dictionary <int, Dictionary <int, int> >(); return; }
public void Init() { tags = new TagBook("POS_prediction"); string str_tags = /* * @" * ГЛАГОЛ * ИНФИНИТИВ * ПРИЛАГАТЕЛЬНОЕ * ДЕЕПРИЧАСТИЕ * ПРЕДЛОГ * СУЩЕСТВИТЕЛЬНОЕ * МЕСТОИМЕНИЕ * ЧИСЛИТЕЛЬНОЕ * МЕСТОИМ_СУЩ * СОЮЗ * ЧАСТИЦА * НАРЕЧИЕ * ПОСЛЕЛОГ * БЕЗЛИЧ_ГЛАГОЛ * ПУНКТУАТОР * UNKNOWNENTRIES * ВВОДНОЕ * NUM_WORD * BETH * ";*/ @" ГЛАГОЛ ПЕРЕХОДНОСТЬ:ПЕРЕХОДНЫЙ ГЛАГОЛ ПЕРЕХОДНОСТЬ:НЕПЕРЕХОДНЫЙ ИНФИНИТИВ ПЕРЕХОДНОСТЬ:ПЕРЕХОДНЫЙ ИНФИНИТИВ ПЕРЕХОДНОСТЬ:НЕПЕРЕХОДНЫЙ ДЕЕПРИЧАСТИЕ ПЕРЕХОДНОСТЬ:ПЕРЕХОДНЫЙ ДЕЕПРИЧАСТИЕ ПЕРЕХОДНОСТЬ:НЕПЕРЕХОДНЫЙ СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ЗВАТ СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ИМ СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:РОД СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ПАРТ СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ТВОР СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ВИН СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ДАТ СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ПРЕДЛ СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:МЕСТ ПРИЛАГАТЕЛЬНОЕ КРАТКИЙ ПРИЛАГАТЕЛЬНОЕ СТЕПЕНЬ:СРАВН ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:ИМ ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:РОД ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:ТВОР ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:ВИН ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:ДАТ ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:ПРЕДЛ МЕСТОИМЕНИЕ ПАДЕЖ:ИМ МЕСТОИМЕНИЕ ПАДЕЖ:РОД МЕСТОИМЕНИЕ ПАДЕЖ:ТВОР МЕСТОИМЕНИЕ ПАДЕЖ:ВИН МЕСТОИМЕНИЕ ПАДЕЖ:ДАТ МЕСТОИМЕНИЕ ПАДЕЖ:ПРЕДЛ МЕСТОИМ_СУЩ ПАДЕЖ:ИМ МЕСТОИМ_СУЩ ПАДЕЖ:РОД МЕСТОИМ_СУЩ ПАДЕЖ:ТВОР МЕСТОИМ_СУЩ ПАДЕЖ:ВИН МЕСТОИМ_СУЩ ПАДЕЖ:ДАТ МЕСТОИМ_СУЩ ПАДЕЖ:ПРЕДЛ ГЛАГОЛ ИНФИНИТИВ ДЕЕПРИЧАСТИЕ ПРЕДЛОГ ЧИСЛИТЕЛЬНОЕ СОЮЗ ЧАСТИЦА НАРЕЧИЕ ПОСЛЕЛОГ БЕЗЛИЧ_ГЛАГОЛ ПУНКТУАТОР UNKNOWNENTRIES ВВОДНОЕ NUM_WORD BETH "; tags.Load(str_tags, gren); A_counts = new int[tags.Count(), tags.Count()]; for (int i = 0; i < tags.Count(); ++i) { for (int j = 0; j < tags.Count(); ++j) { A_counts[i, j] = 0; } } T_counts = new int[tags.Count()]; for (int i = 0; i < tags.Count(); ++i) { T_counts[i] = 0; } B_counts = new Dictionary <int, Dictionary <string, int> >(); return; }