From 40388ffbb30c7ef7ce310679f34d4f6e70de681e Mon Sep 17 00:00:00 2001 From: Vladislav Khorev Date: Mon, 1 Dec 2014 07:13:51 +0000 Subject: [PATCH] improving recognition --- rudict/frequent_nouns_2000.csv | 1673 ++++++++++++------------ rudict/frequent_nouns_2000.xlsx | Bin 52656 -> 55234 bytes rudict/grammar_case.csv | 361 ++--- rudict/grammar_case.xlsx | Bin 12679 -> 13278 bytes rudict/rudict/http/request_handler.cpp | 3 +- rudict/rudict/main.cpp | 3 +- rudict/rudict/noun.cpp | 628 ++++----- rudict/rudict/noun.h | 130 +- 8 files changed, 1458 insertions(+), 1340 deletions(-) diff --git a/rudict/frequent_nouns_2000.csv b/rudict/frequent_nouns_2000.csv index 970e226..56dbf6b 100644 --- a/rudict/frequent_nouns_2000.csv +++ b/rudict/frequent_nouns_2000.csv @@ -1,836 +1,837 @@ -28;год;м;1;1;1;0;;0;1;;1 -39;человек;м;1;1;1;0;люди;1;0;;1 -52;время;с;1;1;0;0;времена;0;1;;1 -65;дело;с;1;1;1;0;;0;1;;1 -66;жизнь;ж;1;1;1;0;;0;1;;1 -71;день;м;1;1;0;1;;0;1;;1 -74;рука;ж;1;1;1;0;;0;1;;1 -87;работа;ж;1;1;1;0;;0;1;;1 -94;слово;с;1;1;1;0;;0;1;;1 -98;место;с;1;1;1;0;;0;1;;1 -104;лицо;с;1;1;1;0;;0;1;;1 -106;друг;м;1;1;0;0;друзья;1;0;;1 -110;глаз;м;1;1;0;0;глаза;0;1;;1 -114;вопрос;м;1;1;1;0;;0;1;;1 -118;дом;м;1;1;0;0;дома;0;1;;1 -121;сторона;ж;1;1;1;0;;0;1;;1 -125;страна;ж;1;1;1;0;;0;1;;1 -128;мир;м;1;1;1;0;;0;1;;1 -132;голова;ж;1;1;1;0;;0;1;;1 -137;ребенок;м;1;1;0;0;ребята;1;0;;1 -140;сила;ж;1;1;1;0;;0;1;;1 -142;конец;м;1;1;0;1;;0;1;;1 -145;вид;м;1;1;1;0;;0;1;;1 -146;система;ж;1;1;1;0;;0;1;;1 -154;часть;ж;1;1;1;0;;0;1;;1 -156;город;м;1;1;0;0;города;0;1;;1 -162;отношение;с;1;1;1;0;;0;1;;1 -171;женщина;ж;1;1;1;0;;1;0;;1 -178;деньги;ж;0;1;1;0;;0;1;;1 -184;земля;ж;1;1;1;0;;0;1;;1 -187;машина;ж;1;1;1;0;;0;1;;1 -192;отец;м;1;1;0;1;;1;0;;1 -197;проблема;ж;1;1;1;0;;0;1;;1 -200;час;м;1;1;1;0;;0;1;;1 -203;право;с;1;1;1;0;;0;1;;1 -205;нога;ж;1;1;1;0;;0;1;;1 -210;дверь;ж;1;1;1;0;;0;1;;1 -212;образ;м;1;1;1;0;;0;1;;1 -214;история;ж;1;1;1;0;;0;1;;1 -216;власть;ж;1;1;1;0;;0;1;;1 -217;закон;м;1;1;1;0;;0;1;;1 -219;война;ж;1;1;1;0;;0;1;;1 -220;бог;м;1;1;1;0;;1;0;;1 -221;голос;м;1;1;0;0;голоса;0;1;;1 -230;книга;ж;1;1;1;0;;0;1;;1 -235;результат;м;1;1;1;0;;0;1;;1 -236;ночь;ж;1;1;1;0;;0;1;;1 -237;стол;м;1;1;1;0;;0;1;;1 -239;имя;с;1;1;0;0;имена;0;1;;1 -240;область;ж;1;1;1;0;;0;1;;1 -244;статья;ж;1;1;1;0;;0;1;;1 -246;число;с;1;1;1;0;;0;1;;1 -247;компания;ж;1;1;1;0;;0;1;;1 -252;народ;м;1;1;1;0;;0;1;;1 -255;жена;ж;1;1;1;0;;1;0;;1 -258;группа;ж;1;1;1;0;;0;1;;1 -259;развитие;с;1;1;1;0;;0;1;;1 -260;процесс;м;1;1;1;0;;0;1;;1 -261;суд;м;1;1;1;0;;0;1;;1 -265;условие;с;1;1;1;0;;0;1;;1 -268;средство;с;1;1;1;0;;0;1;;1 -270;начало;с;1;1;1;0;;0;1;;1 -272;свет;м;1;0;0;0;;0;1;;1 -274;путь;м;1;1;1;0;;0;1;;1 -275;душа;ж;1;1;1;0;;0;1;;1 -280;уровень;м;1;1;0;1;;0;1;;1 -282;форма;ж;1;1;1;0;;0;1;;1 -283;связь;ж;1;1;1;0;;0;1;;1 -285;минута;ж;1;1;1;0;;0;1;;1 -292;улица;ж;1;1;1;0;;0;1;;1 -295;вечер;м;1;1;0;0;вечера;0;1;;1 -298;качество;с;1;1;1;0;;0;1;;1 -299;мысль;ж;1;1;1;0;;0;1;;1 -300;дорога;ж;1;1;1;0;;0;1;;1 -301;мать;ж;1;1;0;0;матери;1;0;;1 -302;действие;с;1;1;1;0;;0;1;;1 -303;месяц;м;1;1;1;0;;0;1;;1 -305;государство;с;1;1;1;0;;0;1;;1 -306;язык;м;1;1;1;0;;0;1;;1 -307;любовь;ж;1;0;0;0;;0;1;;1 -308;взгляд;м;1;1;1;0;;0;1;;1 -309;мама;ж;1;1;1;0;;1;0;;1 -314;век;м;1;1;0;0;века;0;1;;1 -315;школа;ж;1;1;1;0;;0;1;;1 -318;цель;ж;1;1;1;0;;0;1;;1 -320;общество;с;1;1;1;0;;0;1;;1 -322;деятельность;ж;1;1;1;0;;0;1;;1 -323;организация;ж;1;1;1;0;;0;1;;1 -326;президент;м;1;1;1;0;;1;0;;1 -327;комната;ж;1;1;1;0;;0;1;;1 -328;порядок;м;1;1;0;1;;0;1;;1 -329;момент;м;1;1;1;0;;0;1;;1 -330;театр;м;1;1;1;0;;0;1;;1 -333;письмо;с;1;1;1;0;;0;1;;1 -336;утро;с;1;1;1;0;;0;1;;1 -338;помощь;ж;1;0;0;0;;0;1;;1 -339;ситуация;ж;1;1;1;0;;0;1;;1 -340;роль;ж;1;1;1;0;;0;1;;1 -343;рубль;м;1;1;1;0;;0;1;;1 -346;смысл;м;1;1;1;0;;0;1;;1 -350;квартира;ж;1;1;1;0;;0;1;;1 -354;орган;м;1;1;1;0;;0;1;;1 -355;внимание;с;1;1;1;0;;0;1;;1 -356;тело;с;1;1;1;0;;0;1;;1 -357;труд;м;1;1;1;0;;0;1;;1 -360;сын;м;1;1;1;0;;1;0;;1 -361;мера;ж;1;1;1;0;;0;1;;1 -363;смерть;ж;1;1;1;0;;0;1;;1 -365;рынок;м;1;1;0;1;;0;1;;1 -366;программа;ж;1;1;1;0;;0;1;;1 -367;задача;ж;1;1;1;0;;0;1;;1 -368;предприятие;с;1;1;1;0;;0;1;;1 -370;окно;с;1;1;1;0;;0;1;;1 -374;разговор;м;1;1;1;0;;0;1;;1 -376;правительство;с;1;1;1;0;;0;1;;1 -378;семья;ж;1;1;1;0;;0;1;;1 -380;производство;с;1;1;1;0;;0;1;;1 -388;информация;ж;1;1;1;0;;0;1;;1 -390;положение;с;1;1;1;0;;0;1;;1 -394;центр;м;1;1;1;0;;0;1;;1 -396;ответ;м;1;1;1;0;;0;1;;1 -397;муж;м;1;1;1;0;;1;0;;1 -398;автор;м;1;1;1;0;;1;0;;1 -400;стена;ж;1;1;1;0;;0;1;;1 -403;интерес;м;1;1;1;0;;0;1;;1 -405;федерация;ж;1;1;1;0;;0;1;;1 -406;правило;с;1;1;1;0;;0;1;;1 -410;управление;с;1;1;1;0;;0;1;;1 -416;мужчина;м;1;1;1;0;;1;0;;1 -418;правда;ж;1;1;1;0;;0;1;;1 -420;партия;ж;1;1;1;0;;0;1;;1 -430;совет;м;1;1;1;0;;0;1;;1 -431;счёт;м;1;1;1;0;счета;0;1;;1 -432;сердце;с;1;1;1;0;;0;1;;1 -433;движение;с;1;1;1;0;;0;1;;1 -434;вещь;ж;1;1;1;0;;0;1;;1 -435;материал;м;1;1;1;0;;0;1;;1 -436;неделя;ж;1;1;1;0;;0;1;;1 -437;чувство;с;1;1;1;0;;0;1;;1 -443;глава;ж;1;1;1;0;;0;1;;1 -446;наука;ж;1;1;1;0;;0;1;;1 -448;ряд;м;1;1;1;0;;0;1;;1 -449;газета;ж;1;1;1;0;;0;1;;1 -450;причина;ж;1;1;1;0;;0;1;;1 -452;плечо;с;1;1;0;0;плечи;0;1;;1 -454;цена;ж;1;1;1;0;;0;1;;1 -455;план;м;1;1;1;0;;0;1;;1 -457;речь;ж;1;1;1;0;;0;1;;1 -460;точка;ж;1;1;1;0;;0;1;;1 -461;основа;ж;1;1;1;0;;0;1;;1 -462;товарищ;м;1;1;1;0;;1;0;;1 -463;культура;ж;1;1;1;0;;0;1;;1 -474;документ;м;1;1;1;0;;0;1;;1 -475;институт;м;1;1;1;0;;0;1;;1 -476;ход;м;1;1;1;0;;0;1;;1 -479;проект;м;1;1;1;0;;0;1;;1 -481;встреча;ж;1;1;1;0;;0;1;;1 -484;директор;м;1;1;1;0;директора;1;0;;1 -494;срок;м;1;1;1;0;;0;1;;1 -495;палец;м;1;1;0;0;пальцы;0;1;;1 -496;опыт;м;1;1;1;0;;0;1;;1 -500;служба;ж;1;1;1;0;;0;1;;1 -507;судьба;ж;1;1;1;0;;0;1;;1 -509;девушка;ж;1;1;1;0;;1;0;;1 -511;очередь;ж;1;1;1;0;;0;1;;1 -512;лес;м;1;1;0;0;леса;0;1;;1 -517;состав;м;1;1;1;0;;0;1;;1 -522;член;м;1;1;1;0;;1;1;;1 -527;событие;с;1;1;1;0;;0;1;;1 -528;объект;м;1;1;1;0;;0;1;;1 -529;зал;м;1;1;1;0;;0;1;;1 -533;значение;с;1;1;1;0;;0;1;;1 -536;период;м;1;1;1;0;;0;1;;1 -538;шаг;м;1;1;1;0;;0;1;;1 -542;брат;м;1;1;0;0;братья;1;0;;1 -543;искусство;с;1;1;1;0;;0;1;;1 -546;структура;ж;1;1;1;0;;0;1;;1 -548;номер;м;1;1;0;0;номера;0;1;;1 -550;пример;м;1;1;1;0;;0;1;;1 -552;исследование;с;1;1;1;0;;0;1;;1 -553;гражданин;м;1;1;0;0;граждане;1;0;;1 -556;игра;ж;1;1;1;0;;0;1;;1 -557;начальник;м;1;1;1;0;;1;0;;1 -559;рост;м;1;1;1;0;;0;1;;1 -562;тема;ж;1;1;1;0;;0;1;;1 -563;принцип;м;1;1;1;0;;0;1;;1 -569;метод;м;1;1;1;0;;0;1;;1 -570;тип;м;1;1;1;0;;0;1;;1 -571;фильм;м;1;1;1;0;;0;1;;1 -576;край;м;1;1;0;0;края;0;1;;1 -579;гость;м;1;1;1;0;;1;0;;1 -583;воздух;м;1;0;0;0;;0;1;;1 -588;характер;м;1;1;1;0;;0;1;;1 -589;борьба;ж;1;0;0;0;;0;1;;1 -590;использование;с;1;1;1;0;;0;1;;1 -593;размер;м;1;1;1;0;;0;1;;1 -595;образование;с;1;1;1;0;;0;1;;1 -597;мальчик;м;1;1;1;0;;1;0;;1 -598;кровь;ж;1;0;0;0;;0;1;;1 -599;район;м;1;1;1;0;;0;1;;1 -600;небо;с;1;1;0;0;небеса;0;1;;1 -602;армия;ж;1;1;1;0;;0;1;;1 -603;класс;м;1;1;1;0;;0;1;;1 -604;представитель;м;1;1;1;0;;1;0;;1 -605;участие;с;1;1;1;0;;0;1;;1 -606;девочка;ж;1;1;1;0;;1;0;;1 -607;политика;ж;1;1;1;0;;0;1;;1 -609;герой;м;1;1;1;0;;1;0;;1 -610;картина;ж;1;1;1;0;;0;1;;1 -612;доллар;м;1;1;1;0;;0;1;;1 -613;спина;ж;1;1;1;0;;0;1;;1 -614;территория;ж;1;1;1;0;;0;1;;1 -616;пол;м;1;1;1;0;;0;1;;1 -619;поле;с;1;1;1;0;;0;1;;1 -621;изменение;с;1;1;1;0;;0;1;;1 -624;направление;с;1;1;1;0;;0;1;;1 -625;рисунок;м;1;1;0;1;;0;1;;1 -626;течение;с;1;1;1;0;;0;1;;1 -628;церковь;ж;1;1;1;0;;0;1;;1 -629;банк;м;1;1;1;0;;0;1;;1 -633;сцена;ж;1;1;1;0;;0;1;;1 -634;население;с;1;0;0;0;;0;1;;1 -635;большинство;с;1;0;0;0;;0;1;;1 -639;музыка;ж;1;1;1;0;;0;1;;1 -641;правда;ж;1;1;1;0;;0;1;;1 -644;свобода;ж;1;1;1;0;;0;1;;1 -645;память;ж;1;0;0;0;;0;1;;1 -648;команда;ж;1;1;1;0;;0;1;;1 -650;союз;м;1;1;1;0;;0;1;;1 -653;врач;м;1;1;1;0;;1;0;;1 -655;договор;м;1;1;1;0;;0;1;;1 -659;дерево;с;1;1;1;0;;0;1;;1 -661;факт;м;1;1;1;0;;0;1;;1 -664;хозяин;м;1;1;0;0;хозяева;1;0;;1 -668;природа;ж;1;1;1;0;;0;1;;1 -676;телефон;м;1;1;1;0;;0;1;;1 -677;позиция;ж;1;1;1;0;;0;1;;1 -681;двор;м;1;1;1;0;;0;1;;1 -685;писатель;м;1;1;1;0;;1;0;;1 -686;самолёт;м;1;1;1;0;;0;1;;1 -687;объём;м;1;1;1;0;;0;1;;1 -689;род;м;1;1;1;0;;0;1;;1 -690;солнце;с;1;1;1;0;;0;1;;1 -691;вера;ж;1;1;1;0;;0;1;;1 -692;берег;м;1;1;0;0;берега;0;1;;1 -693;спектакль;м;1;1;1;0;;0;1;;1 -694;фирма;ж;1;1;1;0;;0;1;;1 -695;способ;м;1;1;1;0;;0;1;;1 -696;завод;м;1;1;1;0;;0;1;;1 -697;цвет;м;1;1;0;0;цвета;0;1;;1 -699;журнал;м;1;1;1;0;;0;1;;1 -700;руководитель;м;1;1;1;0;;1;0;;1 -701;специалист;м;1;1;1;0;;1;0;;1 -706;оценка;ж;1;1;1;0;;0;1;;1 -713;регион;м;1;1;1;0;;0;1;;1 -715;песня;ж;1;1;1;0;;0;1;;1 -716;процент;м;1;1;1;0;;0;1;;1 -717;родитель;м;1;1;1;0;;1;0;;1 -720;море;с;1;1;1;0;;0;1;;1 -722;требование;с;1;1;1;0;;0;1;;1 -726;основание;с;1;1;1;0;;0;1;;1 -727;половина;ж;1;1;1;0;;0;1;;1 -733;роман;м;1;1;1;0;;0;1;;1 -734;круг;м;1;1;1;0;;0;1;;1 -735;анализ;м;1;1;1;0;;0;1;;1 -736;стих;м;1;1;1;0;;0;1;;1 -737;автомобиль;м;1;1;1;0;;0;1;;1 -739;экономика;ж;1;1;1;0;;0;1;;1 -740;литература;ж;1;0;0;0;;0;1;;1 -741;бумага;ж;1;1;1;0;;0;1;;1 -747;поэт;м;1;1;1;0;;1;0;;1 -749;степень;ж;1;1;1;0;;0;1;;1 -752;господин;м;1;1;0;0;господа;1;0;;1 -753;надежда;ж;1;1;1;0;;0;1;;1 -756;предмет;м;1;1;1;0;;0;1;;1 -759;вариант;м;1;1;1;0;;0;1;;1 -760;министр;м;1;1;1;0;;1;0;;1 -763;граница;ж;1;1;1;0;;0;1;;1 -765;дух;м;1;1;1;0;;0;1;;1 -766;модель;ж;1;1;1;0;;0;1;;1 -767;операция;ж;1;1;1;0;;0;1;;1 -768;пара;ж;1;1;1;0;;0;1;;1 -769;сон;м;1;1;0;1;;0;1;;1 -771;название;с;1;1;1;0;;0;1;;1 -772;ум;м;1;1;1;0;;0;1;;1 -773;повод;м;1;1;1;0;;0;1;;1 -774;старик;м;1;1;1;0;;1;0;;1 -777;миллион;м;1;1;1;0;;0;1;;1 -780;успех;м;1;1;1;0;;0;1;;1 -784;счастье;с;1;0;0;0;;0;1;;1 -787;ребята;м;0;1;1;0;;0;1;;1 -789;кабинет;м;1;1;1;0;;0;1;;1 -794;магазин;м;1;1;1;0;;0;1;;1 -795;пространство;с;1;1;1;0;;0;1;;1 -796;выход;м;1;1;1;0;;0;1;;1 -798;удар;м;1;1;1;0;;0;1;;1 -799;база;ж;1;1;1;0;;0;1;;1 -800;знание;с;1;1;1;0;;0;1;;1 -801;текст;м;1;1;1;0;;0;1;;1 -804;защита;ж;1;1;1;0;;0;1;;1 -806;руководство;с;1;1;1;0;;0;1;;1 -808;площадь;ж;1;1;1;0;;0;1;;1 -809;сознание;с;1;1;1;0;;0;1;;1 -812;возраст;м;1;1;1;0;;0;1;;1 -815;участник;м;1;1;1;0;;1;0;;1 -816;участок;м;1;1;0;1;;0;1;;1 -818;пункт;м;1;1;1;0;;0;1;;1 -823;линия;ж;1;1;1;0;;0;1;;1 -825;желание;с;1;1;1;0;;0;1;;1 -826;папа;м;1;1;1;0;;1;0;;1 -829;доктор;м;1;1;1;0;доктора;1;0;;1 -830;губа;ж;1;1;1;0;;0;1;;1 -834;дочь;ж;1;1;0;0;дочери;0;1;;1 -836;среда;ж;1;1;1;0;;0;1;;1 -837;председатель;м;1;1;1;0;;1;0;;1 -839;солдат;м;1;1;1;0;;1;0;;1 -840;художник;м;1;1;1;0;;1;0;;1 -842;волос;м;1;1;1;0;;0;1;;1 -843;оружие;с;1;1;1;0;;0;1;;1 -845;соответствие;с;1;1;1;0;;0;1;;1 -847;ветер;м;1;1;0;1;ветра;0;1;;1 -849;парень;м;1;1;0;1;;1;0;;1 -851;зрение;с;1;1;1;0;;0;1;;1 -853;генерал;м;1;1;1;0;;1;0;;1 -855;огонь;м;1;1;0;1;;0;1;;1 -858;понятие;с;1;1;1;0;;0;1;;1 -859;строительство;с;1;1;1;0;;0;1;;1 -860;ухо;с;1;1;0;0;уши;0;1;;1 -862;грудь;ж;1;1;1;0;;0;1;;1 -863;нос;м;1;1;1;0;;0;1;;1 -868;страх;м;1;1;1;0;;0;1;;1 -869;услуга;ж;1;1;1;0;;0;1;;1 -873;содержание;с;1;1;1;0;;0;1;;1 -874;радость;ж;1;1;1;0;;0;1;;1 -875;безопасность;ж;1;1;1;0;;0;1;;1 -877;продукт;м;1;1;1;0;;0;1;;1 -879;комплекс;м;1;1;1;0;;0;1;;1 -880;бизнес;м;1;1;1;0;;0;1;;1 -884;сад;м;1;1;1;0;;0;1;;1 -888;сотрудник;м;1;1;1;0;;1;0;;1 -889;лето;с;1;0;0;0;;0;1;;1 -893;курс;м;1;1;1;0;;0;1;;1 -895;предложение;с;1;1;1;0;;0;1;;1 -901;рот;м;1;1;0;1;;0;1;;1 -903;технология;ж;1;1;1;0;;0;1;;1 -906;реформа;ж;1;1;1;0;;0;1;;1 -907;отсутствие;с;1;1;1;0;;0;1;;1 -909;собака;ж;1;1;1;0;;1;0;;1 -910;камень;м;1;1;0;1;;0;1;;1 -911;будущее;с;1;0;0;0;;0;1;;1 -913;рассказ;м;1;1;1;0;;0;1;;1 -914;контроль;м;1;1;1;0;;0;1;;1 -916;река;ж;1;1;1;0;;0;1;;1 -918;продукция;ж;1;1;1;0;;0;1;;1 -919;сумма;ж;1;1;1;0;;0;1;;1 -920;техника;ж;1;1;1;0;;0;1;;1 -927;здание;с;1;1;1;0;;0;1;;1 -928;сфера;ж;1;1;1;0;;0;1;;1 -932;необходимость;ж;1;1;1;0;;0;1;;1 -934;фонд;м;1;1;1;0;;0;1;;1 -939;лист;м;1;1;1;0;;0;1;;1 -942;республика;ж;1;1;1;0;;0;1;;1 -943;хозяйство;с;1;1;1;0;;0;1;;1 -948;воля;ж;1;1;1;0;;0;1;;1 -950;бюджет;м;1;1;1;0;;0;1;;1 -953;снег;м;1;1;0;0;снега;0;1;;1 -954;деревня;ж;1;1;1;0;;0;1;;1 -956;мужик;м;1;1;1;0;;1;0;;1 -959;элемент;м;1;1;1;0;;0;1;;1 -960;обстоятельство;с;1;1;1;0;;0;1;;1 -962;немец;м;1;1;0;1;;1;0;;1 -964;победа;ж;1;1;1;0;;0;1;;1 -965;источник;м;1;1;1;0;;0;1;;1 -975;звезда;ж;1;1;1;0;;0;1;;1 -977;выбор;м;1;1;1;0;;0;1;;1 -979;масса;ж;1;1;1;0;;0;1;;1 -981;итог;м;1;1;1;0;;0;1;;1 -982;сестра;ж;1;1;1;0;;1;0;специальный падеж;1 -986;практика;ж;1;1;1;0;;0;1;;1 -991;карман;м;1;1;1;0;;0;1;;1 -996;слава;ж;1;1;1;0;;0;1;;1 -997;кухня;ж;1;1;1;0;;0;1;;1 -998;определение;с;1;1;1;0;;0;1;;1 -1002;войско;с;1;1;1;0;;0;1;;1 -1003;комиссия;ж;1;1;1;0;;0;1;;1 -1005;капитан;м;1;1;1;0;;1;0;;1 -1006;работник;м;1;1;1;0;;1;0;;1 -1009;обеспечение;с;1;1;1;0;;0;1;;1 -1010;офицер;м;1;1;1;0;;1;0;;1 -1013;фамилия;ж;1;1;1;0;;0;1;;1 -1014;предел;м;1;1;1;0;;0;1;;1 -1024;бутылка;ж;1;1;1;0;;0;1;;1 -1025;бой;м;1;1;1;0;;0;1;;1 -1029;теория;ж;1;1;1;0;;0;1;;1 -1030;зона;ж;1;1;1;0;;0;1;;1 -1031;отдел;м;1;1;1;0;;0;1;;1 -1032;зуб;м;1;1;1;0;;0;1;;1 -1033;разработка;ж;1;1;1;0;;0;1;;1 -1039;личность;ж;1;1;1;0;;1;1;;1 -1040;гора;м;1;1;1;0;;0;1;;1 -1042;товар;м;1;1;1;0;;0;1;;1 -1046;метр;м;1;1;1;0;;0;1;;1 -1049;праздник;м;1;1;1;0;;0;1;;1 -1050;влияние;с;1;1;1;0;;0;1;;1 -1052;читатель;м;1;1;1;0;;1;0;;1 -1054;удовольствие;с;1;1;1;0;;0;1;;1 -1055;актер;м;1;1;1;0;;1;0;;1 -1056;слеза;ж;1;1;1;0;;0;1;;1 -1059;ответственность;ж;1;1;1;0;;0;1;;1 -1060;учитель;м;1;1;0;0;учителя;1;0;;1 -1061;акт;м;1;1;1;0;;0;1;;1 -1065;боль;ж;1;1;1;0;;0;1;;1 -1066;множество;с;1;1;1;0;;0;1;;1 -1068;особенность;ж;1;1;1;0;;0;1;;1 -1070;показатель;м;1;1;1;0;;0;1;;1 -1072;корабль;м;1;1;1;0;;0;1;;1 -1074;звук;м;1;1;1;0;;0;1;;1 -1077;впечатление;с;1;1;1;0;;0;1;;1 -1079;частность;ж;1;1;1;0;;0;1;;1 -1080;детство;с;1;0;0;0;;0;1;;1 -1081;вывод;м;1;1;1;0;;0;1;;1 -1082;профессор;м;1;1;1;0;профессора;1;0;;1 -1084;доля;ж;1;1;1;0;;0;1;;1 -1085;норма;ж;1;1;1;0;;0;1;;1 -1087;прошлое;с;1;0;0;0;;0;1;;1 -1089;командир;м;1;1;1;0;;1;0;;1 -1090;коридор;м;1;1;1;0;;0;1;;1 -1092;рамка;ж;1;1;1;0;;0;1;;1 -1096;враг;м;1;1;1;0;;0;1;;1 -1098;этап;м;1;1;1;0;;0;1;;1 -1099;черт;м;1;1;1;0;;0;1;;1 -1100;дед;м;1;1;1;0;;1;0;;1 -1102;собрание;с;1;1;1;0;;0;1;;1 -1103;прием;м;1;1;1;0;;0;1;;1 -1105;болезнь;м;1;1;1;0;;0;1;;1 -1106;клетка;ж;1;1;1;0;;0;1;;1 -1107;кожа;ж;1;1;1;0;;0;1;;1 -1108;заявление;с;1;1;1;0;;0;1;;1 -1110;попытка;ж;1;1;1;0;;0;1;;1 -1111;сравнение;с;1;1;1;0;;0;1;;1 -1113;расчет;м;1;1;1;0;;0;1;;1 -1115;депутат;м;1;1;1;0;;1;0;;1 -1123;комитет;м;1;1;1;0;;0;1;;1 -1124;знак;м;1;1;1;0;;0;1;;1 -1128;дядя;м;1;1;1;0;;1;0;;1 -1129;учет;м;1;1;1;0;;0;1;;1 -1130;хлеб;м;1;1;1;0;хлеба;0;1;;1 -1136;чай;м;1;1;1;0;;0;1;;1 -1137;режим;м;1;1;1;0;;0;1;;1 -1139;вирус;м;1;1;1;0;;0;1;;1 -1142;выражение;с;1;1;1;0;;0;1;;1 -1146;здоровье;с;1;0;0;0;;0;1;;1 -1147;зима;ж;1;1;1;0;;0;1;;1 -1150;десяток;м;1;1;0;1;;0;1;;1 -1151;глубина;ж;1;1;1;0;;0;1;;1 -1152;сеть;ж;1;1;1;0;;0;1;;1 -1153;студент;м;1;1;1;0;;1;0;;1 -1155;секунда;ж;1;1;1;0;;0;1;;1 -1156;скорость;ж;1;1;1;0;;0;1;;1 -1157;поиск;м;1;1;1;0;;0;1;;1 -1159;суть;ж;1;1;1;0;;0;1;;1 -1160;налог;м;1;1;1;0;;0;1;;1 -1161;ошибка;ж;1;1;1;0;;0;1;;1 -1167;доход;м;1;1;1;0;;0;1;;1 -1169;режиссер;м;1;1;1;0;;1;0;;1 -1170;поверхность;ж;1;1;1;0;;0;1;;1 -1173;карта;ж;1;1;1;0;;0;1;;1 -1174;клуб;м;1;1;1;0;;0;1;;1 -1176;станция;ж;1;1;1;0;;0;1;;1 -1177;революция;ж;1;1;1;0;;0;1;;1 -1178;колено;с;1;1;1;0;;0;1;;1 -1179;министерство;с;1;1;1;0;;0;1;;1 -1180;стекло;с;1;1;1;0;;0;1;;1 -1181;этаж;м;1;1;1;0;;0;1;;1 -1183;высота;ж;1;1;1;0;;0;1;;1 -1185;бабушка;ж;1;1;1;0;;1;0;специальный падеж;1 -1188;трубка;ж;1;1;1;0;;0;1;;1 -1195;газ;м;1;1;1;0;;0;1;;1 -1197;мастер;м;1;1;1;0;мастера;1;0;;1 -1200;поведение;с;1;0;0;0;;0;1;;1 -1205;столица;ж;1;1;1;0;;0;1;;1 -1206;механизм;м;1;1;1;0;;0;1;;1 -1207;передача;ж;1;1;1;0;;0;1;;1 -1211;подход;м;1;1;1;0;;0;1;;1 -1214;энергия;ж;1;1;1;0;;0;1;;1 -1219;кино;с;1;0;0;0;;0;1;;1 -1221;заместитель;м;1;1;1;0;;1;0;;1 -1226;ресурс;м;1;1;1;0;;0;1;;1 -1228;акция;ж;1;1;1;0;;0;1;;1 -1230;рождение;с;1;1;1;0;;0;1;;1 -1233;администрация;ж;1;1;1;0;;0;1;;1 -1237;стоимость;ж;1;1;1;0;;0;1;;1 -1239;артист;м;1;1;1;0;;1;0;;1 -1246;сосед;м;1;1;1;0;;1;0;;1 -1247;фраза;ж;1;1;1;0;;0;1;;1 -1249;фигура;ж;1;1;1;0;;1;1;;1 -1251;субъект;м;1;1;1;0;;0;1;;1 -1253;реакция;ж;1;1;1;0;;0;1;;1 -1254;список;м;1;1;0;1;;0;1;;1 -1255;фотография;ж;1;1;1;0;;0;1;;1 -1256;журналист;м;1;1;1;0;;1;0;;1 -1257;май;м;1;1;1;0;;0;1;;1 -1260;нарушение;с;1;1;1;0;;0;1;;1 -1261;заседание;с;1;1;1;0;;0;1;;1 -1262;толпа;ж;1;1;1;0;;0;1;;1 -1263;больница;ж;1;1;1;0;;0;1;;1 -1264;существо;с;1;1;1;0;;0;1;;1 -1268;свойство;с;1;1;1;0;;0;1;;1 -1269;долг;м;1;1;1;0;;0;1;;1 -1270;поколение;с;1;1;1;0;;0;1;;1 -1273;схема;ж;1;1;1;0;;0;1;;1 -1274;усилие;с;1;1;1;0;;0;1;;1 -1275;отличие;с;1;1;1;0;;0;1;;1 -1278;остров;м;1;1;0;0;острова;0;1;;1 -1280;противник;м;1;1;1;0;;1;0;;1 -1281;волна;ж;1;1;1;0;;0;1;;1 -1285;реализация;ж;1;1;1;0;;0;1;;1 -1286;страница;ж;1;1;1;0;;0;1;;1 -1287;формирование;с;1;1;1;0;;0;1;;1 -1288;житель;м;1;1;1;0;;1;0;;1 -1291;красота;ж;1;1;1;0;;0;1;;1 -1294;птица;ж;1;1;1;0;;1;1;;1 -1297;растение;с;1;1;1;0;;0;1;;1 -1298;тень;ж;1;1;1;0;;0;1;;1 -1299;явление;с;1;1;1;0;;0;1;;1 -1300;храм;м;1;1;1;0;;0;1;;1 -1301;запах;м;1;1;1;0;;0;1;;1 -1303;водка;ж;1;0;0;0;;0;1;;1 -1307;ужас;м;1;1;1;0;;0;1;;1 -1308;одежда;ж;1;1;1;0;;0;1;;1 -1310;кресло;с;1;1;1;0;;0;1;;1 -1312;поезд;м;1;1;1;0;поезда;0;1;;1 -1313;университет;м;1;1;1;0;;0;1;;1 -1317;традиция;ж;1;1;1;0;;0;1;;1 -1318;адрес;м;1;1;1;0;адреса;0;1;;1 -1319;декабрь;м;1;1;1;0;;0;1;;1 -1320;ладонь;ж;1;1;1;0;;0;1;;1 -1322;сведение;с;1;1;1;0;;0;1;;1 -1324;цветок;м;1;1;0;1;;0;1;;1 -1327;лидер;м;1;1;1;0;;0;1;;1 -1328;октябрь;м;1;1;1;0;;0;1;;1 -1329;занятие;с;1;1;1;0;;0;1;;1 -1332;сентябрь;м;1;1;1;0;;0;1;;1 -1333;помещение;с;1;1;1;0;;0;1;;1 -1338;зритель;м;1;1;1;0;;1;0;;1 -1341;редакция;ж;1;1;1;0;;0;1;;1 -1344;стиль;м;1;1;1;0;;0;1;;1 -1345;весна;ж;1;0;0;0;;0;1;;1 -1347;фактор;м;1;1;1;0;;0;1;;1 -1348;август;м;1;1;1;0;;0;1;;1 -1349;известие;с;1;1;1;0;;0;1;;1 -1350;зависимость;ж;1;1;1;0;;0;1;;1 -1351;охрана;ж;1;0;0;0;;0;1;;1 -1354;оборудование;с;1;0;0;0;;0;1;;1 -1356;концерт;м;1;1;1;0;;0;1;;1 -1357;отделение;с;1;1;1;0;;0;1;;1 -1358;расход;м;1;1;1;0;;0;1;;1 -1360;выставка;ж;1;1;1;0;;0;1;;1 -1361;милиция;ж;1;1;1;0;;0;1;;1 -1366;переход;м;1;1;1;0;;0;1;;1 -1368;эпоха;м;1;1;1;0;;0;1;;1 -1369;запад;м;1;0;0;0;;0;1;;1 -1371;произведение;с;1;1;1;0;;0;1;;1 -1372;родина;ж;1;1;1;0;;0;1;;1 -1373;собственность;ж;1;1;1;0;;0;1;;1 -1374;тайна;ж;1;1;1;0;;0;1;;1 -1378;трава;ж;1;1;1;0;;0;1;;1 -1380;лагерь;м;1;1;1;0;лагеря;0;1;;1 -1382;имущество;с;1;0;0;0;;0;1;;1 -1384;кровать;ж;1;1;1;0;;0;1;;1 -1390;аппарат;м;1;1;1;0;;0;1;;1 -1393;середина;ж;1;1;1;0;;0;1;;1 -1396;март;м;1;1;1;0;;0;1;;1 -1398;клиент;м;1;1;1;0;;1;0;;1 -1400;дама;ж;1;1;1;0;;1;0;;1 -1403;фронт;м;1;1;1;0;;0;1;;1 -1405;отрасль;ж;1;1;1;0;;0;1;;1 -1406;стул;м;1;1;0;0;стулья;0;1;;1 -1407;беседа;ж;1;1;1;0;;0;1;;1 -1414;законодательство;с;1;0;0;0;;0;1;;1 -1415;продажа;ж;1;1;1;0;;0;1;;1 -1416;повышение;с;1;1;1;0;;0;1;;1 -1420;музей;м;1;1;1;0;;0;1;;1 -1423;след;м;1;1;1;0;;0;1;;1 -1425;полковник;м;1;1;1;0;;1;0;;1 -1427;сомнение;с;1;1;1;0;;0;1;;1 -1428;понимание;с;1;1;1;0;;0;1;;1 -1433;апрель;м;1;1;1;0;;0;1;;1 -1434;князь;м;1;1;1;0;князья;1;0;;1 -1436;рыба;ж;1;1;1;0;;1;1;;1 -1442;дума;ж;1;1;1;0;;0;1;;1 -1445;кодекс;м;1;1;1;0;;0;1;;1 -1446;сутки;м;0;1;1;0;;0;1;;1 -1447;чудо;с;1;1;0;0;чудеса;0;1;;1 -1449;шея;ж;1;1;1;0;;0;1;;1 -1451;судья;м;1;1;1;0;;1;0;;1 -1456;крыша;м;1;1;1;0;;0;1;;1 -1457;настроение;с;1;1;1;0;;0;1;;1 -1460;нечто;с;1;0;0;0;;0;1;;1 -1461;поток;м;1;1;1;0;;0;1;;1 -1464;должность;ж;1;1;1;0;;0;1;;1 -1465;преступление;с;1;1;1;0;;0;1;;1 -1467;мозг;м;1;1;1;0;;0;1;;1 -1470;честь;ж;1;0;0;0;;0;1;;1 -1471;пост;м;1;1;1;0;;0;1;;1 -1474;еврей;м;1;1;1;0;;1;0;;1 -1477;июнь;м;1;1;1;0;;0;1;;1 -1479;сотня;ж;1;1;1;0;;0;1;;1 -1490;дождь;м;1;1;1;0;;0;1;;1 -1492;лестница;ж;1;1;1;0;;0;1;;1 -1497;дача;ж;1;1;1;0;;0;1;;1 -1500;установка;ж;1;1;1;0;;0;1;;1 -1505;образец;м;1;1;0;1;;0;1;;1 -1506;труба;ж;1;1;1;0;;0;1;;1 -1512;осень;ж;1;1;1;0;;0;1;;1 -1518;костюм;м;1;1;1;0;;0;1;;1 -1522;баба;ж;1;1;1;0;;1;0;;1 -1523;ценность;ж;1;1;1;0;;0;1;;1 -1524;обязанность;ж;1;1;1;0;;0;1;;1 -1525;пьеса;ж;1;1;1;0;;0;1;;1 -1527;таблица;ж;1;1;1;0;;0;1;;1 -1528;вино;с;1;1;0;0;вины;0;1;;1 -1529;воспоминание;с;1;1;1;0;;0;1;;1 -1530;лошадь;ж;1;1;1;0;;1;1;;1 -1534;коллега;м;1;1;1;0;;1;0;;1 -1535;организм;м;1;1;1;0;;0;1;;1 -1537;ученик;м;1;1;1;0;;1;0;;1 -1538;учреждение;с;1;1;1;0;;0;1;;1 -1540;открытие;с;1;1;1;0;;0;1;;1 -1542;том;м;1;1;1;0;тома;0;1;;1 -1543;черта;ж;1;1;1;0;;0;1;;1 -1546;характеристика;ж;1;1;1;0;;0;1;;1 -1549;выполнение;с;1;1;1;0;;0;1;;1 -1550;оборона;ж;1;1;1;0;;0;1;;1 -1551;выступление;с;1;1;1;0;;0;1;;1 -1552;температура;ж;1;1;1;0;;0;1;;1 -1554;перспектива;ж;1;1;1;0;;0;1;;1 -1556;подруга;ж;1;1;1;0;;1;0;;1 -1557;приказ;м;1;1;1;0;;0;1;;1 -1559;жертва;ж;1;1;1;0;;1;1;;1 -1562;ресторан;м;1;1;1;0;;0;1;;1 -1563;километр;м;1;1;1;0;;0;1;;1 -1565;спор;м;1;1;1;0;;0;1;;1 -1569;вкус;м;1;1;1;0;;0;1;;1 -1571;признак;м;1;1;1;0;;0;1;;1 -1572;промышленность;ж;1;1;1;0;;0;1;;1 -1574;американец;м;1;1;0;1;;1;0;;1 -1575;лоб;м;1;1;0;1;;0;1;;1 -1576;заключение;с;1;1;1;0;;0;1;;1 -1578;восток;м;1;0;0;0;;0;1;;1 -1580;исключение;с;1;1;1;0;;0;1;;1 -1584;ключ;м;1;1;1;0;;0;1;;1 -1585;постановление;с;1;1;1;0;;0;1;;1 -1589;слой;м;1;1;1;0;;0;1;;1 -1590;бок;м;1;1;0;0;бока;0;1;;1 -1595;июль;м;1;1;1;0;;0;1;;1 -1597;перевод;м;1;1;1;0;;0;1;;1 -1598;секретарь;м;1;1;1;0;;1;0;;1 -1599;кусок;м;1;1;0;1;;0;1;;1 -1601;слух;м;1;1;1;0;;0;1;;1 -1605;польза;ж;1;1;1;0;;0;1;;1 -1606;звонок;м;1;1;0;1;;0;1;;1 -1608;обстановка;ж;1;1;1;0;;0;1;;1 -1613;чиновник;м;1;1;1;0;;1;0;;1 -1615;соглашение;с;1;1;1;0;;0;1;;1 -1616;деталь;ж;1;1;1;0;;0;1;;1 -1619;тишина;ж;1;0;0;0;;0;1;;1 -1620;зарплата;ж;1;1;1;0;;0;1;;1 -1622;билет;м;1;1;1;0;;0;1;;1 -1624;подарок;м;1;1;0;1;;0;1;;1 -1625;тюрьма;ж;1;1;1;0;;0;1;;1 -1626;ящик;м;1;1;1;0;;0;1;;1 -1627;конкурс;м;1;1;1;0;;0;1;;1 -1629;книжка;ж;1;1;1;0;;0;1;;1 -1631;изучение;с;1;1;1;0;;0;1;;1 -1636;просьба;ж;1;1;1;0;;0;1;;1 -1637;царь;м;1;1;1;0;;1;0;;1 -1638;публика;ж;1;0;0;0;;0;1;;1 -1639;смех;м;1;1;0;0;смеха;0;1;;1 -1641;сообщение;с;1;1;1;0;;0;1;;1 -1642;угроза;ж;1;1;1;0;;0;1;;1 -1643;беда;ж;1;1;1;0;;0;1;;1 -1650;блок;м;1;1;1;0;;0;1;;1 -1651;достижение;с;1;1;1;0;;0;1;;1 -1652;назначение;с;1;1;1;0;;0;1;;1 -1653;реклама;ж;1;1;1;0;;0;1;;1 -1656;портрет;м;1;1;1;0;;0;1;;1 -1662;масло;с;1;1;1;0;;0;1;;1 -1664;стакан;м;1;1;1;0;;0;1;;1 -1668;урок;м;1;1;1;0;;0;1;;1 -1672;крик;м;1;1;1;0;;0;1;;1 -1676;творчество;с;1;0;0;0;;0;1;;1 -1677;телевизор;м;1;1;1;0;;0;1;;1 -1679;инструмент;м;1;1;1;0;;0;1;;1 -1681;концепция;ж;1;1;1;0;;0;1;;1 -1683;лейтенант;м;1;1;1;0;;1;0;;1 -1684;экран;м;1;1;1;0;;0;1;;1 -1685;дно;с;1;0;0;0;;0;1;;1 -1686;реальность;ж;1;1;1;0;;0;1;;1 -1689;канал;м;1;1;1;0;;0;1;;1 -1691;мясо;с;1;0;0;0;;0;1;;1 -1693;щека;ж;1;1;1;0;;0;1;;1 -1697;конфликт;м;1;1;1;0;;0;1;;1 -1701;запись;ж;1;1;1;0;;0;1;;1 -1703;вагон;м;1;1;1;0;;0;1;;1 -1706;площадка;ж;1;1;1;0;;0;1;;1 -1707;последствие;с;1;1;1;0;;0;1;;1 -1711;зеркало;с;1;1;1;0;;0;1;;1 -1712;тон;м;1;1;1;0;тона;0;1;;1 -1715;академия;ж;1;1;1;0;;0;1;;1 -1721;палата;ж;1;1;1;0;;0;1;;1 -1722;потребность;ж;1;1;1;0;;0;1;;1 -1725;ноябрь;м;1;1;1;0;;0;1;;1 -1726;увеличение;с;1;1;1;0;;0;1;;1 -1728;дурак;м;1;1;1;0;;1;0;;1 -1730;поездка;ж;1;1;1;0;;0;1;;1 -1731;обед;м;1;1;1;0;;0;1;;1 -1733;потеря;ж;1;1;1;0;;0;1;;1 -1736;февраль;м;1;1;1;0;;0;1;;1 -1738;мероприятие;с;1;1;1;0;;0;1;;1 -1739;парк;м;1;1;1;0;;0;1;;1 -1740;принятие;с;1;1;1;0;;0;1;;1 -1741;устройство;с;1;1;1;0;;0;1;;1 -1742;вещество;с;1;1;1;0;;0;1;;1 -1747;категория;ж;1;1;1;0;;0;1;;1 -1749;сезон;м;1;1;1;0;;0;1;;1 -1754;гостиница;ж;1;1;1;0;;0;1;;1 -1755;издание;с;1;1;1;0;;0;1;;1 -1761;объединение;с;1;1;1;0;;0;1;;1 -1763;темнота;ж;1;0;0;0;;0;1;;1 -1764;человечество;с;1;0;0;0;;0;1;;1 -1768;колесо;с;1;1;1;0;;0;1;;1 -1771;разрешение;с;1;1;1;0;;0;1;;1 -1772;воздействие;с;1;1;1;0;;0;1;;1 -1773;коллектив;м;1;1;1;0;;0;1;;1 -1774;камера;ж;1;1;1;0;;0;1;;1 -1776;запас;м;1;1;1;0;;0;1;;1 -1778;следствие;с;1;1;1;0;;0;1;;1 -1779;длина;ж;1;1;1;0;;0;1;;1 -1782;крыло;с;1;1;0;0;крылья;0;1;;1 -1783;округ;м;1;1;1;0;округа;0;1;;1 -1785;фон;м;1;1;1;0;;0;1;;1 -1786;кандидат;м;1;1;1;0;;1;0;;1 -1787;родственник;м;1;1;1;0;;1;0;;1 -1791;давление;с;1;0;0;0;;0;1;;1 -1794;присутствие;с;1;1;1;0;;0;1;;1 -1797;доска;ж;1;1;1;0;;0;1;;1 -1799;партнер;м;1;1;1;0;;1;0;;1 -1800;двигатель;м;1;1;1;0;;0;1;;1 -1801;шум;м;1;1;1;0;;0;1;;1 -1802;достоинство;с;1;1;1;0;;0;1;;1 -1805;грех;м;1;1;1;0;;0;1;;1 -1807;нож;м;1;1;1;0;;0;1;;1 -1808;полет;м;1;1;1;0;;0;1;;1 -1811;страсть;ж;1;1;1;0;;0;1;;1 -1816;испытание;с;1;1;1;0;;0;1;;1 -1819;оплата;ж;1;1;1;0;;0;1;;1 -1820;разница;ж;1;1;1;0;;0;1;;1 -1822;водитель;м;1;1;1;0;;1;0;;1 -1825;пакет;м;1;1;1;0;;0;1;;1 -1828;формула;ж;1;1;1;0;;0;1;;1 -1830;живот;м;1;1;1;0;;0;1;;1 -1831;капитал;м;1;1;1;0;;0;1;;1 -1837;мост;м;1;1;1;0;;0;1;;1 -1840;новость;ж;1;1;1;0;;0;1;;1 -1841;эффект;м;1;1;1;0;;0;1;;1 -1842;вход;м;1;1;1;0;;0;1;;1 -1844;губернатор;м;1;1;1;0;;1;0;;1 -1849;доклад;м;1;1;1;0;;0;1;;1 -1852;смена;ж;1;1;1;0;;0;1;;1 -1853;убийство;с;1;1;1;0;;0;1;;1 -1854;эксперт;м;1;1;1;0;;1;0;;1 -1861;автобус;м;1;1;1;0;;0;1;;1 -1862;платье;с;1;1;1;0;;0;1;;1 -1866;кадр;м;1;1;1;0;;1;1;;1 -1868;тетя;ж;1;1;1;0;;1;0;;1 -1871;общение;с;1;1;1;0;;0;1;;1 -1873;психология;ж;1;1;1;0;;0;1;;1 -1874;лев;м;1;1;0;0;львы;1;0;;1 -1876;порог;м;1;1;1;0;;0;1;;1 -1877;проверка;ж;1;1;1;0;;0;1;;1 -1879;процедура;ж;1;1;1;0;;0;1;;1 -1881;ремонт;м;1;1;1;0;;0;1;;1 -1884;обращение;с;1;1;1;0;;0;1;;1 -1885;обучение;с;1;1;1;0;;0;1;;1 -1887;ожидание;с;1;1;1;0;;0;1;;1 -1891;памятник;м;1;1;1;0;;0;1;;1 -1892;корень;м;1;1;0;1;;0;1;;1 -1893;наблюдение;с;1;1;1;0;;0;1;;1 -1895;буква;ж;1;1;1;0;;0;1;;1 -1897;доказательство;с;1;1;1;0;;0;1;;1 -1900;признание;с;1;1;1;0;;0;1;;1 -1903;постель;ж;1;1;1;0;;0;1;;1 -1905;штаб;м;1;1;1;0;;0;1;;1 -1907;владелец;м;1;1;0;0;владельцы;1;0;;1 -1908;компьютер;м;1;1;1;0;;0;1;;1 -1911;инженер;м;1;1;1;0;;1;0;;1 -1917;старуха;ж;1;1;1;0;;1;0;;1 -1918;лодка;ж;1;1;1;0;;0;1;;1 -1919;ракета;ж;1;1;1;0;;0;1;;1 -1921;серия;ж;1;1;1;0;;0;1;;1 -1923;шутка;ж;1;1;1;0;;0;1;;1 -1924;вершина;ж;1;1;1;0;;0;1;;1 -1926;выпуск;м;1;1;1;0;;0;1;;1 -1927;кулак;м;1;1;1;0;;0;1;;1 -1928;лед;м;1;1;0;0;льды;0;1;;1 -1930;торговля;ж;1;0;0;0;;0;1;;1 -1934;нефть;ж;1;1;1;0;;0;1;;1 -1936;молодежь;ж;1;0;0;0;;0;1;;1 -1937;цифра;ж;1;1;1;0;;0;1;;1 -1938;корпус;м;1;1;1;0;;0;1;;1 -1940;недостаток;м;1;1;0;1;;0;1;;1 -1942;сапог;м;1;1;1;0;;0;1;;1 -1944;сущность;ж;1;1;1;0;;0;1;;1 -1945;талант;м;1;1;1;0;;0;1;;1 -1948;эффективность;ж;1;1;1;0;;0;1;;1 -1951;кофе;м;1;0;0;0;;0;1;;1 -1953;полоса;ж;1;1;1;0;;0;1;;1 -1963;рассмотрение;с;1;1;1;0;;0;1;;1 -1967;сбор;м;1;1;1;0;;0;1;;1 -1968;штат;м;1;1;1;0;;0;1;;1 -1970;следователь;м;1;1;1;0;;1;0;;1 -1971;жильё;с;1;0;0;0;;0;1;;1 -1972;мешок;м;1;1;0;1;;0;1;;1 -1974;описание;с;1;1;1;0;;0;1;;1 -1976;куст;м;1;1;1;0;;0;1;;1 -1977;отказ;м;1;1;1;0;;0;1;;1 -1979;замок;м;1;1;1;0;;0;1;;1 -1980;пропасть;ж;1;1;1;0;;0;1;;1 -1982;редактор;м;1;1;1;0;;1;0;;1 -1984;дворец;м;1;1;0;1;;0;1;;1 -1985;забота;ж;1;1;1;0;;0;1;;1 -1987;пиво;с;1;0;0;0;;0;1;;1 -1990;диван;м;1;1;1;0;;0;1;;1 -1994;столик;м;1;1;1;0;;0;1;;1 -1997;эксперимент;м;1;1;1;0;;0;1;;1 +Номер;Слово;Род / число;Есть единственное число;Есть множественное число;Есть стандартное множественное число;Есть стандартное множественное число, полученное путем удаления последней гласной из базы;Есть стандартное окончание множественного числа;Есть альтернативное окончание множественного числа;Специальные мн. числа;Может быть одушевленным;Может быть неодушевленным;Специальная форма падежа;1 +307;любовь;ж;1;0;0;0;0;0;;0;1;;1 +338;помощь;ж;1;0;0;0;0;0;;0;1;;1 +589;борьба;ж;1;0;0;0;0;0;;0;1;;1 +598;кровь;ж;1;0;0;0;0;0;;0;1;;1 +645;память;ж;1;0;0;0;0;0;;0;1;;1 +740;литература;ж;1;0;0;0;0;0;;0;1;;1 +1303;водка;ж;1;0;0;0;0;0;;0;1;;1 +1345;весна;ж;1;0;0;0;0;0;;0;1;;1 +1351;охрана;ж;1;0;0;0;0;0;;0;1;;1 +1470;честь;ж;1;0;0;0;0;0;;0;1;;1 +1619;тишина;ж;1;0;0;0;0;0;;0;1;;1 +1638;публика;ж;1;0;0;0;0;0;;0;1;;1 +1763;темнота;ж;1;0;0;0;0;0;;0;1;;1 +1930;торговля;ж;1;0;0;0;0;0;;0;1;;1 +1936;молодежь;ж;1;0;0;0;0;0;;0;1;;1 +272;свет;м;1;0;0;0;0;0;;0;1;;1 +583;воздух;м;1;0;0;0;0;0;;0;1;;1 +1369;запад;м;1;0;0;0;0;0;;0;1;;1 +1578;восток;м;1;0;0;0;0;0;;0;1;;1 +1951;кофе;м;1;0;0;0;0;0;;0;1;;1 +634;население;с;1;0;0;0;0;0;;0;1;;1 +635;большинство;с;1;0;0;0;0;0;;0;1;;1 +784;счастье;с;1;0;0;0;0;0;;0;1;;1 +889;лето;с;1;0;0;0;0;0;;0;1;;1 +911;будущее;с;1;0;0;0;0;0;;0;1;;1 +1080;детство;с;1;0;0;0;0;0;;0;1;;1 +1087;прошлое;с;1;0;0;0;0;0;;0;1;;1 +1146;здоровье;с;1;0;0;0;0;0;;0;1;;1 +1200;поведение;с;1;0;0;0;0;0;;0;1;;1 +1219;кино;с;1;0;0;0;0;0;;0;1;;1 +1354;оборудование;с;1;0;0;0;0;0;;0;1;;1 +1382;имущество;с;1;0;0;0;0;0;;0;1;;1 +1414;законодательство;с;1;0;0;0;0;0;;0;1;;1 +1460;нечто;с;1;0;0;0;0;0;;0;1;;1 +1676;творчество;с;1;0;0;0;0;0;;0;1;;1 +1685;дно;с;1;0;0;0;0;0;;0;1;;1 +1691;мясо;с;1;0;0;0;0;0;;0;1;;1 +1764;человечество;с;1;0;0;0;0;0;;0;1;;1 +1791;давление;с;1;0;0;0;0;0;;0;1;;1 +1971;жильё;с;1;0;0;0;0;0;;0;1;;1 +1987;пиво;с;1;0;0;0;0;0;;0;1;;1 +66;жизнь;ж;1;1;1;0;1;0;;0;1;;1 +74;рука;ж;1;1;1;0;1;0;;0;1;;1 +87;работа;ж;1;1;1;0;1;0;;0;1;;1 +121;сторона;ж;1;1;1;0;1;0;;0;1;;1 +125;страна;ж;1;1;1;0;1;0;;0;1;;1 +132;голова;ж;1;1;1;0;1;0;;0;1;;1 +140;сила;ж;1;1;1;0;1;0;;0;1;;1 +146;система;ж;1;1;1;0;1;0;;0;1;;1 +154;часть;ж;1;1;1;0;1;0;;0;1;;1 +171;женщина;ж;1;1;1;0;1;0;;1;0;;1 +178;деньги;ж;0;1;1;0;1;0;;0;1;;1 +184;земля;ж;1;1;1;0;1;0;;0;1;;1 +187;машина;ж;1;1;1;0;1;0;;0;1;;1 +197;проблема;ж;1;1;1;0;1;0;;0;1;;1 +205;нога;ж;1;1;1;0;1;0;;0;1;;1 +210;дверь;ж;1;1;1;0;1;0;;0;1;;1 +214;история;ж;1;1;1;0;1;0;;0;1;;1 +216;власть;ж;1;1;1;0;1;0;;0;1;;1 +219;война;ж;1;1;1;0;1;0;;0;1;;1 +230;книга;ж;1;1;1;0;1;0;;0;1;;1 +236;ночь;ж;1;1;1;0;1;0;;0;1;;1 +240;область;ж;1;1;1;0;1;0;;0;1;;1 +244;статья;ж;1;1;1;0;1;0;;0;1;;1 +247;компания;ж;1;1;1;0;1;0;;0;1;;1 +255;жена;ж;1;1;1;0;1;0;;1;0;;1 +258;группа;ж;1;1;1;0;1;0;;0;1;;1 +275;душа;ж;1;1;1;0;1;0;;0;1;;1 +282;форма;ж;1;1;1;0;1;0;;0;1;;1 +283;связь;ж;1;1;1;0;1;0;;0;1;;1 +285;минута;ж;1;1;1;0;1;0;;0;1;;1 +292;улица;ж;1;1;1;0;1;0;;0;1;;1 +299;мысль;ж;1;1;1;0;1;0;;0;1;;1 +300;дорога;ж;1;1;1;0;1;0;;0;1;;1 +301;мать;ж;1;1;0;0;1;0;матери;1;0;;1 +309;мама;ж;1;1;1;0;1;0;;1;0;;1 +315;школа;ж;1;1;1;0;1;0;;0;1;;1 +318;цель;ж;1;1;1;0;1;0;;0;1;;1 +322;деятельность;ж;1;1;1;0;1;0;;0;1;;1 +323;организация;ж;1;1;1;0;1;0;;0;1;;1 +327;комната;ж;1;1;1;0;1;0;;0;1;;1 +339;ситуация;ж;1;1;1;0;1;0;;0;1;;1 +340;роль;ж;1;1;1;0;1;0;;0;1;;1 +350;квартира;ж;1;1;1;0;1;0;;0;1;;1 +361;мера;ж;1;1;1;0;1;0;;0;1;;1 +363;смерть;ж;1;1;1;0;1;0;;0;1;;1 +366;программа;ж;1;1;1;0;1;0;;0;1;;1 +367;задача;ж;1;1;1;0;1;0;;0;1;;1 +378;семья;ж;1;1;1;0;1;0;;0;1;;1 +388;информация;ж;1;1;1;0;1;0;;0;1;;1 +400;стена;ж;1;1;1;0;1;0;;0;1;;1 +405;федерация;ж;1;1;1;0;1;0;;0;1;;1 +418;правда;ж;1;1;1;0;1;0;;0;1;;1 +420;партия;ж;1;1;1;0;1;0;;0;1;;1 +434;вещь;ж;1;1;1;0;1;0;;0;1;;1 +436;неделя;ж;1;1;1;0;1;0;;0;1;;1 +443;глава;ж;1;1;1;0;1;0;;0;1;;1 +446;наука;ж;1;1;1;0;1;0;;0;1;;1 +449;газета;ж;1;1;1;0;1;0;;0;1;;1 +450;причина;ж;1;1;1;0;1;0;;0;1;;1 +454;цена;ж;1;1;1;0;1;0;;0;1;;1 +457;речь;ж;1;1;1;0;1;0;;0;1;;1 +460;точка;ж;1;1;1;0;1;0;;0;1;;1 +461;основа;ж;1;1;1;0;1;0;;0;1;;1 +463;культура;ж;1;1;1;0;1;0;;0;1;;1 +481;встреча;ж;1;1;1;0;1;0;;0;1;;1 +500;служба;ж;1;1;1;0;1;0;;0;1;;1 +507;судьба;ж;1;1;1;0;1;0;;0;1;;1 +509;девушка;ж;1;1;1;0;1;0;;1;0;;1 +511;очередь;ж;1;1;1;0;1;0;;0;1;;1 +546;структура;ж;1;1;1;0;1;0;;0;1;;1 +556;игра;ж;1;1;1;0;1;0;;0;1;;1 +562;тема;ж;1;1;1;0;1;0;;0;1;;1 +602;армия;ж;1;1;1;0;1;0;;0;1;;1 +606;девочка;ж;1;1;1;0;1;0;;1;0;;1 +607;политика;ж;1;1;1;0;1;0;;0;1;;1 +610;картина;ж;1;1;1;0;1;0;;0;1;;1 +613;спина;ж;1;1;1;0;1;0;;0;1;;1 +614;территория;ж;1;1;1;0;1;0;;0;1;;1 +628;церковь;ж;1;1;1;0;1;0;;0;1;;1 +633;сцена;ж;1;1;1;0;1;0;;0;1;;1 +639;музыка;ж;1;1;1;0;1;0;;0;1;;1 +641;правда;ж;1;1;1;0;1;0;;0;1;;1 +644;свобода;ж;1;1;1;0;1;0;;0;1;;1 +648;команда;ж;1;1;1;0;1;0;;0;1;;1 +668;природа;ж;1;1;1;0;1;0;;0;1;;1 +677;позиция;ж;1;1;1;0;1;0;;0;1;;1 +691;вера;ж;1;1;1;0;1;0;;0;1;;1 +694;фирма;ж;1;1;1;0;1;0;;0;1;;1 +706;оценка;ж;1;1;1;0;1;0;;0;1;;1 +715;песня;ж;1;1;1;0;1;0;;0;1;;1 +727;половина;ж;1;1;1;0;1;0;;0;1;;1 +739;экономика;ж;1;1;1;0;1;0;;0;1;;1 +741;бумага;ж;1;1;1;0;1;0;;0;1;;1 +749;степень;ж;1;1;1;0;1;0;;0;1;;1 +753;надежда;ж;1;1;1;0;1;0;;0;1;;1 +763;граница;ж;1;1;1;0;1;0;;0;1;;1 +766;модель;ж;1;1;1;0;1;0;;0;1;;1 +767;операция;ж;1;1;1;0;1;0;;0;1;;1 +768;пара;ж;1;1;1;0;1;0;;0;1;;1 +799;база;ж;1;1;1;0;1;0;;0;1;;1 +804;защита;ж;1;1;1;0;1;0;;0;1;;1 +808;площадь;ж;1;1;1;0;1;0;;0;1;;1 +823;линия;ж;1;1;1;0;1;0;;0;1;;1 +830;губа;ж;1;1;1;0;1;0;;0;1;;1 +834;дочь;ж;1;1;0;0;1;0;дочери;0;1;;1 +836;среда;ж;1;1;1;0;1;0;;0;1;;1 +862;грудь;ж;1;1;1;0;1;0;;0;1;;1 +869;услуга;ж;1;1;1;0;1;0;;0;1;;1 +874;радость;ж;1;1;1;0;1;0;;0;1;;1 +875;безопасность;ж;1;1;1;0;1;0;;0;1;;1 +903;технология;ж;1;1;1;0;1;0;;0;1;;1 +906;реформа;ж;1;1;1;0;1;0;;0;1;;1 +909;собака;ж;1;1;1;0;1;0;;1;0;;1 +916;река;ж;1;1;1;0;1;0;;0;1;;1 +918;продукция;ж;1;1;1;0;1;0;;0;1;;1 +919;сумма;ж;1;1;1;0;1;0;;0;1;;1 +920;техника;ж;1;1;1;0;1;0;;0;1;;1 +928;сфера;ж;1;1;1;0;1;0;;0;1;;1 +932;необходимость;ж;1;1;1;0;1;0;;0;1;;1 +942;республика;ж;1;1;1;0;1;0;;0;1;;1 +948;воля;ж;1;1;1;0;1;0;;0;1;;1 +954;деревня;ж;1;1;1;0;1;0;;0;1;;1 +964;победа;ж;1;1;1;0;1;0;;0;1;;1 +975;звезда;ж;1;1;1;0;1;0;;0;1;;1 +979;масса;ж;1;1;1;0;1;0;;0;1;;1 +982;сестра;ж;1;1;1;0;1;0;;1;0;специальный падеж;1 +986;практика;ж;1;1;1;0;1;0;;0;1;;1 +996;слава;ж;1;1;1;0;1;0;;0;1;;1 +997;кухня;ж;1;1;1;0;1;0;;0;1;;1 +1003;комиссия;ж;1;1;1;0;1;0;;0;1;;1 +1013;фамилия;ж;1;1;1;0;1;0;;0;1;;1 +1024;бутылка;ж;1;1;1;0;1;0;;0;1;;1 +1029;теория;ж;1;1;1;0;1;0;;0;1;;1 +1030;зона;ж;1;1;1;0;1;0;;0;1;;1 +1033;разработка;ж;1;1;1;0;1;0;;0;1;;1 +1039;личность;ж;1;1;1;0;1;0;;1;1;;1 +1056;слеза;ж;1;1;1;0;1;0;;0;1;;1 +1059;ответственность;ж;1;1;1;0;1;0;;0;1;;1 +1065;боль;ж;1;1;1;0;1;0;;0;1;;1 +1068;особенность;ж;1;1;1;0;1;0;;0;1;;1 +1079;частность;ж;1;1;1;0;1;0;;0;1;;1 +1084;доля;ж;1;1;1;0;1;0;;0;1;;1 +1085;норма;ж;1;1;1;0;1;0;;0;1;;1 +1092;рамка;ж;1;1;1;0;1;0;;0;1;;1 +1106;клетка;ж;1;1;1;0;1;0;;0;1;;1 +1107;кожа;ж;1;1;1;0;1;0;;0;1;;1 +1110;попытка;ж;1;1;1;0;1;0;;0;1;;1 +1147;зима;ж;1;1;1;0;1;0;;0;1;;1 +1151;глубина;ж;1;1;1;0;1;0;;0;1;;1 +1152;сеть;ж;1;1;1;0;1;0;;0;1;;1 +1155;секунда;ж;1;1;1;0;1;0;;0;1;;1 +1156;скорость;ж;1;1;1;0;1;0;;0;1;;1 +1159;суть;ж;1;1;1;0;1;0;;0;1;;1 +1161;ошибка;ж;1;1;1;0;1;0;;0;1;;1 +1170;поверхность;ж;1;1;1;0;1;0;;0;1;;1 +1173;карта;ж;1;1;1;0;1;0;;0;1;;1 +1176;станция;ж;1;1;1;0;1;0;;0;1;;1 +1177;революция;ж;1;1;1;0;1;0;;0;1;;1 +1183;высота;ж;1;1;1;0;1;0;;0;1;;1 +1185;бабушка;ж;1;1;1;0;1;0;;1;0;специальный падеж;1 +1188;трубка;ж;1;1;1;0;1;0;;0;1;;1 +1205;столица;ж;1;1;1;0;1;0;;0;1;;1 +1207;передача;ж;1;1;1;0;1;0;;0;1;;1 +1214;энергия;ж;1;1;1;0;1;0;;0;1;;1 +1228;акция;ж;1;1;1;0;1;0;;0;1;;1 +1233;администрация;ж;1;1;1;0;1;0;;0;1;;1 +1237;стоимость;ж;1;1;1;0;1;0;;0;1;;1 +1247;фраза;ж;1;1;1;0;1;0;;0;1;;1 +1249;фигура;ж;1;1;1;0;1;0;;1;1;;1 +1253;реакция;ж;1;1;1;0;1;0;;0;1;;1 +1255;фотография;ж;1;1;1;0;1;0;;0;1;;1 +1262;толпа;ж;1;1;1;0;1;0;;0;1;;1 +1263;больница;ж;1;1;1;0;1;0;;0;1;;1 +1273;схема;ж;1;1;1;0;1;0;;0;1;;1 +1281;волна;ж;1;1;1;0;1;0;;0;1;;1 +1285;реализация;ж;1;1;1;0;1;0;;0;1;;1 +1286;страница;ж;1;1;1;0;1;0;;0;1;;1 +1291;красота;ж;1;1;1;0;1;0;;0;1;;1 +1294;птица;ж;1;1;1;0;1;0;;1;1;;1 +1298;тень;ж;1;1;1;0;1;0;;0;1;;1 +1308;одежда;ж;1;1;1;0;1;0;;0;1;;1 +1317;традиция;ж;1;1;1;0;1;0;;0;1;;1 +1320;ладонь;ж;1;1;1;0;1;0;;0;1;;1 +1341;редакция;ж;1;1;1;0;1;0;;0;1;;1 +1350;зависимость;ж;1;1;1;0;1;0;;0;1;;1 +1360;выставка;ж;1;1;1;0;1;0;;0;1;;1 +1361;милиция;ж;1;1;1;0;1;0;;0;1;;1 +1372;родина;ж;1;1;1;0;1;0;;0;1;;1 +1373;собственность;ж;1;1;1;0;1;0;;0;1;;1 +1374;тайна;ж;1;1;1;0;1;0;;0;1;;1 +1378;трава;ж;1;1;1;0;1;0;;0;1;;1 +1384;кровать;ж;1;1;1;0;1;0;;0;1;;1 +1393;середина;ж;1;1;1;0;1;0;;0;1;;1 +1400;дама;ж;1;1;1;0;1;0;;1;0;;1 +1405;отрасль;ж;1;1;1;0;1;0;;0;1;;1 +1407;беседа;ж;1;1;1;0;1;0;;0;1;;1 +1415;продажа;ж;1;1;1;0;1;0;;0;1;;1 +1436;рыба;ж;1;1;1;0;1;0;;1;1;;1 +1442;дума;ж;1;1;1;0;1;0;;0;1;;1 +1449;шея;ж;1;1;1;0;1;0;;0;1;;1 +1464;должность;ж;1;1;1;0;1;0;;0;1;;1 +1479;сотня;ж;1;1;1;0;1;0;;0;1;;1 +1492;лестница;ж;1;1;1;0;1;0;;0;1;;1 +1497;дача;ж;1;1;1;0;1;0;;0;1;;1 +1500;установка;ж;1;1;1;0;1;0;;0;1;;1 +1506;труба;ж;1;1;1;0;1;0;;0;1;;1 +1512;осень;ж;1;1;1;0;1;0;;0;1;;1 +1522;баба;ж;1;1;1;0;1;0;;1;0;;1 +1523;ценность;ж;1;1;1;0;1;0;;0;1;;1 +1524;обязанность;ж;1;1;1;0;1;0;;0;1;;1 +1525;пьеса;ж;1;1;1;0;1;0;;0;1;;1 +1527;таблица;ж;1;1;1;0;1;0;;0;1;;1 +1530;лошадь;ж;1;1;1;0;1;0;;1;1;;1 +1543;черта;ж;1;1;1;0;1;0;;0;1;;1 +1546;характеристика;ж;1;1;1;0;1;0;;0;1;;1 +1550;оборона;ж;1;1;1;0;1;0;;0;1;;1 +1552;температура;ж;1;1;1;0;1;0;;0;1;;1 +1554;перспектива;ж;1;1;1;0;1;0;;0;1;;1 +1556;подруга;ж;1;1;1;0;1;0;;1;0;;1 +1559;жертва;ж;1;1;1;0;1;0;;1;1;;1 +1572;промышленность;ж;1;1;1;0;1;0;;0;1;;1 +1605;польза;ж;1;1;1;0;1;0;;0;1;;1 +1608;обстановка;ж;1;1;1;0;1;0;;0;1;;1 +1616;деталь;ж;1;1;1;0;1;0;;0;1;;1 +1620;зарплата;ж;1;1;1;0;1;0;;0;1;;1 +1625;тюрьма;ж;1;1;1;0;1;0;;0;1;;1 +1629;книжка;ж;1;1;1;0;1;0;;0;1;;1 +1636;просьба;ж;1;1;1;0;1;0;;0;1;;1 +1642;угроза;ж;1;1;1;0;1;0;;0;1;;1 +1643;беда;ж;1;1;1;0;1;0;;0;1;;1 +1653;реклама;ж;1;1;1;0;1;0;;0;1;;1 +1681;концепция;ж;1;1;1;0;1;0;;0;1;;1 +1686;реальность;ж;1;1;1;0;1;0;;0;1;;1 +1693;щека;ж;1;1;1;0;1;0;;0;1;;1 +1701;запись;ж;1;1;1;0;1;0;;0;1;;1 +1706;площадка;ж;1;1;1;0;1;0;;0;1;;1 +1715;академия;ж;1;1;1;0;1;0;;0;1;;1 +1721;палата;ж;1;1;1;0;1;0;;0;1;;1 +1722;потребность;ж;1;1;1;0;1;0;;0;1;;1 +1730;поездка;ж;1;1;1;0;1;0;;0;1;;1 +1733;потеря;ж;1;1;1;0;1;0;;0;1;;1 +1747;категория;ж;1;1;1;0;1;0;;0;1;;1 +1754;гостиница;ж;1;1;1;0;1;0;;0;1;;1 +1774;камера;ж;1;1;1;0;1;0;;0;1;;1 +1779;длина;ж;1;1;1;0;1;0;;0;1;;1 +1797;доска;ж;1;1;1;0;1;0;;0;1;;1 +1811;страсть;ж;1;1;1;0;1;0;;0;1;;1 +1819;оплата;ж;1;1;1;0;1;0;;0;1;;1 +1820;разница;ж;1;1;1;0;1;0;;0;1;;1 +1828;формула;ж;1;1;1;0;1;0;;0;1;;1 +1840;новость;ж;1;1;1;0;1;0;;0;1;;1 +1852;смена;ж;1;1;1;0;1;0;;0;1;;1 +1868;тетя;ж;1;1;1;0;1;0;;1;0;;1 +1873;психология;ж;1;1;1;0;1;0;;0;1;;1 +1877;проверка;ж;1;1;1;0;1;0;;0;1;;1 +1879;процедура;ж;1;1;1;0;1;0;;0;1;;1 +1895;буква;ж;1;1;1;0;1;0;;0;1;;1 +1903;постель;ж;1;1;1;0;1;0;;0;1;;1 +1917;старуха;ж;1;1;1;0;1;0;;1;0;;1 +1918;лодка;ж;1;1;1;0;1;0;;0;1;;1 +1919;ракета;ж;1;1;1;0;1;0;;0;1;;1 +1921;серия;ж;1;1;1;0;1;0;;0;1;;1 +1923;шутка;ж;1;1;1;0;1;0;;0;1;;1 +1924;вершина;ж;1;1;1;0;1;0;;0;1;;1 +1934;нефть;ж;1;1;1;0;1;0;;0;1;;1 +1937;цифра;ж;1;1;1;0;1;0;;0;1;;1 +1944;сущность;ж;1;1;1;0;1;0;;0;1;;1 +1948;эффективность;ж;1;1;1;0;1;0;;0;1;;1 +1953;полоса;ж;1;1;1;0;1;0;;0;1;;1 +1980;пропасть;ж;1;1;1;0;1;0;;0;1;;1 +1985;забота;ж;1;1;1;0;1;0;;0;1;;1 +28;год;м;1;1;1;0;1;1;;0;1;;1 +39;человек;м;1;1;1;0;1;0;люди;1;0;;1 +71;день;м;1;1;0;1;1;0;;0;1;;1 +106;друг;м;1;1;0;0;0;0;друзья;1;0;;1 +110;глаз;м;1;1;0;0;0;1;;0;1;;1 +114;вопрос;м;1;1;1;0;1;0;;0;1;;1 +118;дом;м;1;1;0;0;0;1;;0;1;;1 +128;мир;м;1;1;1;0;1;0;;0;1;;1 +137;ребенок;м;1;1;0;0;0;0;ребята;1;0;;1 +142;конец;м;1;1;0;1;1;0;;0;1;;1 +145;вид;м;1;1;1;0;1;0;;0;1;;1 +156;город;м;1;1;0;0;0;1;;0;1;;1 +192;отец;м;1;1;0;1;1;0;;1;0;;1 +200;час;м;1;1;1;0;1;0;;0;1;;1 +212;образ;м;1;1;1;0;1;0;;0;1;;1 +217;закон;м;1;1;1;0;1;0;;0;1;;1 +220;бог;м;1;1;1;0;1;0;;1;0;;1 +221;голос;м;1;1;0;0;0;1;;0;1;;1 +235;результат;м;1;1;1;0;1;0;;0;1;;1 +237;стол;м;1;1;1;0;1;0;;0;1;;1 +252;народ;м;1;1;1;0;1;0;;0;1;;1 +260;процесс;м;1;1;1;0;1;0;;0;1;;1 +261;суд;м;1;1;1;0;1;0;;0;1;;1 +274;путь;м;1;1;1;0;1;0;;0;1;;1 +280;уровень;м;1;1;0;1;1;0;;0;1;;1 +295;вечер;м;1;1;0;0;0;1;;0;1;;1 +303;месяц;м;1;1;1;0;1;0;;0;1;;1 +306;язык;м;1;1;1;0;1;0;;0;1;;1 +308;взгляд;м;1;1;1;0;1;0;;0;1;;1 +314;век;м;1;1;0;0;0;1;;0;1;;1 +326;президент;м;1;1;1;0;1;0;;1;0;;1 +328;порядок;м;1;1;0;1;1;0;;0;1;;1 +329;момент;м;1;1;1;0;1;0;;0;1;;1 +330;театр;м;1;1;1;0;1;0;;0;1;;1 +343;рубль;м;1;1;1;0;1;0;;0;1;;1 +346;смысл;м;1;1;1;0;1;0;;0;1;;1 +354;орган;м;1;1;1;0;1;0;;0;1;;1 +357;труд;м;1;1;1;0;1;0;;0;1;;1 +360;сын;м;1;1;1;0;1;0;;1;0;;1 +365;рынок;м;1;1;0;1;1;0;;0;1;;1 +374;разговор;м;1;1;1;0;1;0;;0;1;;1 +394;центр;м;1;1;1;0;1;0;;0;1;;1 +396;ответ;м;1;1;1;0;1;0;;0;1;;1 +397;муж;м;1;1;1;0;1;0;;1;0;;1 +398;автор;м;1;1;1;0;1;0;;1;0;;1 +403;интерес;м;1;1;1;0;1;0;;0;1;;1 +416;мужчина;м;1;1;1;0;1;0;;1;0;;1 +430;совет;м;1;1;1;0;1;0;;0;1;;1 +431;счёт;м;1;1;1;0;1;1;;0;1;;1 +435;материал;м;1;1;1;0;1;0;;0;1;;1 +448;ряд;м;1;1;1;0;1;0;;0;1;;1 +455;план;м;1;1;1;0;1;0;;0;1;;1 +462;товарищ;м;1;1;1;0;1;0;;1;0;;1 +474;документ;м;1;1;1;0;1;0;;0;1;;1 +475;институт;м;1;1;1;0;1;0;;0;1;;1 +476;ход;м;1;1;1;0;1;0;;0;1;;1 +479;проект;м;1;1;1;0;1;0;;0;1;;1 +484;директор;м;1;1;1;0;1;1;;1;0;;1 +494;срок;м;1;1;1;0;1;0;;0;1;;1 +495;палец;м;1;1;0;0;0;0;пальцы;0;1;;1 +496;опыт;м;1;1;1;0;1;0;;0;1;;1 +512;лес;м;1;1;0;0;0;1;;0;1;;1 +517;состав;м;1;1;1;0;1;0;;0;1;;1 +522;член;м;1;1;1;0;1;0;;1;1;;1 +528;объект;м;1;1;1;0;1;0;;0;1;;1 +529;зал;м;1;1;1;0;1;0;;0;1;;1 +536;период;м;1;1;1;0;1;0;;0;1;;1 +538;шаг;м;1;1;1;0;1;0;;0;1;;1 +542;брат;м;1;1;0;0;0;0;братья;1;0;;1 +548;номер;м;1;1;0;0;1;1;;0;1;;1 +550;пример;м;1;1;1;0;1;0;;0;1;;1 +553;гражданин;м;1;1;0;0;0;0;граждане;1;0;;1 +557;начальник;м;1;1;1;0;1;0;;1;0;;1 +559;рост;м;1;1;1;0;1;0;;0;1;;1 +563;принцип;м;1;1;1;0;1;0;;0;1;;1 +569;метод;м;1;1;1;0;1;0;;0;1;;1 +570;тип;м;1;1;1;0;1;0;;0;1;;1 +571;фильм;м;1;1;1;0;1;0;;0;1;;1 +576;край;м;1;1;0;0;0;0;края;0;1;;1 +579;гость;м;1;1;1;0;1;0;;1;0;;1 +588;характер;м;1;1;1;0;1;0;;0;1;;1 +593;размер;м;1;1;1;0;1;0;;0;1;;1 +597;мальчик;м;1;1;1;0;1;0;;1;0;;1 +599;район;м;1;1;1;0;1;0;;0;1;;1 +603;класс;м;1;1;1;0;1;0;;0;1;;1 +604;представитель;м;1;1;1;0;1;0;;1;0;;1 +609;герой;м;1;1;1;0;1;0;;1;0;;1 +612;доллар;м;1;1;1;0;1;0;;0;1;;1 +616;пол;м;1;1;1;0;1;0;;0;1;;1 +625;рисунок;м;1;1;0;1;1;0;;0;1;;1 +629;банк;м;1;1;1;0;1;0;;0;1;;1 +650;союз;м;1;1;1;0;1;0;;0;1;;1 +653;врач;м;1;1;1;0;1;0;;1;0;;1 +655;договор;м;1;1;1;0;1;1;;0;1;;1 +661;факт;м;1;1;1;0;1;0;;0;1;;1 +664;хозяин;м;1;1;0;0;0;0;хозяева;1;0;;1 +676;телефон;м;1;1;1;0;1;0;;0;1;;1 +681;двор;м;1;1;1;0;1;0;;0;1;;1 +685;писатель;м;1;1;1;0;1;0;;1;0;;1 +686;самолёт;м;1;1;1;0;1;0;;0;1;;1 +687;объём;м;1;1;1;0;1;0;;0;1;;1 +689;род;м;1;1;1;0;1;1;;0;1;;1 +692;берег;м;1;1;0;0;0;1;;0;1;;1 +693;спектакль;м;1;1;1;0;1;0;;0;1;;1 +695;способ;м;1;1;1;0;1;0;;0;1;;1 +696;завод;м;1;1;1;0;1;0;;0;1;;1 +697;цвет;м;1;1;0;0;0;1;;0;1;;1 +699;журнал;м;1;1;1;0;1;0;;0;1;;1 +700;руководитель;м;1;1;1;0;1;0;;1;0;;1 +701;специалист;м;1;1;1;0;1;0;;1;0;;1 +713;регион;м;1;1;1;0;1;0;;0;1;;1 +716;процент;м;1;1;1;0;1;0;;0;1;;1 +717;родитель;м;1;1;1;0;1;0;;1;0;;1 +733;роман;м;1;1;1;0;1;0;;0;1;;1 +734;круг;м;1;1;1;0;1;0;;0;1;;1 +735;анализ;м;1;1;1;0;1;0;;0;1;;1 +736;стих;м;1;1;1;0;1;0;;0;1;;1 +737;автомобиль;м;1;1;1;0;1;0;;0;1;;1 +747;поэт;м;1;1;1;0;1;0;;1;0;;1 +752;господин;м;1;1;0;0;0;0;господа;1;0;;1 +756;предмет;м;1;1;1;0;1;0;;0;1;;1 +759;вариант;м;1;1;1;0;1;0;;0;1;;1 +760;министр;м;1;1;1;0;1;0;;1;0;;1 +765;дух;м;1;1;1;0;1;0;;0;1;;1 +769;сон;м;1;1;0;1;1;0;;0;1;;1 +772;ум;м;1;1;1;0;1;0;;0;1;;1 +773;повод;м;1;1;1;0;1;0;;0;1;;1 +774;старик;м;1;1;1;0;1;0;;1;0;;1 +777;миллион;м;1;1;1;0;1;0;;0;1;;1 +780;успех;м;1;1;1;0;1;0;;0;1;;1 +787;ребята;м;0;1;1;0;1;0;;0;1;;1 +789;кабинет;м;1;1;1;0;1;0;;0;1;;1 +794;магазин;м;1;1;1;0;1;0;;0;1;;1 +796;выход;м;1;1;1;0;1;0;;0;1;;1 +798;удар;м;1;1;1;0;1;0;;0;1;;1 +801;текст;м;1;1;1;0;1;0;;0;1;;1 +812;возраст;м;1;1;1;0;1;0;;0;1;;1 +815;участник;м;1;1;1;0;1;0;;1;0;;1 +816;участок;м;1;1;0;1;1;0;;0;1;;1 +818;пункт;м;1;1;1;0;1;0;;0;1;;1 +826;папа;м;1;1;1;0;1;0;;1;0;;1 +829;доктор;м;1;1;1;0;1;1;;1;0;;1 +837;председатель;м;1;1;1;0;1;0;;1;0;;1 +839;солдат;м;1;1;1;0;1;0;;1;0;;1 +840;художник;м;1;1;1;0;1;0;;1;0;;1 +842;волос;м;1;1;1;0;1;0;;0;1;;1 +847;ветер;м;1;1;0;1;0;0;ветра;0;1;;1 +849;парень;м;1;1;0;1;1;0;;1;0;;1 +853;генерал;м;1;1;1;0;1;0;;1;0;;1 +855;огонь;м;1;1;0;1;1;0;;0;1;;1 +863;нос;м;1;1;1;0;1;0;;0;1;;1 +868;страх;м;1;1;1;0;1;0;;0;1;;1 +877;продукт;м;1;1;1;0;1;0;;0;1;;1 +879;комплекс;м;1;1;1;0;1;0;;0;1;;1 +880;бизнес;м;1;1;1;0;1;0;;0;1;;1 +884;сад;м;1;1;1;0;1;0;;0;1;;1 +888;сотрудник;м;1;1;1;0;1;0;;1;0;;1 +893;курс;м;1;1;1;0;1;0;;0;1;;1 +901;рот;м;1;1;0;1;1;0;;0;1;;1 +910;камень;м;1;1;0;1;1;0;;0;1;;1 +913;рассказ;м;1;1;1;0;1;0;;0;1;;1 +914;контроль;м;1;1;1;0;1;0;;0;1;;1 +934;фонд;м;1;1;1;0;1;0;;0;1;;1 +939;лист;м;1;1;1;0;1;0;;0;1;;1 +950;бюджет;м;1;1;1;0;1;0;;0;1;;1 +953;снег;м;1;1;0;0;0;1;;0;1;;1 +956;мужик;м;1;1;1;0;1;0;;1;0;;1 +959;элемент;м;1;1;1;0;1;0;;0;1;;1 +962;немец;м;1;1;0;1;1;0;;1;0;;1 +965;источник;м;1;1;1;0;1;0;;0;1;;1 +977;выбор;м;1;1;1;0;1;0;;0;1;;1 +981;итог;м;1;1;1;0;1;0;;0;1;;1 +991;карман;м;1;1;1;0;1;0;;0;1;;1 +1005;капитан;м;1;1;1;0;1;0;;1;0;;1 +1006;работник;м;1;1;1;0;1;0;;1;0;;1 +1010;офицер;м;1;1;1;0;1;0;;1;0;;1 +1014;предел;м;1;1;1;0;1;0;;0;1;;1 +1025;бой;м;1;1;1;0;1;0;;0;1;;1 +1031;отдел;м;1;1;1;0;1;0;;0;1;;1 +1032;зуб;м;1;1;1;0;1;0;;0;1;;1 +1040;гора;ж;1;1;1;0;1;0;;0;1;;1 +1042;товар;м;1;1;1;0;1;0;;0;1;;1 +1046;метр;м;1;1;1;0;1;0;;0;1;;1 +1049;праздник;м;1;1;1;0;1;0;;0;1;;1 +1052;читатель;м;1;1;1;0;1;0;;1;0;;1 +1055;актер;м;1;1;1;0;1;0;;1;0;;1 +1060;учитель;м;1;1;0;0;0;1;;1;0;;1 +1061;акт;м;1;1;1;0;1;0;;0;1;;1 +1070;показатель;м;1;1;1;0;1;0;;0;1;;1 +1072;корабль;м;1;1;1;0;1;0;;0;1;;1 +1074;звук;м;1;1;1;0;1;0;;0;1;;1 +1081;вывод;м;1;1;1;0;1;0;;0;1;;1 +1082;профессор;м;1;1;1;0;1;0;;1;0;;1 +1089;командир;м;1;1;1;0;1;0;;1;0;;1 +1090;коридор;м;1;1;1;0;1;0;;0;1;;1 +1096;враг;м;1;1;1;0;1;0;;0;1;;1 +1098;этап;м;1;1;1;0;1;0;;0;1;;1 +1099;черт;м;1;1;1;0;1;0;;0;1;;1 +1100;дед;м;1;1;1;0;1;0;;1;0;;1 +1103;прием;м;1;1;1;0;1;0;;0;1;;1 +1105;болезнь;м;1;1;1;0;1;0;;0;1;;1 +1113;расчет;м;1;1;1;0;1;0;;0;1;;1 +1115;депутат;м;1;1;1;0;1;0;;1;0;;1 +1123;комитет;м;1;1;1;0;1;0;;0;1;;1 +1124;знак;м;1;1;1;0;1;0;;0;1;;1 +1128;дядя;м;1;1;1;0;1;0;;1;0;;1 +1129;учет;м;1;1;1;0;1;0;;0;1;;1 +1130;хлеб;м;1;1;1;0;1;1;;0;1;;1 +1136;чай;м;1;1;1;0;1;0;;0;1;;1 +1137;режим;м;1;1;1;0;1;0;;0;1;;1 +1139;вирус;м;1;1;1;0;1;0;;0;1;;1 +1150;десяток;м;1;1;0;1;1;0;;0;1;;1 +1153;студент;м;1;1;1;0;1;0;;1;0;;1 +1157;поиск;м;1;1;1;0;1;0;;0;1;;1 +1160;налог;м;1;1;1;0;1;0;;0;1;;1 +1167;доход;м;1;1;1;0;1;0;;0;1;;1 +1169;режиссер;м;1;1;1;0;1;0;;1;0;;1 +1174;клуб;м;1;1;1;0;1;0;;0;1;;1 +1181;этаж;м;1;1;1;0;1;0;;0;1;;1 +1195;газ;м;1;1;1;0;1;0;;0;1;;1 +1197;мастер;м;1;1;1;0;1;1;;1;0;;1 +1206;механизм;м;1;1;1;0;1;0;;0;1;;1 +1211;подход;м;1;1;1;0;1;0;;0;1;;1 +1221;заместитель;м;1;1;1;0;1;0;;1;0;;1 +1226;ресурс;м;1;1;1;0;1;0;;0;1;;1 +1239;артист;м;1;1;1;0;1;0;;1;0;;1 +1246;сосед;м;1;1;1;0;1;0;;1;0;;1 +1251;субъект;м;1;1;1;0;1;0;;0;1;;1 +1254;список;м;1;1;0;1;1;0;;0;1;;1 +1256;журналист;м;1;1;1;0;1;0;;1;0;;1 +1257;май;м;1;1;1;0;1;0;;0;1;;1 +1269;долг;м;1;1;1;0;1;0;;0;1;;1 +1278;остров;м;1;1;0;0;0;1;;0;1;;1 +1280;противник;м;1;1;1;0;1;0;;1;0;;1 +1288;житель;м;1;1;1;0;1;0;;1;0;;1 +1300;храм;м;1;1;1;0;1;0;;0;1;;1 +1301;запах;м;1;1;1;0;1;0;;0;1;;1 +1307;ужас;м;1;1;1;0;1;0;;0;1;;1 +1312;поезд;м;1;1;1;0;0;1;;0;1;;1 +1313;университет;м;1;1;1;0;1;0;;0;1;;1 +1318;адрес;м;1;1;1;0;1;1;;0;1;;1 +1319;декабрь;м;1;1;1;0;1;0;;0;1;;1 +1324;цветок;м;1;1;0;1;1;0;;0;1;;1 +1327;лидер;м;1;1;1;0;1;0;;0;1;;1 +1328;октябрь;м;1;1;1;0;1;0;;0;1;;1 +1332;сентябрь;м;1;1;1;0;1;0;;0;1;;1 +1338;зритель;м;1;1;1;0;1;0;;1;0;;1 +1344;стиль;м;1;1;1;0;1;0;;0;1;;1 +1347;фактор;м;1;1;1;0;1;0;;0;1;;1 +1348;август;м;1;1;1;0;1;0;;0;1;;1 +1356;концерт;м;1;1;1;0;1;0;;0;1;;1 +1358;расход;м;1;1;1;0;1;0;;0;1;;1 +1366;переход;м;1;1;1;0;1;0;;0;1;;1 +1368;эпоха;ж;1;1;1;0;1;0;;0;1;;1 +1380;лагерь;м;1;1;1;0;1;1;;0;1;;1 +1390;аппарат;м;1;1;1;0;1;0;;0;1;;1 +1396;март;м;1;1;1;0;1;0;;0;1;;1 +1398;клиент;м;1;1;1;0;1;0;;1;0;;1 +1403;фронт;м;1;1;1;0;1;0;;0;1;;1 +1406;стул;м;1;1;0;0;0;0;стулья;0;1;;1 +1420;музей;м;1;1;1;0;1;0;;0;1;;1 +1423;след;м;1;1;1;0;1;0;;0;1;;1 +1425;полковник;м;1;1;1;0;1;0;;1;0;;1 +1433;апрель;м;1;1;1;0;1;0;;0;1;;1 +1434;князь;м;1;1;1;0;1;0;князья;1;0;;1 +1445;кодекс;м;1;1;1;0;1;0;;0;1;;1 +1446;сутки;м;0;1;1;0;1;0;;0;1;;1 +1451;судья;м;1;1;1;0;1;0;;1;0;;1 +1456;крыша;м;1;1;1;0;1;0;;0;1;;1 +1461;поток;м;1;1;1;0;1;0;;0;1;;1 +1467;мозг;м;1;1;1;0;1;0;;0;1;;1 +1471;пост;м;1;1;1;0;1;0;;0;1;;1 +1474;еврей;м;1;1;1;0;1;0;;1;0;;1 +1477;июнь;м;1;1;1;0;1;0;;0;1;;1 +1490;дождь;м;1;1;1;0;1;0;;0;1;;1 +1505;образец;м;1;1;0;1;1;0;;0;1;;1 +1518;костюм;м;1;1;1;0;1;0;;0;1;;1 +1534;коллега;м;1;1;1;0;1;0;;1;0;;1 +1535;организм;м;1;1;1;0;1;0;;0;1;;1 +1537;ученик;м;1;1;1;0;1;0;;1;0;;1 +1542;том;м;1;1;1;0;1;1;;0;1;;1 +1557;приказ;м;1;1;1;0;1;0;;0;1;;1 +1562;ресторан;м;1;1;1;0;1;0;;0;1;;1 +1563;километр;м;1;1;1;0;1;0;;0;1;;1 +1565;спор;м;1;1;1;0;1;0;;0;1;;1 +1569;вкус;м;1;1;1;0;1;0;;0;1;;1 +1571;признак;м;1;1;1;0;1;0;;0;1;;1 +1574;американец;м;1;1;0;1;1;0;;1;0;;1 +1575;лоб;м;1;1;0;1;1;0;;0;1;;1 +1584;ключ;м;1;1;1;0;1;0;;0;1;;1 +1589;слой;м;1;1;1;0;1;0;;0;1;;1 +1590;бок;м;1;1;0;0;0;1;;0;1;;1 +1595;июль;м;1;1;1;0;1;0;;0;1;;1 +1597;перевод;м;1;1;1;0;1;0;;0;1;;1 +1598;секретарь;м;1;1;1;0;1;0;;1;0;;1 +1599;кусок;м;1;1;0;1;1;0;;0;1;;1 +1601;слух;м;1;1;1;0;1;0;;0;1;;1 +1606;звонок;м;1;1;0;1;1;0;;0;1;;1 +1613;чиновник;м;1;1;1;0;1;0;;1;0;;1 +1622;билет;м;1;1;1;0;1;0;;0;1;;1 +1624;подарок;м;1;1;0;1;1;0;;0;1;;1 +1626;ящик;м;1;1;1;0;1;0;;0;1;;1 +1627;конкурс;м;1;1;1;0;1;0;;0;1;;1 +1637;царь;м;1;1;1;0;1;0;;1;0;;1 +1639;смех;м;1;1;0;0;0;1;;0;1;;1 +1650;блок;м;1;1;1;0;1;0;;0;1;;1 +1656;портрет;м;1;1;1;0;1;0;;0;1;;1 +1664;стакан;м;1;1;1;0;1;0;;0;1;;1 +1668;урок;м;1;1;1;0;1;0;;0;1;;1 +1672;крик;м;1;1;1;0;1;0;;0;1;;1 +1677;телевизор;м;1;1;1;0;1;0;;0;1;;1 +1679;инструмент;м;1;1;1;0;1;0;;0;1;;1 +1683;лейтенант;м;1;1;1;0;1;0;;1;0;;1 +1684;экран;м;1;1;1;0;1;0;;0;1;;1 +1689;канал;м;1;1;1;0;1;0;;0;1;;1 +1697;конфликт;м;1;1;1;0;1;0;;0;1;;1 +1703;вагон;м;1;1;1;0;1;0;;0;1;;1 +1712;тон;м;1;1;1;0;1;1;;0;1;;1 +1725;ноябрь;м;1;1;1;0;1;0;;0;1;;1 +1728;дурак;м;1;1;1;0;1;0;;1;0;;1 +1731;обед;м;1;1;1;0;1;0;;0;1;;1 +1736;февраль;м;1;1;1;0;1;0;;0;1;;1 +1739;парк;м;1;1;1;0;1;0;;0;1;;1 +1749;сезон;м;1;1;1;0;1;0;;0;1;;1 +1773;коллектив;м;1;1;1;0;1;0;;0;1;;1 +1776;запас;м;1;1;1;0;1;0;;0;1;;1 +1783;округ;м;1;1;1;0;1;1;;0;1;;1 +1785;фон;м;1;1;1;0;1;0;;0;1;;1 +1786;кандидат;м;1;1;1;0;1;0;;1;0;;1 +1787;родственник;м;1;1;1;0;1;0;;1;0;;1 +1799;партнер;м;1;1;1;0;1;0;;1;0;;1 +1800;двигатель;м;1;1;1;0;1;0;;0;1;;1 +1801;шум;м;1;1;1;0;1;0;;0;1;;1 +1805;грех;м;1;1;1;0;1;0;;0;1;;1 +1807;нож;м;1;1;1;0;1;0;;0;1;;1 +1808;полет;м;1;1;1;0;1;0;;0;1;;1 +1822;водитель;м;1;1;1;0;1;0;;1;0;;1 +1825;пакет;м;1;1;1;0;1;0;;0;1;;1 +1830;живот;м;1;1;1;0;1;0;;0;1;;1 +1831;капитал;м;1;1;1;0;1;0;;0;1;;1 +1837;мост;м;1;1;1;0;1;0;;0;1;;1 +1841;эффект;м;1;1;1;0;1;0;;0;1;;1 +1842;вход;м;1;1;1;0;1;0;;0;1;;1 +1844;губернатор;м;1;1;1;0;1;0;;1;0;;1 +1849;доклад;м;1;1;1;0;1;0;;0;1;;1 +1854;эксперт;м;1;1;1;0;1;0;;1;0;;1 +1861;автобус;м;1;1;1;0;1;0;;0;1;;1 +1866;кадр;м;1;1;1;0;1;0;;1;1;;1 +1874;лев;м;1;1;0;1;1;0;львы;1;0;;1 +1876;порог;м;1;1;1;0;1;0;;0;1;;1 +1881;ремонт;м;1;1;1;0;1;0;;0;1;;1 +1891;памятник;м;1;1;1;0;1;0;;0;1;;1 +1892;корень;м;1;1;0;1;1;0;;0;1;;1 +1905;штаб;м;1;1;1;0;1;0;;0;1;;1 +1907;владелец;м;1;1;0;1;1;0;владельцы;1;0;;1 +1908;компьютер;м;1;1;1;0;1;0;;0;1;;1 +1911;инженер;м;1;1;1;0;1;0;;1;0;;1 +1926;выпуск;м;1;1;1;0;1;0;;0;1;;1 +1927;кулак;м;1;1;1;0;1;0;;0;1;;1 +1928;лед;м;1;1;0;1;1;0;льды;0;1;;1 +1938;корпус;м;1;1;1;0;1;1;;0;1;;1 +1940;недостаток;м;1;1;0;1;1;0;;0;1;;1 +1942;сапог;м;1;1;1;0;1;0;;0;1;;1 +1945;талант;м;1;1;1;0;1;0;;0;1;;1 +1967;сбор;м;1;1;1;0;1;0;;0;1;;1 +1968;штат;м;1;1;1;0;1;0;;0;1;;1 +1970;следователь;м;1;1;1;0;1;0;;1;0;;1 +1972;мешок;м;1;1;0;1;1;0;;0;1;;1 +1976;куст;м;1;1;1;0;1;0;;0;1;;1 +1977;отказ;м;1;1;1;0;1;0;;0;1;;1 +1979;замок;м;1;1;1;0;1;0;;0;1;;1 +1982;редактор;м;1;1;1;0;1;0;;1;0;;1 +1984;дворец;м;1;1;0;1;1;0;;0;1;;1 +1990;диван;м;1;1;1;0;1;0;;0;1;;1 +1994;столик;м;1;1;1;0;1;0;;0;1;;1 +1997;эксперимент;м;1;1;1;0;1;0;;0;1;;1 +52;время;с;1;1;0;0;1;0;времена;0;1;;1 +65;дело;с;1;1;1;0;1;0;;0;1;;1 +94;слово;с;1;1;1;0;1;0;;0;1;;1 +98;место;с;1;1;1;0;1;0;;0;1;;1 +104;лицо;с;1;1;1;0;1;0;;0;1;;1 +162;отношение;с;1;1;1;0;1;0;;0;1;;1 +203;право;с;1;1;1;0;1;0;;0;1;;1 +239;имя;с;1;1;0;0;1;0;имена;0;1;;1 +246;число;с;1;1;1;0;1;0;;0;1;;1 +259;развитие;с;1;1;1;0;1;0;;0;1;;1 +265;условие;с;1;1;1;0;1;0;;0;1;;1 +268;средство;с;1;1;1;0;1;0;;0;1;;1 +270;начало;с;1;1;1;0;1;0;;0;1;;1 +298;качество;с;1;1;1;0;1;0;;0;1;;1 +302;действие;с;1;1;1;0;1;0;;0;1;;1 +305;государство;с;1;1;1;0;1;0;;0;1;;1 +320;общество;с;1;1;1;0;1;0;;0;1;;1 +333;письмо;с;1;1;1;0;1;0;;0;1;;1 +336;утро;с;1;1;1;0;1;0;;0;1;;1 +355;внимание;с;1;1;1;0;1;0;;0;1;;1 +356;тело;с;1;1;1;0;1;0;;0;1;;1 +368;предприятие;с;1;1;1;0;1;0;;0;1;;1 +370;окно;с;1;1;1;0;1;0;;0;1;;1 +376;правительство;с;1;1;1;0;1;0;;0;1;;1 +380;производство;с;1;1;1;0;1;0;;0;1;;1 +390;положение;с;1;1;1;0;1;0;;0;1;;1 +406;правило;с;1;1;1;0;1;0;;0;1;;1 +410;управление;с;1;1;1;0;1;0;;0;1;;1 +432;сердце;с;1;1;1;0;1;0;;0;1;;1 +433;движение;с;1;1;1;0;1;0;;0;1;;1 +437;чувство;с;1;1;1;0;1;0;;0;1;;1 +452;плечо;с;1;1;0;0;1;0;плечи;0;1;;1 +527;событие;с;1;1;1;0;1;0;;0;1;;1 +533;значение;с;1;1;1;0;1;0;;0;1;;1 +543;искусство;с;1;1;1;0;1;0;;0;1;;1 +552;исследование;с;1;1;1;0;1;0;;0;1;;1 +590;использование;с;1;1;1;0;1;0;;0;1;;1 +595;образование;с;1;1;1;0;1;0;;0;1;;1 +600;небо;с;1;1;0;0;1;0;небеса;0;1;;1 +605;участие;с;1;1;1;0;1;0;;0;1;;1 +619;поле;с;1;1;1;0;1;0;;0;1;;1 +621;изменение;с;1;1;1;0;1;0;;0;1;;1 +624;направление;с;1;1;1;0;1;0;;0;1;;1 +626;течение;с;1;1;1;0;1;0;;0;1;;1 +659;дерево;с;1;1;1;0;1;0;;0;1;;1 +690;солнце;с;1;1;1;0;1;0;;0;1;;1 +720;море;с;1;1;1;0;1;0;;0;1;;1 +722;требование;с;1;1;1;0;1;0;;0;1;;1 +726;основание;с;1;1;1;0;1;0;;0;1;;1 +771;название;с;1;1;1;0;1;0;;0;1;;1 +795;пространство;с;1;1;1;0;1;0;;0;1;;1 +800;знание;с;1;1;1;0;1;0;;0;1;;1 +806;руководство;с;1;1;1;0;1;0;;0;1;;1 +809;сознание;с;1;1;1;0;1;0;;0;1;;1 +825;желание;с;1;1;1;0;1;0;;0;1;;1 +843;оружие;с;1;1;1;0;1;0;;0;1;;1 +845;соответствие;с;1;1;1;0;1;0;;0;1;;1 +851;зрение;с;1;1;1;0;1;0;;0;1;;1 +858;понятие;с;1;1;1;0;1;0;;0;1;;1 +859;строительство;с;1;1;1;0;1;0;;0;1;;1 +860;ухо;с;1;1;0;0;1;0;уши;0;1;;1 +873;содержание;с;1;1;1;0;1;0;;0;1;;1 +895;предложение;с;1;1;1;0;1;0;;0;1;;1 +907;отсутствие;с;1;1;1;0;1;0;;0;1;;1 +927;здание;с;1;1;1;0;1;0;;0;1;;1 +943;хозяйство;с;1;1;1;0;1;0;;0;1;;1 +960;обстоятельство;с;1;1;1;0;1;0;;0;1;;1 +998;определение;с;1;1;1;0;1;0;;0;1;;1 +1002;войско;с;1;1;1;0;1;0;;0;1;;1 +1009;обеспечение;с;1;1;1;0;1;0;;0;1;;1 +1050;влияние;с;1;1;1;0;1;0;;0;1;;1 +1054;удовольствие;с;1;1;1;0;1;0;;0;1;;1 +1066;множество;с;1;1;1;0;1;0;;0;1;;1 +1077;впечатление;с;1;1;1;0;1;0;;0;1;;1 +1102;собрание;с;1;1;1;0;1;0;;0;1;;1 +1108;заявление;с;1;1;1;0;1;0;;0;1;;1 +1111;сравнение;с;1;1;1;0;1;0;;0;1;;1 +1142;выражение;с;1;1;1;0;1;0;;0;1;;1 +1178;колено;с;1;1;1;0;1;0;;0;1;;1 +1179;министерство;с;1;1;1;0;1;0;;0;1;;1 +1180;стекло;с;1;1;1;0;1;0;;0;1;;1 +1230;рождение;с;1;1;1;0;1;0;;0;1;;1 +1260;нарушение;с;1;1;1;0;1;0;;0;1;;1 +1261;заседание;с;1;1;1;0;1;0;;0;1;;1 +1264;существо;с;1;1;1;0;1;0;;0;1;;1 +1268;свойство;с;1;1;1;0;1;0;;0;1;;1 +1270;поколение;с;1;1;1;0;1;0;;0;1;;1 +1274;усилие;с;1;1;1;0;1;0;;0;1;;1 +1275;отличие;с;1;1;1;0;1;0;;0;1;;1 +1287;формирование;с;1;1;1;0;1;0;;0;1;;1 +1297;растение;с;1;1;1;0;1;0;;0;1;;1 +1299;явление;с;1;1;1;0;1;0;;0;1;;1 +1310;кресло;с;1;1;1;0;1;0;;0;1;;1 +1322;сведение;с;1;1;1;0;1;0;;0;1;;1 +1329;занятие;с;1;1;1;0;1;0;;0;1;;1 +1333;помещение;с;1;1;1;0;1;0;;0;1;;1 +1349;известие;с;1;1;1;0;1;0;;0;1;;1 +1357;отделение;с;1;1;1;0;1;0;;0;1;;1 +1371;произведение;с;1;1;1;0;1;0;;0;1;;1 +1416;повышение;с;1;1;1;0;1;0;;0;1;;1 +1427;сомнение;с;1;1;1;0;1;0;;0;1;;1 +1428;понимание;с;1;1;1;0;1;0;;0;1;;1 +1447;чудо;с;1;1;0;0;1;0;чудеса;0;1;;1 +1457;настроение;с;1;1;1;0;1;0;;0;1;;1 +1465;преступление;с;1;1;1;0;1;0;;0;1;;1 +1528;вино;с;1;1;0;0;1;0;вины;0;1;;1 +1529;воспоминание;с;1;1;1;0;1;0;;0;1;;1 +1538;учреждение;с;1;1;1;0;1;0;;0;1;;1 +1540;открытие;с;1;1;1;0;1;0;;0;1;;1 +1549;выполнение;с;1;1;1;0;1;0;;0;1;;1 +1551;выступление;с;1;1;1;0;1;0;;0;1;;1 +1576;заключение;с;1;1;1;0;1;0;;0;1;;1 +1580;исключение;с;1;1;1;0;1;0;;0;1;;1 +1585;постановление;с;1;1;1;0;1;0;;0;1;;1 +1615;соглашение;с;1;1;1;0;1;0;;0;1;;1 +1631;изучение;с;1;1;1;0;1;0;;0;1;;1 +1641;сообщение;с;1;1;1;0;1;0;;0;1;;1 +1651;достижение;с;1;1;1;0;1;0;;0;1;;1 +1652;назначение;с;1;1;1;0;1;0;;0;1;;1 +1662;масло;с;1;1;1;0;1;0;;0;1;;1 +1707;последствие;с;1;1;1;0;1;0;;0;1;;1 +1711;зеркало;с;1;1;1;0;1;0;;0;1;;1 +1726;увеличение;с;1;1;1;0;1;0;;0;1;;1 +1738;мероприятие;с;1;1;1;0;1;0;;0;1;;1 +1740;принятие;с;1;1;1;0;1;0;;0;1;;1 +1741;устройство;с;1;1;1;0;1;0;;0;1;;1 +1742;вещество;с;1;1;1;0;1;0;;0;1;;1 +1755;издание;с;1;1;1;0;1;0;;0;1;;1 +1761;объединение;с;1;1;1;0;1;0;;0;1;;1 +1768;колесо;с;1;1;1;0;1;0;;0;1;;1 +1771;разрешение;с;1;1;1;0;1;0;;0;1;;1 +1772;воздействие;с;1;1;1;0;1;0;;0;1;;1 +1778;следствие;с;1;1;1;0;1;0;;0;1;;1 +1782;крыло;с;1;1;0;0;1;0;крылья;0;1;;1 +1794;присутствие;с;1;1;1;0;1;0;;0;1;;1 +1802;достоинство;с;1;1;1;0;1;0;;0;1;;1 +1816;испытание;с;1;1;1;0;1;0;;0;1;;1 +1853;убийство;с;1;1;1;0;1;0;;0;1;;1 +1862;платье;с;1;1;1;0;1;0;;0;1;;1 +1871;общение;с;1;1;1;0;1;0;;0;1;;1 +1884;обращение;с;1;1;1;0;1;0;;0;1;;1 +1885;обучение;с;1;1;1;0;1;0;;0;1;;1 +1887;ожидание;с;1;1;1;0;1;0;;0;1;;1 +1893;наблюдение;с;1;1;1;0;1;0;;0;1;;1 +1897;доказательство;с;1;1;1;0;1;0;;0;1;;1 +1900;признание;с;1;1;1;0;1;0;;0;1;;1 +1963;рассмотрение;с;1;1;1;0;1;0;;0;1;;1 +1974;описание;с;1;1;1;0;1;0;;0;1;;1 diff --git a/rudict/frequent_nouns_2000.xlsx b/rudict/frequent_nouns_2000.xlsx index 86459d5869f46c5c23ab3c01b85dc4a09328b9f9..a78ef5d2dbcea329b5eea77db0455fe4155f1f9e 100644 GIT binary patch literal 55234 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

ojgV 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 Mw+g0lSRMNIUx-mEJ^%m! delta 43273 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 UfaA4H_nJ=lqBh8r-GzSSKR=iv9RL6T diff --git a/rudict/grammar_case.csv b/rudict/grammar_case.csv index 4475705..b4b984f 100644 --- a/rudict/grammar_case.csv +++ b/rudict/grammar_case.csv @@ -1,168 +1,193 @@ -FIRST_A_IFORM_SINGULAR;NGC_P1_NOMINATIVE;а;рука -;NGC_P2_GENITIVE;и;подарок для руки -;NGC_P3_DATIVE;е;подарок руке -;NGC_P4_ACCUSATIVE;у;обвиняю руку -;NGC_P5_INSTRUMENTAL;ой;говорю с рукой -;NGC_P6_PREPOSITIONAL;е;говорю о руке -FIRST_A_IFORM_INANIMATE_PLURAL;NGC_P1_NOMINATIVE;и;руки -;NGC_P2_GENITIVE;;подарок для рук -;NGC_P3_DATIVE;е;подарок рукам -;NGC_P4_ACCUSATIVE;и;обвиняю руки -;NGC_P5_INSTRUMENTAL;ами;говорю с руками -;NGC_P6_PREPOSITIONAL;ах;говорю о руках -FIRST_A_IFORM_ANIMATE_PLURAL;NGC_P1_NOMINATIVE;и;бабушки -;NGC_P2_GENITIVE;;подарок для бабушек -;NGC_P3_DATIVE;е;подарок бабушкам -;NGC_P4_ACCUSATIVE;;обвиняю бабушек -;NGC_P5_INSTRUMENTAL;ами;говорю с бабушками -;NGC_P6_PREPOSITIONAL;ах;говорю о бабушках -FIRST_A_UFORM_SINGULAR;NGC_P1_NOMINATIVE;а;лапа -;NGC_P2_GENITIVE;ы;подарок для лапы -;NGC_P3_DATIVE;е;подарок лапе -;NGC_P4_ACCUSATIVE;у;обвиняю лапу -;NGC_P5_INSTRUMENTAL;ой;говорю с лапой -;NGC_P6_PREPOSITIONAL;е;говорю о лапе -FIRST_A_UFORM_INANIMATE_PLURAL;NGC_P1_NOMINATIVE;ы;лапы -;NGC_P2_GENITIVE;;подарок для лап -;NGC_P3_DATIVE;ам;подарок лапам -;NGC_P4_ACCUSATIVE;ы;обвиняю лапы -;NGC_P5_INSTRUMENTAL;ами;говорю с лапами -;NGC_P6_PREPOSITIONAL;ах;говорю о лапах -FIRST_A_UFORM_ANIMATE_PLURAL;NGC_P1_NOMINATIVE;ы;папы -;NGC_P2_GENITIVE;;подарок для пап -;NGC_P3_DATIVE;ам;подарок папам -;NGC_P4_ACCUSATIVE;;обвиняю пап -;NGC_P5_INSTRUMENTAL;ами;говорю с папами -;NGC_P6_PREPOSITIONAL;ах;говорю о папах -FIRST_YA_FORM_SINGULAR;NGC_P1_NOMINATIVE;я;пуля -;NGC_P2_GENITIVE;и;подарок для пули -;NGC_P3_DATIVE;е;подарок пуле -;NGC_P4_ACCUSATIVE;ю;обвиняю пулю -;NGC_P5_INSTRUMENTAL;ей;говорю с пулей -;NGC_P6_PREPOSITIONAL;е;говорю о пуле -FIRST_YA_FORM_INANIMATE_PLURAL;NGC_P1_NOMINATIVE;и;пули -;NGC_P2_GENITIVE;ь;подарок для пуль -;NGC_P3_DATIVE;ям;подарок пулям -;NGC_P4_ACCUSATIVE;и;обвиняю пули -;NGC_P5_INSTRUMENTAL;ями;говорю с пулями -;NGC_P6_PREPOSITIONAL;ях;говорю о пулях -FIRST_YA_FORM_ANIMATE_PLURAL;NGC_P1_NOMINATIVE;и;тети -;NGC_P2_GENITIVE;ь;подарок для теть -;NGC_P3_DATIVE;ям;подарок тетям -;NGC_P4_ACCUSATIVE;ь;обвиняю теть -;NGC_P5_INSTRUMENTAL;ями;говорю с тетями -;NGC_P6_PREPOSITIONAL;ях;говорю о тетях -SECOND_MALE_IFORM_INANIMATE_SINGULAR;NGC_P1_NOMINATIVE;;бук -;NGC_P2_GENITIVE;а;подарок для бука -;NGC_P3_DATIVE;у;подарок буку -;NGC_P4_ACCUSATIVE;;обвиняю бук -;NGC_P5_INSTRUMENTAL;ом;говорю с буком -;NGC_P6_PREPOSITIONAL;е;говорю о буке -SECOND_MALE_IFORM_INANIMATE_PLURAL;NGC_P1_NOMINATIVE;и;буки -;NGC_P2_GENITIVE;ов;подарок для буков -;NGC_P3_DATIVE;у;подарок букам -;NGC_P4_ACCUSATIVE;и;обвиняю буки -;NGC_P5_INSTRUMENTAL;ами;говорю с буками -;NGC_P6_PREPOSITIONAL;ах;говорю о буках -SECOND_MALE_IFORM_ANIMATE_SINGULAR;NGC_P1_NOMINATIVE;;рыбак -;NGC_P2_GENITIVE;а;подарок для рыбака -;NGC_P3_DATIVE;у;подарок рыбаку -;NGC_P4_ACCUSATIVE;а;обвиняю рыбака -;NGC_P5_INSTRUMENTAL;ом;говорю с рыбаком -;NGC_P6_PREPOSITIONAL;е;говорю о рыбаке -SECOND_MALE_IFORM_ANIMATE_PLURAL;NGC_P1_NOMINATIVE;и;рыбаки -;NGC_P2_GENITIVE;ов;подарок для рыбаков -;NGC_P3_DATIVE;ам;подарок рыбакам -;NGC_P4_ACCUSATIVE;ов;обвиняю рыбаков -;NGC_P5_INSTRUMENTAL;ами;говорю с рыбаками -;NGC_P6_PREPOSITIONAL;ах;говорю о рыбаках -SECOND_MALE_UFORM_INANIMATE_SINGULAR;NGC_P1_NOMINATIVE;;зад -;NGC_P2_GENITIVE;а;подарок для зада -;NGC_P3_DATIVE;у;подарок заду -;NGC_P4_ACCUSATIVE;;обвиняю зад -;NGC_P5_INSTRUMENTAL;ом;говорю с задом -;NGC_P6_PREPOSITIONAL;е;говорю о заде -SECOND_MALE_UFORM_INANIMATE_PLURAL;NGC_P1_NOMINATIVE;ы;зады -;NGC_P2_GENITIVE;ов;подарок для задов -;NGC_P3_DATIVE;ам;подарок задам -;NGC_P4_ACCUSATIVE;ы;обвиняю зады -;NGC_P5_INSTRUMENTAL;ами;говорю с задами -;NGC_P6_PREPOSITIONAL;ах;говорю о задах -SECOND_MALE_UFORM_ANIMATE_SINGULAR;NGC_P1_NOMINATIVE;;кит -;NGC_P2_GENITIVE;а;подарок для кита -;NGC_P3_DATIVE;у;подарок киту -;NGC_P4_ACCUSATIVE;а;обвиняю кита -;NGC_P5_INSTRUMENTAL;ом;говорю с китом -;NGC_P6_PREPOSITIONAL;е;говорю о ките -SECOND_MALE_UFORM_ANIMATE_PLURAL;NGC_P1_NOMINATIVE;ы;киты -;NGC_P2_GENITIVE;ов;подарок для китов -;NGC_P3_DATIVE;ам;подарок китам -;NGC_P4_ACCUSATIVE;ов;обвиняю китов -;NGC_P5_INSTRUMENTAL;ами;говорю с китами -;NGC_P6_PREPOSITIONAL;ах;говорю о китах -SECOND_MALE_SSFORM_INANIMATE_SINGULAR;NGC_P1_NOMINATIVE;ь;тополь -;NGC_P2_GENITIVE;я;подарок для тополя -;NGC_P3_DATIVE;ю;подарок тополю -;NGC_P4_ACCUSATIVE;ь;обвиняю тополь -;NGC_P5_INSTRUMENTAL;ем;говорю с тополем -;NGC_P6_PREPOSITIONAL;е;говорю о тополе -SECOND_MALE_SSFORM_INANIMATE_PLURAL;NGC_P1_NOMINATIVE;и;тополи -;NGC_P2_GENITIVE;ей;подарок для тополей -;NGC_P3_DATIVE;ям;подарок тополям -;NGC_P4_ACCUSATIVE;и;обвиняю тополи -;NGC_P5_INSTRUMENTAL;ями;говорю с тополями -;NGC_P6_PREPOSITIONAL;ях;говорю о тополях -SECOND_MALE_SSFORM_ANIMATE_SINGULAR;NGC_P1_NOMINATIVE;ь;парень -;NGC_P2_GENITIVE;я;подарок для парня -;NGC_P3_DATIVE;ю;подарок парню -;NGC_P4_ACCUSATIVE;я;обвиняю парня -;NGC_P5_INSTRUMENTAL;ем;говорю с парнем -;NGC_P6_PREPOSITIONAL;е;говорю о парне -SECOND_MALE_SSFORM_ANIMATE_PLURAL;NGC_P1_NOMINATIVE;и;парни -;NGC_P2_GENITIVE;ей;подарок для парней -;NGC_P3_DATIVE;ям;подарок парням -;NGC_P4_ACCUSATIVE;ей;обвиняю парней -;NGC_P5_INSTRUMENTAL;ями;говорю с парнями -;NGC_P6_PREPOSITIONAL;ях;говорю о парнях -SECOND_NEUTRAL_E_FORM_SINGULAR;NGC_P1_NOMINATIVE;е;поле -;NGC_P2_GENITIVE;я;подарок для поля -;NGC_P3_DATIVE;ю;подарок полю -;NGC_P4_ACCUSATIVE;е;обвиняю поле -;NGC_P5_INSTRUMENTAL;ем;говорю с полем -;NGC_P6_PREPOSITIONAL;е;говорю о поле -SECOND_NEUTRAL_E_FORM_PLURAL;NGC_P1_NOMINATIVE;я;поля -;NGC_P2_GENITIVE;ей;подарок для полей -;NGC_P3_DATIVE;ям;подарок полям -;NGC_P4_ACCUSATIVE;я;обвиняю поля -;NGC_P5_INSTRUMENTAL;ями;говорю с полями -;NGC_P6_PREPOSITIONAL;ях;говорю о полях -SECOND_NEUTRAL_O_FORM_SINGULAR;NGC_P1_NOMINATIVE;о;тело -;NGC_P2_GENITIVE;а;подарок для тела -;NGC_P3_DATIVE;у;подарок телу -;NGC_P4_ACCUSATIVE;о;обвиняю тело -;NGC_P5_INSTRUMENTAL;ом;говорю с телом -;NGC_P6_PREPOSITIONAL;е;говорю о теле -SECOND_NEUTRAL_O_FORM_PLURAL;NGC_P1_NOMINATIVE;а;тела -;NGC_P2_GENITIVE;;подарок для тел -;NGC_P3_DATIVE;ам;подарок телам -;NGC_P4_ACCUSATIVE;а;обвиняю тела -;NGC_P5_INSTRUMENTAL;ами;говорю с телами -;NGC_P6_PREPOSITIONAL;ах;говорю о телах -THIRD_FORM_SINGULAR;NGC_P1_NOMINATIVE;ь;площадь -;NGC_P2_GENITIVE;и;подарок для площади -;NGC_P3_DATIVE;и;подарок площади -;NGC_P4_ACCUSATIVE;ь;обвиняю площадь -;NGC_P5_INSTRUMENTAL;ью;говорю с площадью -;NGC_P6_PREPOSITIONAL;и;говорю о площади -THIRD_FORM_INANIMATE_PLURAL;NGC_P1_NOMINATIVE;и;площади -;NGC_P2_GENITIVE;ей;подарок для площадей -;NGC_P3_DATIVE;ям;подарок площадям -;NGC_P4_ACCUSATIVE;и;обвиняю площади -;NGC_P5_INSTRUMENTAL;ями;говорю с площадями -;NGC_P6_PREPOSITIONAL;ях;говорю о площадях -THIRD_FORM_ANIMATE_PLURAL;NGC_P1_NOMINATIVE;и;лошади -;NGC_P2_GENITIVE;ей;подарок для лошадей -;NGC_P3_DATIVE;ям;подарок лошадям -;NGC_P4_ACCUSATIVE;ей;обвиняю лошадей -;NGC_P5_INSTRUMENTAL;ями;говорю с лошадями -;NGC_P6_PREPOSITIONAL;ях;говорю о лошадях +Склонение;Род;Падеж;Окончание;Пример +FIRST_A_IFORM_INANIMATE;NC_SINGULAR;NGC_P1_NOMINATIVE;а;рука +;;NGC_P2_GENITIVE;и;подарок для руки +;;NGC_P3_DATIVE;е;подарок руке +;;NGC_P4_ACCUSATIVE;у;обвиняю руку +;;NGC_P5_INSTRUMENTAL;ой;говорю с рукой +;;NGC_P6_PREPOSITIONAL;е;говорю о руке +;NC_PLURAL;NGC_P1_NOMINATIVE;и;руки +;;NGC_P2_GENITIVE;;подарок для рук +;;NGC_P3_DATIVE;е;подарок рукам +;;NGC_P4_ACCUSATIVE;и;обвиняю руки +;;NGC_P5_INSTRUMENTAL;ами;говорю с руками +;;NGC_P6_PREPOSITIONAL;ах;говорю о руках +FIRST_A_IFORM_ANIMATE;NC_SINGULAR;NGC_P1_NOMINATIVE;а;бабушка +;;NGC_P2_GENITIVE;и;подарок для бабушки +;;NGC_P3_DATIVE;е;подарок бабушке +;;NGC_P4_ACCUSATIVE;у;обвиняю бабушку +;;NGC_P5_INSTRUMENTAL;ой;говорю с бабушкой +;;NGC_P6_PREPOSITIONAL;е;говорю о бабушке +;NC_PLURAL;NGC_P1_NOMINATIVE;и;бабушки +;;NGC_P2_GENITIVE;;подарок для бабушек +;;NGC_P3_DATIVE;е;подарок бабушкам +;;NGC_P4_ACCUSATIVE;;обвиняю бабушек +;;NGC_P5_INSTRUMENTAL;ами;говорю с бабушками +;;NGC_P6_PREPOSITIONAL;ах;говорю о бабушках +FIRST_A_UFORM_INANIMATE;NC_SINGULAR;NGC_P1_NOMINATIVE;а;лапа +;;NGC_P2_GENITIVE;ы;подарок для лапы +;;NGC_P3_DATIVE;е;подарок лапе +;;NGC_P4_ACCUSATIVE;у;обвиняю лапу +;;NGC_P5_INSTRUMENTAL;ой;говорю с лапой +;;NGC_P6_PREPOSITIONAL;е;говорю о лапе +;NC_PLURAL;NGC_P1_NOMINATIVE;ы;лапы +;;NGC_P2_GENITIVE;;подарок для лап +;;NGC_P3_DATIVE;ам;подарок лапам +;;NGC_P4_ACCUSATIVE;ы;обвиняю лапы +;;NGC_P5_INSTRUMENTAL;ами;говорю с лапами +;;NGC_P6_PREPOSITIONAL;ах;говорю о лапах +FIRST_A_UFORM_ANIMATE;NC_SINGULAR;NGC_P1_NOMINATIVE;а;папа +;;NGC_P2_GENITIVE;ы;подарок для папы +;;NGC_P3_DATIVE;е;подарок папе +;;NGC_P4_ACCUSATIVE;у;обвиняю папу +;;NGC_P5_INSTRUMENTAL;ой;говорю с папой +;;NGC_P6_PREPOSITIONAL;е;говорю о папе +;NC_PLURAL;NGC_P1_NOMINATIVE;ы;папы +;;NGC_P2_GENITIVE;;подарок для пап +;;NGC_P3_DATIVE;ам;подарок папам +;;NGC_P4_ACCUSATIVE;;обвиняю пап +;;NGC_P5_INSTRUMENTAL;ами;говорю с папами +;;NGC_P6_PREPOSITIONAL;ах;говорю о папах +FIRST_YA_FORM_INANIMATE;NC_SINGULAR;NGC_P1_NOMINATIVE;я;пуля +;;NGC_P2_GENITIVE;и;подарок для пули +;;NGC_P3_DATIVE;е;подарок пуле +;;NGC_P4_ACCUSATIVE;ю;обвиняю пулю +;;NGC_P5_INSTRUMENTAL;ей;говорю с пулей +;;NGC_P6_PREPOSITIONAL;е;говорю о пуле +;NC_PLURAL;NGC_P1_NOMINATIVE;и;пули +;;NGC_P2_GENITIVE;ь;подарок для пуль +;;NGC_P3_DATIVE;ям;подарок пулям +;;NGC_P4_ACCUSATIVE;и;обвиняю пули +;;NGC_P5_INSTRUMENTAL;ями;говорю с пулями +;;NGC_P6_PREPOSITIONAL;ях;говорю о пулях +FIRST_YA_FORM_ANIMATE;NC_SINGULAR;NGC_P1_NOMINATIVE;я;тетя +;;NGC_P2_GENITIVE;и;подарок для тети +;;NGC_P3_DATIVE;е;подарок тете +;;NGC_P4_ACCUSATIVE;ю;обвиняю тетю +;;NGC_P5_INSTRUMENTAL;ей;говорю с тетей +;;NGC_P6_PREPOSITIONAL;е;говорю о тете +;NC_PLURAL;NGC_P1_NOMINATIVE;и;тети +;;NGC_P2_GENITIVE;ь;подарок для теть +;;NGC_P3_DATIVE;ям;подарок тетям +;;NGC_P4_ACCUSATIVE;ь;обвиняю теть +;;NGC_P5_INSTRUMENTAL;ями;говорю с тетями +;;NGC_P6_PREPOSITIONAL;ях;говорю о тетях +SECOND_MALE_IFORM_INANIMATE;NC_SINGULAR;NGC_P1_NOMINATIVE;;бук +;;NGC_P2_GENITIVE;а;подарок для бука +;;NGC_P3_DATIVE;у;подарок буку +;;NGC_P4_ACCUSATIVE;;обвиняю бук +;;NGC_P5_INSTRUMENTAL;ом;говорю с буком +;;NGC_P6_PREPOSITIONAL;е;говорю о буке +;NC_PLURAL;NGC_P1_NOMINATIVE;и;буки +;;NGC_P2_GENITIVE;ов;подарок для буков +;;NGC_P3_DATIVE;ам;подарок букам +;;NGC_P4_ACCUSATIVE;и;обвиняю буки +;;NGC_P5_INSTRUMENTAL;ами;говорю с буками +;;NGC_P6_PREPOSITIONAL;ах;говорю о буках +SECOND_MALE_IFORM_ANIMATE;NC_SINGULAR;NGC_P1_NOMINATIVE;;рыбак +;;NGC_P2_GENITIVE;а;подарок для рыбака +;;NGC_P3_DATIVE;у;подарок рыбаку +;;NGC_P4_ACCUSATIVE;а;обвиняю рыбака +;;NGC_P5_INSTRUMENTAL;ом;говорю с рыбаком +;;NGC_P6_PREPOSITIONAL;е;говорю о рыбаке +;NC_PLURAL;NGC_P1_NOMINATIVE;и;рыбаки +;;NGC_P2_GENITIVE;ов;подарок для рыбаков +;;NGC_P3_DATIVE;ам;подарок рыбакам +;;NGC_P4_ACCUSATIVE;ов;обвиняю рыбаков +;;NGC_P5_INSTRUMENTAL;ами;говорю с рыбаками +;;NGC_P6_PREPOSITIONAL;ах;говорю о рыбаках +SECOND_MALE_UFORM_INANIMATE;NC_SINGULAR;NGC_P1_NOMINATIVE;;зад +;;NGC_P2_GENITIVE;а;подарок для зада +;;NGC_P3_DATIVE;у;подарок заду +;;NGC_P4_ACCUSATIVE;;обвиняю зад +;;NGC_P5_INSTRUMENTAL;ом;говорю с задом +;;NGC_P6_PREPOSITIONAL;е;говорю о заде +;NC_PLURAL;NGC_P1_NOMINATIVE;ы;зады +;;NGC_P2_GENITIVE;ов;подарок для задов +;;NGC_P3_DATIVE;ам;подарок задам +;;NGC_P4_ACCUSATIVE;ы;обвиняю зады +;;NGC_P5_INSTRUMENTAL;ами;говорю с задами +;;NGC_P6_PREPOSITIONAL;ах;говорю о задах +SECOND_MALE_UFORM_ANIMATE;NC_SINGULAR;NGC_P1_NOMINATIVE;;кит +;;NGC_P2_GENITIVE;а;подарок для кита +;;NGC_P3_DATIVE;у;подарок киту +;;NGC_P4_ACCUSATIVE;а;обвиняю кита +;;NGC_P5_INSTRUMENTAL;ом;говорю с китом +;;NGC_P6_PREPOSITIONAL;е;говорю о ките +;NC_PLURAL;NGC_P1_NOMINATIVE;ы;киты +;;NGC_P2_GENITIVE;ов;подарок для китов +;;NGC_P3_DATIVE;ам;подарок китам +;;NGC_P4_ACCUSATIVE;ов;обвиняю китов +;;NGC_P5_INSTRUMENTAL;ами;говорю с китами +;;NGC_P6_PREPOSITIONAL;ах;говорю о китах +SECOND_MALE_SSFORM_INANIMATE;NC_SINGULAR;NGC_P1_NOMINATIVE;ь;тополь +;;NGC_P2_GENITIVE;я;подарок для тополя +;;NGC_P3_DATIVE;ю;подарок тополю +;;NGC_P4_ACCUSATIVE;ь;обвиняю тополь +;;NGC_P5_INSTRUMENTAL;ем;говорю с тополем +;;NGC_P6_PREPOSITIONAL;е;говорю о тополе +;NC_PLURAL;NGC_P1_NOMINATIVE;и;тополи +;;NGC_P2_GENITIVE;ей;подарок для тополей +;;NGC_P3_DATIVE;ям;подарок тополям +;;NGC_P4_ACCUSATIVE;и;обвиняю тополи +;;NGC_P5_INSTRUMENTAL;ями;говорю с тополями +;;NGC_P6_PREPOSITIONAL;ях;говорю о тополях +SECOND_MALE_SSFORM_ANIMATE;NC_SINGULAR;NGC_P1_NOMINATIVE;ь;парень +;;NGC_P2_GENITIVE;я;подарок для парня +;;NGC_P3_DATIVE;ю;подарок парню +;;NGC_P4_ACCUSATIVE;я;обвиняю парня +;;NGC_P5_INSTRUMENTAL;ем;говорю с парнем +;;NGC_P6_PREPOSITIONAL;е;говорю о парне +;NC_PLURAL;NGC_P1_NOMINATIVE;и;парни +;;NGC_P2_GENITIVE;ей;подарок для парней +;;NGC_P3_DATIVE;ям;подарок парням +;;NGC_P4_ACCUSATIVE;ей;обвиняю парней +;;NGC_P5_INSTRUMENTAL;ями;говорю с парнями +;;NGC_P6_PREPOSITIONAL;ях;говорю о парнях +SECOND_NEUTRAL_E_FORM;NC_SINGULAR;NGC_P1_NOMINATIVE;е;поле +;;NGC_P2_GENITIVE;я;подарок для поля +;;NGC_P3_DATIVE;ю;подарок полю +;;NGC_P4_ACCUSATIVE;е;обвиняю поле +;;NGC_P5_INSTRUMENTAL;ем;говорю с полем +;;NGC_P6_PREPOSITIONAL;е;говорю о поле +;NC_PLURAL;NGC_P1_NOMINATIVE;я;поля +;;NGC_P2_GENITIVE;ей;подарок для полей +;;NGC_P3_DATIVE;ям;подарок полям +;;NGC_P4_ACCUSATIVE;я;обвиняю поля +;;NGC_P5_INSTRUMENTAL;ями;говорю с полями +;;NGC_P6_PREPOSITIONAL;ях;говорю о полях +SECOND_NEUTRAL_O_FORM;NC_SINGULAR;NGC_P1_NOMINATIVE;о;тело +;;NGC_P2_GENITIVE;а;подарок для тела +;;NGC_P3_DATIVE;у;подарок телу +;;NGC_P4_ACCUSATIVE;о;обвиняю тело +;;NGC_P5_INSTRUMENTAL;ом;говорю с телом +;;NGC_P6_PREPOSITIONAL;е;говорю о теле +;NC_PLURAL;NGC_P1_NOMINATIVE;а;тела +;;NGC_P2_GENITIVE;;подарок для тел +;;NGC_P3_DATIVE;ам;подарок телам +;;NGC_P4_ACCUSATIVE;а;обвиняю тела +;;NGC_P5_INSTRUMENTAL;ами;говорю с телами +;;NGC_P6_PREPOSITIONAL;ах;говорю о телах +THIRD_FORM_INANIMATE;NC_SINGULAR;NGC_P1_NOMINATIVE;ь;площадь +;;NGC_P2_GENITIVE;и;подарок для площади +;;NGC_P3_DATIVE;и;подарок площади +;;NGC_P4_ACCUSATIVE;ь;обвиняю площадь +;;NGC_P5_INSTRUMENTAL;ью;говорю с площадью +;;NGC_P6_PREPOSITIONAL;и;говорю о площади +;NC_PLURAL;NGC_P1_NOMINATIVE;и;площади +;;NGC_P2_GENITIVE;ей;подарок для площадей +;;NGC_P3_DATIVE;ям;подарок площадям +;;NGC_P4_ACCUSATIVE;и;обвиняю площади +;;NGC_P5_INSTRUMENTAL;ями;говорю с площадями +;;NGC_P6_PREPOSITIONAL;ях;говорю о площадях +THIRD_FORM_ANIMATE;NC_SINGULAR;NGC_P1_NOMINATIVE;ь;лошадь +;;NGC_P2_GENITIVE;и;подарок для лошади +;;NGC_P3_DATIVE;и;подарок лошади +;;NGC_P4_ACCUSATIVE;ь;обвиняю лошадь +;;NGC_P5_INSTRUMENTAL;ью;говорю с лошадью +;;NGC_P6_PREPOSITIONAL;и;говорю о лошади +;NC_PLURAL;NGC_P1_NOMINATIVE;и;лошади +;;NGC_P2_GENITIVE;ей;подарок для лошадей +;;NGC_P3_DATIVE;ям;подарок лошадям +;;NGC_P4_ACCUSATIVE;ей;обвиняю лошадей +;;NGC_P5_INSTRUMENTAL;ями;говорю с лошадями +;;NGC_P6_PREPOSITIONAL;ях;говорю о лошадях diff --git a/rudict/grammar_case.xlsx b/rudict/grammar_case.xlsx index e593bd08859502db7db9d6e66af918fb69b056dc..2caad6cce642147b7f76d8ba1424c045eca55958 100644 GIT binary patch delta 6275 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 getPossibleNounEndingDivisionSet(std::wstring noun) +std::set getPossibleNounEndingDivisionSet(std::wstring noun) { - std::set> result; + std::set result; auto allNounEndingArr = GetAllNounEndingArr(); @@ -365,8 +353,20 @@ std::set> getPossibleNounEndingDivisionSet if (charIsConsolant(nounBase[nounBase.size() - 1]) || nounBase[nounBase.size() - 1] == L'ь' || nounBase[nounBase.size() - 1] == L'ъ') { - result.insert({ nounBase, ending}); + result.insert({ nounBase, ending, NounEndingDivision::DC_COMMON }); } + + //Check missed vowel (simple case) + if (charIsConsolant(nounBase[nounBase.size() - 1]) && charIsConsolant(nounBase[nounBase.size() - 2])) + { + result.insert({ nounBase, ending, NounEndingDivision::DC_LOST_VOWEL_O }); + } + + if (charIsConsolant(nounBase[nounBase.size() - 1]) && nounBase[nounBase.size() - 2] == L'ь') + { + result.insert({ nounBase, ending, NounEndingDivision::DC_LOST_VOWEL_E }); + } + } } @@ -381,11 +381,11 @@ std::vector GetPossibleNounTupleArr(std::wstring nounEnding) for (auto& noun : nounDeclencionCaseTable) { - for (int i = 0; i < 6; i++) + for (int i = 0; i < NGC_SIZE * NC_SIZE; i++) { - if (noun.grammaticalCaseMap[i].second == nounEnding) + if (noun.grammaticalCaseTable[i].ending == nounEnding) { - result.push_back(NounTuple{ noun.nounDeclencion, noun.grammaticalCaseMap[i].first }); + result.push_back(NounTuple{ noun.nounDeclencion, noun.grammaticalCaseTable[i].count, noun.grammaticalCaseTable[i].grammaticalCase }); } } @@ -394,119 +394,6 @@ std::vector GetPossibleNounTupleArr(std::wstring nounEnding) return result; } -bool NounDeclencionIsPlural(NounDeclencion nounDeclencion) -{ - switch (nounDeclencion) - { - case FIRST_A_IFORM_SINGULAR: - case FIRST_A_UFORM_SINGULAR: - case FIRST_YA_FORM_SINGULAR: - case SECOND_MALE_IFORM_INANIMATE_SINGULAR: - case SECOND_MALE_IFORM_ANIMATE_SINGULAR: - case SECOND_MALE_UFORM_INANIMATE_SINGULAR: - case SECOND_MALE_UFORM_ANIMATE_SINGULAR: - case SECOND_MALE_SSFORM_INANIMATE_SINGULAR: - case SECOND_MALE_SSFORM_ANIMATE_SINGULAR: - case SECOND_NEUTRAL_E_FORM_SINGULAR: - case SECOND_NEUTRAL_O_FORM_SINGULAR: - case THIRD_FORM_SINGULAR: - return false; - break; - default: - return true; - break; - } -} - -NounDeclencion ConvertToSingularIfNeeded(NounDeclencion nounDeclencion) -{ - switch (nounDeclencion) - { - case FIRST_A_IFORM_SINGULAR: - case FIRST_A_IFORM_INANIMATE_PLURAL: - case FIRST_A_IFORM_ANIMATE_PLURAL: - - return FIRST_A_IFORM_SINGULAR; - - break; - case FIRST_A_UFORM_SINGULAR: - case FIRST_A_UFORM_INANIMATE_PLURAL: - case FIRST_A_UFORM_ANIMATE_PLURAL: - - return FIRST_A_UFORM_SINGULAR; - - break; - case FIRST_YA_FORM_SINGULAR: - case FIRST_YA_FORM_INANIMATE_PLURAL: - case FIRST_YA_FORM_ANIMATE_PLURAL: - - return FIRST_YA_FORM_SINGULAR; - - break; - case SECOND_MALE_IFORM_INANIMATE_SINGULAR: - case SECOND_MALE_IFORM_INANIMATE_PLURAL: - - return SECOND_MALE_IFORM_INANIMATE_SINGULAR; - - break; - case SECOND_MALE_IFORM_ANIMATE_SINGULAR: - case SECOND_MALE_IFORM_ANIMATE_PLURAL: - - return SECOND_MALE_IFORM_ANIMATE_SINGULAR; - - break; - case SECOND_MALE_UFORM_INANIMATE_SINGULAR: - case SECOND_MALE_UFORM_INANIMATE_PLURAL: - - return SECOND_MALE_UFORM_INANIMATE_SINGULAR; - - break; - case SECOND_MALE_UFORM_ANIMATE_SINGULAR: - case SECOND_MALE_UFORM_ANIMATE_PLURAL: - - return SECOND_MALE_UFORM_ANIMATE_SINGULAR; - - break; - case SECOND_MALE_SSFORM_INANIMATE_SINGULAR: - case SECOND_MALE_SSFORM_INANIMATE_PLURAL: - - return SECOND_MALE_SSFORM_INANIMATE_SINGULAR; - - break; - case SECOND_MALE_SSFORM_ANIMATE_SINGULAR: - case SECOND_MALE_SSFORM_ANIMATE_PLURAL: - - return SECOND_MALE_SSFORM_ANIMATE_SINGULAR; - - break; - case SECOND_NEUTRAL_E_FORM_SINGULAR: - case SECOND_NEUTRAL_E_FORM_PLURAL: - - return SECOND_NEUTRAL_E_FORM_SINGULAR; - - break; - case SECOND_NEUTRAL_O_FORM_SINGULAR: - case SECOND_NEUTRAL_O_FORM_PLURAL: - - return SECOND_NEUTRAL_O_FORM_SINGULAR; - - break; - case THIRD_FORM_SINGULAR: - case THIRD_FORM_INANIMATE_PLURAL: - case THIRD_FORM_ANIMATE_PLURAL: - - return THIRD_FORM_SINGULAR; - - break; - default: - - std::cout << "Error in ConvertToSingularIfNeeded" << std::endl; - - return FIRST_A_IFORM_SINGULAR; - break; - } -} - std::vector FilterNounTupleArrByNounDeclentionSet(std::vector nounTupleArr, std::set filter) { std::vector result; @@ -523,26 +410,26 @@ std::vector FilterNounTupleArrByNounDeclentionSet(std::vector(nounDeclencion)]; - //Get nominative form of this declention - std::wstring nounEndling = nounDeclencionCaseTable[static_cast(nounDeclencionSingular)].grammaticalCaseMap[static_cast(NGC_P1_NOMINATIVE)].second; + for (auto& grammaticalTableRecord : nounDeclencionCaseTableRecord.grammaticalCaseTable) + { + if (grammaticalTableRecord.grammaticalCase == NGC_P1_NOMINATIVE && grammaticalTableRecord.count == nounCount) + { + return nounBase + grammaticalTableRecord.ending; + } + } - return nounBase + nounEndling; -} + std::cout << "Error in GetNounNoninative" << std::endl; - -std::wstring GetNounNoninative(std::wstring nounBase, NounDeclencion nounDeclencion) -{ - std::wstring nounEndling = nounDeclencionCaseTable[static_cast(nounDeclencion)].grammaticalCaseMap[static_cast(NGC_P1_NOMINATIVE)].second; - - return nounBase + nounEndling; + return L""; } std::wstring i_form_consolants = L"гкжшчщ"; -std::wstring u_form_consolants = L"бпдтвфзснмлр"; +std::wstring u_form_consolants = L"бпдтвфзснмлрц"; wchar_t GetLastChar(const NounRecord& nounRecord) { @@ -565,51 +452,51 @@ bool charIsUFormConsolant(wchar_t c) } -bool FirstAIFormSingularCondition(const NounRecord& nounRecord) +bool FirstAIFormSingularCondition(const NounRecord& nounRecord) //Same for both animate and inanimate { return nounRecord.haveSingleForm && (GetLastChar(nounRecord) == L'а' && charIsIFormConsolant(GetPrevLastChar(nounRecord))); } bool FirstAIFormInanimatePluralCondition(const NounRecord& nounRecord) { - return nounRecord.haveStandardMultipleForm && nounRecord.canBeInanimate && (GetLastChar(nounRecord) == L'а' && charIsIFormConsolant(GetPrevLastChar(nounRecord))); + return nounRecord.haveMultipleForm && nounRecord.canBeInanimate && (GetLastChar(nounRecord) == L'а' && charIsIFormConsolant(GetPrevLastChar(nounRecord))); } bool FirstAIFormAnimatePluralCondition(const NounRecord& nounRecord) { - return nounRecord.haveStandardMultipleForm && nounRecord.canBeAnimate && (GetLastChar(nounRecord) == L'а' && charIsIFormConsolant(GetPrevLastChar(nounRecord))); + return nounRecord.haveMultipleForm && nounRecord.canBeAnimate && (GetLastChar(nounRecord) == L'а' && charIsIFormConsolant(GetPrevLastChar(nounRecord))); } -bool FirstAUFormSingularCondition(const NounRecord& nounRecord) +bool FirstAUFormSingularCondition(const NounRecord& nounRecord) //Same for both animate and inanimate { return nounRecord.haveSingleForm && (GetLastChar(nounRecord) == L'а' && charIsUFormConsolant(GetPrevLastChar(nounRecord))); } bool FirstAUFormInanimatePluralCondition(const NounRecord& nounRecord) { - return nounRecord.haveStandardMultipleForm && nounRecord.canBeInanimate && (GetLastChar(nounRecord) == L'а' && charIsUFormConsolant(GetPrevLastChar(nounRecord))); + return nounRecord.haveMultipleForm && nounRecord.canBeInanimate && (GetLastChar(nounRecord) == L'а' && charIsUFormConsolant(GetPrevLastChar(nounRecord))); } bool FirstAUFormAnimatePluralCondition(const NounRecord& nounRecord) { - return nounRecord.haveStandardMultipleForm && nounRecord.canBeAnimate && (GetLastChar(nounRecord) == L'а' && charIsUFormConsolant(GetPrevLastChar(nounRecord))); + return nounRecord.haveMultipleForm && nounRecord.canBeAnimate && (GetLastChar(nounRecord) == L'а' && charIsUFormConsolant(GetPrevLastChar(nounRecord))); } -bool FirstYaFormSingularCondition(const NounRecord& nounRecord) +bool FirstYaFormSingularCondition(const NounRecord& nounRecord) //Same for both animate and inanimate { return nounRecord.haveSingleForm && (GetLastChar(nounRecord) == L'я'); } bool FirstYaFormInanimatePluralCondition(const NounRecord& nounRecord) { - return nounRecord.haveStandardMultipleForm && nounRecord.canBeInanimate && (GetLastChar(nounRecord) == L'я'); + return nounRecord.haveMultipleForm && nounRecord.canBeInanimate && (GetLastChar(nounRecord) == L'я'); } bool FirstYaFormAnimatePluralCondition(const NounRecord& nounRecord) { - return nounRecord.haveStandardMultipleForm && nounRecord.canBeAnimate && (GetLastChar(nounRecord) == L'я'); + return nounRecord.haveMultipleForm && nounRecord.canBeAnimate && (GetLastChar(nounRecord) == L'я'); } @@ -622,7 +509,7 @@ bool SecondMaleIFormInanimateSingularCondition(const NounRecord& nounRecord) bool SecondMaleIFormInanimatePluralCondition(const NounRecord& nounRecord) { - return nounRecord.haveStandardMultipleForm && nounRecord.gender == NG_MALE && nounRecord.canBeInanimate && charIsIFormConsolant(GetLastChar(nounRecord)); + return nounRecord.haveMultipleForm && nounRecord.gender == NG_MALE && nounRecord.canBeInanimate && charIsIFormConsolant(GetLastChar(nounRecord)); } @@ -633,7 +520,7 @@ bool SecondMaleIFormAnimateSingularCondition(const NounRecord& nounRecord) bool SecondMaleIFormAnimatePluralCondition(const NounRecord& nounRecord) { - return nounRecord.haveStandardMultipleForm && nounRecord.gender == NG_MALE && nounRecord.canBeAnimate && charIsIFormConsolant(GetLastChar(nounRecord)); + return nounRecord.haveMultipleForm && nounRecord.gender == NG_MALE && nounRecord.canBeAnimate && charIsIFormConsolant(GetLastChar(nounRecord)); } @@ -644,7 +531,7 @@ bool SecondMaleUFormInanimateSingularCondition(const NounRecord& nounRecord) bool SecondMaleUFormInanimatePluralCondition(const NounRecord& nounRecord) { - return nounRecord.haveStandardMultipleForm && nounRecord.gender == NG_MALE && nounRecord.canBeInanimate && charIsUFormConsolant(GetLastChar(nounRecord)); + return nounRecord.haveMultipleForm && nounRecord.gender == NG_MALE && nounRecord.canBeInanimate && charIsUFormConsolant(GetLastChar(nounRecord)); } @@ -655,7 +542,7 @@ bool SecondMaleUFormAnimateSingularCondition(const NounRecord& nounRecord) bool SecondMaleUFormAnimatePluralCondition(const NounRecord& nounRecord) { - return nounRecord.haveStandardMultipleForm && nounRecord.gender == NG_MALE && nounRecord.canBeAnimate && charIsUFormConsolant(GetLastChar(nounRecord)); + return nounRecord.haveMultipleForm && nounRecord.gender == NG_MALE && nounRecord.canBeAnimate && charIsUFormConsolant(GetLastChar(nounRecord)); } @@ -666,7 +553,7 @@ bool SecondMaleSSFormInanimateSingularCondition(const NounRecord& nounRecord) bool SecondMaleSSFormInanimatePluralCondition(const NounRecord& nounRecord) { - return nounRecord.haveStandardMultipleForm && nounRecord.gender == NG_MALE && nounRecord.canBeInanimate && GetLastChar(nounRecord) == L'ь'; + return nounRecord.haveMultipleForm && nounRecord.gender == NG_MALE && nounRecord.canBeInanimate && GetLastChar(nounRecord) == L'ь'; } @@ -677,7 +564,7 @@ bool SecondMaleSSFormAnimateSingularCondition(const NounRecord& nounRecord) bool SecondMaleSSFormAnimatePluralCondition(const NounRecord& nounRecord) { - return nounRecord.haveStandardMultipleForm && nounRecord.gender == NG_MALE && nounRecord.canBeAnimate && GetLastChar(nounRecord) == L'ь'; + return nounRecord.haveMultipleForm && nounRecord.gender == NG_MALE && nounRecord.canBeAnimate && GetLastChar(nounRecord) == L'ь'; } bool SecondNeutralEFormSingularCondition(const NounRecord& nounRecord) @@ -687,7 +574,7 @@ bool SecondNeutralEFormSingularCondition(const NounRecord& nounRecord) bool SecondNeutralEFormPluralCondition(const NounRecord& nounRecord) { - return nounRecord.haveStandardMultipleForm && nounRecord.gender == NG_NEUTRAL && GetLastChar(nounRecord) == L'е'; + return nounRecord.haveMultipleForm && nounRecord.gender == NG_NEUTRAL && GetLastChar(nounRecord) == L'е'; } bool SecondNeutralOFormSingularCondition(const NounRecord& nounRecord) @@ -697,67 +584,71 @@ bool SecondNeutralOFormSingularCondition(const NounRecord& nounRecord) bool SecondNeutralOFormPluralCondition(const NounRecord& nounRecord) { - return nounRecord.haveStandardMultipleForm && nounRecord.gender == NG_NEUTRAL && GetLastChar(nounRecord) == L'о'; + return nounRecord.haveMultipleForm && nounRecord.gender == NG_NEUTRAL && GetLastChar(nounRecord) == L'о'; } -bool ThirdFormSingularCondition(const NounRecord& nounRecord) +bool ThirdFormSingularCondition(const NounRecord& nounRecord) //Same for both animate and inanimate { return nounRecord.haveSingleForm && nounRecord.gender == NG_FEMALE && GetLastChar(nounRecord) == L'ь'; } bool ThirdFormInanimatePluralCondition(const NounRecord& nounRecord) { - return nounRecord.haveStandardMultipleForm && nounRecord.gender == NG_FEMALE && nounRecord.canBeInanimate && GetLastChar(nounRecord) == L'ь'; + return nounRecord.haveMultipleForm && nounRecord.gender == NG_FEMALE && nounRecord.canBeInanimate && GetLastChar(nounRecord) == L'ь'; } bool ThirdFormAnimatePluralCondition(const NounRecord& nounRecord) { - return nounRecord.haveStandardMultipleForm && nounRecord.gender == NG_FEMALE && nounRecord.canBeAnimate && GetLastChar(nounRecord) == L'ь'; + return nounRecord.haveMultipleForm && nounRecord.gender == NG_FEMALE && nounRecord.canBeAnimate && GetLastChar(nounRecord) == L'ь'; } -std::map> DeclentionConditionMap; +std::map, std::function < bool(const NounRecord&) >> DeclentionConditionMap; void SetupDeclentionMap() { - DeclentionConditionMap[FIRST_A_IFORM_SINGULAR] = std::bind(FirstAIFormSingularCondition, std::placeholders::_1); - DeclentionConditionMap[FIRST_A_IFORM_INANIMATE_PLURAL] = std::bind(FirstAIFormInanimatePluralCondition, std::placeholders::_1); - DeclentionConditionMap[FIRST_A_IFORM_ANIMATE_PLURAL] = std::bind(FirstAIFormAnimatePluralCondition, std::placeholders::_1); + DeclentionConditionMap[{FIRST_A_IFORM_INANIMATE, NC_SINGULAR}] = std::bind(FirstAIFormSingularCondition, std::placeholders::_1); + DeclentionConditionMap[{FIRST_A_IFORM_ANIMATE, NC_SINGULAR}] = std::bind(FirstAIFormSingularCondition, std::placeholders::_1); + DeclentionConditionMap[{FIRST_A_IFORM_INANIMATE, NC_PLURAL}] = std::bind(FirstAIFormInanimatePluralCondition, std::placeholders::_1); + DeclentionConditionMap[{FIRST_A_IFORM_ANIMATE, NC_PLURAL}] = std::bind(FirstAIFormAnimatePluralCondition, std::placeholders::_1); - DeclentionConditionMap[FIRST_A_UFORM_SINGULAR] = std::bind(FirstAUFormSingularCondition, std::placeholders::_1); - DeclentionConditionMap[FIRST_A_UFORM_INANIMATE_PLURAL] = std::bind(FirstAUFormInanimatePluralCondition, std::placeholders::_1); - DeclentionConditionMap[FIRST_A_UFORM_ANIMATE_PLURAL] = std::bind(FirstAUFormAnimatePluralCondition, std::placeholders::_1); + DeclentionConditionMap[{FIRST_A_UFORM_INANIMATE, NC_SINGULAR}] = std::bind(FirstAUFormSingularCondition, std::placeholders::_1); + DeclentionConditionMap[{FIRST_A_UFORM_ANIMATE, NC_SINGULAR}] = std::bind(FirstAUFormSingularCondition, std::placeholders::_1); + DeclentionConditionMap[{FIRST_A_UFORM_INANIMATE, NC_PLURAL}] = std::bind(FirstAUFormInanimatePluralCondition, std::placeholders::_1); + DeclentionConditionMap[{FIRST_A_UFORM_ANIMATE, NC_PLURAL}] = std::bind(FirstAUFormAnimatePluralCondition, std::placeholders::_1); - DeclentionConditionMap[FIRST_YA_FORM_SINGULAR] = std::bind(FirstYaFormSingularCondition, std::placeholders::_1); - DeclentionConditionMap[FIRST_YA_FORM_INANIMATE_PLURAL] = std::bind(FirstYaFormInanimatePluralCondition, std::placeholders::_1); - DeclentionConditionMap[FIRST_YA_FORM_ANIMATE_PLURAL] = std::bind(FirstYaFormAnimatePluralCondition, std::placeholders::_1); + DeclentionConditionMap[{FIRST_YA_FORM_INANIMATE, NC_SINGULAR}] = std::bind(FirstYaFormSingularCondition, std::placeholders::_1); + DeclentionConditionMap[{FIRST_YA_FORM_ANIMATE, NC_SINGULAR}] = std::bind(FirstYaFormSingularCondition, std::placeholders::_1); + DeclentionConditionMap[{FIRST_YA_FORM_INANIMATE, NC_PLURAL}] = std::bind(FirstYaFormInanimatePluralCondition, std::placeholders::_1); + DeclentionConditionMap[{FIRST_YA_FORM_ANIMATE, NC_PLURAL}] = std::bind(FirstYaFormAnimatePluralCondition, std::placeholders::_1); //Second form - DeclentionConditionMap[SECOND_MALE_IFORM_INANIMATE_SINGULAR] = std::bind(SecondMaleIFormInanimateSingularCondition, std::placeholders::_1); - DeclentionConditionMap[SECOND_MALE_IFORM_INANIMATE_PLURAL] = std::bind(SecondMaleIFormInanimatePluralCondition, std::placeholders::_1); - DeclentionConditionMap[SECOND_MALE_IFORM_ANIMATE_SINGULAR] = std::bind(SecondMaleIFormAnimateSingularCondition, std::placeholders::_1); - DeclentionConditionMap[SECOND_MALE_IFORM_ANIMATE_PLURAL] = std::bind(SecondMaleIFormAnimatePluralCondition, std::placeholders::_1); + DeclentionConditionMap[{SECOND_MALE_IFORM_INANIMATE, NC_SINGULAR}] = std::bind(SecondMaleIFormInanimateSingularCondition, std::placeholders::_1); + DeclentionConditionMap[{SECOND_MALE_IFORM_INANIMATE, NC_PLURAL}] = std::bind(SecondMaleIFormInanimatePluralCondition, std::placeholders::_1); + DeclentionConditionMap[{SECOND_MALE_IFORM_ANIMATE, NC_SINGULAR}] = std::bind(SecondMaleIFormAnimateSingularCondition, std::placeholders::_1); + DeclentionConditionMap[{SECOND_MALE_IFORM_ANIMATE, NC_PLURAL}] = std::bind(SecondMaleIFormAnimatePluralCondition, std::placeholders::_1); - DeclentionConditionMap[SECOND_MALE_UFORM_INANIMATE_SINGULAR] = std::bind(SecondMaleUFormInanimateSingularCondition, std::placeholders::_1); - DeclentionConditionMap[SECOND_MALE_UFORM_INANIMATE_PLURAL] = std::bind(SecondMaleUFormInanimatePluralCondition, std::placeholders::_1); - DeclentionConditionMap[SECOND_MALE_UFORM_ANIMATE_SINGULAR] = std::bind(SecondMaleUFormAnimateSingularCondition, std::placeholders::_1); - DeclentionConditionMap[SECOND_MALE_UFORM_ANIMATE_PLURAL] = std::bind(SecondMaleUFormAnimatePluralCondition, std::placeholders::_1); + DeclentionConditionMap[{SECOND_MALE_UFORM_INANIMATE, NC_SINGULAR}] = std::bind(SecondMaleUFormInanimateSingularCondition, std::placeholders::_1); + DeclentionConditionMap[{SECOND_MALE_UFORM_INANIMATE, NC_PLURAL}] = std::bind(SecondMaleUFormInanimatePluralCondition, std::placeholders::_1); + DeclentionConditionMap[{SECOND_MALE_UFORM_ANIMATE, NC_SINGULAR}] = std::bind(SecondMaleUFormAnimateSingularCondition, std::placeholders::_1); + DeclentionConditionMap[{SECOND_MALE_UFORM_ANIMATE, NC_PLURAL}] = std::bind(SecondMaleUFormAnimatePluralCondition, std::placeholders::_1); - DeclentionConditionMap[SECOND_MALE_SSFORM_INANIMATE_SINGULAR] = std::bind(SecondMaleSSFormInanimateSingularCondition, std::placeholders::_1); - DeclentionConditionMap[SECOND_MALE_SSFORM_INANIMATE_PLURAL] = std::bind(SecondMaleSSFormInanimatePluralCondition, std::placeholders::_1); - DeclentionConditionMap[SECOND_MALE_SSFORM_ANIMATE_SINGULAR] = std::bind(SecondMaleSSFormAnimateSingularCondition, std::placeholders::_1); - DeclentionConditionMap[SECOND_MALE_SSFORM_ANIMATE_PLURAL] = std::bind(SecondMaleSSFormAnimatePluralCondition, std::placeholders::_1); + DeclentionConditionMap[{SECOND_MALE_SSFORM_INANIMATE, NC_SINGULAR}] = std::bind(SecondMaleSSFormInanimateSingularCondition, std::placeholders::_1); + DeclentionConditionMap[{SECOND_MALE_SSFORM_INANIMATE, NC_PLURAL}] = std::bind(SecondMaleSSFormInanimatePluralCondition, std::placeholders::_1); + DeclentionConditionMap[{SECOND_MALE_SSFORM_ANIMATE, NC_SINGULAR}] = std::bind(SecondMaleSSFormAnimateSingularCondition, std::placeholders::_1); + DeclentionConditionMap[{SECOND_MALE_SSFORM_ANIMATE, NC_PLURAL}] = std::bind(SecondMaleSSFormAnimatePluralCondition, std::placeholders::_1); - DeclentionConditionMap[SECOND_NEUTRAL_E_FORM_SINGULAR] = std::bind(SecondNeutralEFormSingularCondition, std::placeholders::_1); - DeclentionConditionMap[SECOND_NEUTRAL_E_FORM_PLURAL] = std::bind(SecondNeutralEFormPluralCondition, std::placeholders::_1); - DeclentionConditionMap[SECOND_NEUTRAL_O_FORM_SINGULAR] = std::bind(SecondNeutralOFormSingularCondition, std::placeholders::_1); - DeclentionConditionMap[SECOND_NEUTRAL_O_FORM_PLURAL] = std::bind(SecondNeutralOFormPluralCondition, std::placeholders::_1); + DeclentionConditionMap[{SECOND_NEUTRAL_E_FORM, NC_SINGULAR}] = std::bind(SecondNeutralEFormSingularCondition, std::placeholders::_1); + DeclentionConditionMap[{SECOND_NEUTRAL_E_FORM, NC_PLURAL}] = std::bind(SecondNeutralEFormPluralCondition, std::placeholders::_1); + DeclentionConditionMap[{SECOND_NEUTRAL_O_FORM, NC_SINGULAR}] = std::bind(SecondNeutralOFormSingularCondition, std::placeholders::_1); + DeclentionConditionMap[{SECOND_NEUTRAL_O_FORM, NC_PLURAL}] = std::bind(SecondNeutralOFormPluralCondition, std::placeholders::_1); - DeclentionConditionMap[THIRD_FORM_SINGULAR] = std::bind(ThirdFormSingularCondition, std::placeholders::_1); - DeclentionConditionMap[THIRD_FORM_INANIMATE_PLURAL] = std::bind(ThirdFormInanimatePluralCondition, std::placeholders::_1); - DeclentionConditionMap[THIRD_FORM_ANIMATE_PLURAL] = std::bind(ThirdFormAnimatePluralCondition, std::placeholders::_1); + DeclentionConditionMap[{THIRD_FORM_INANIMATE, NC_SINGULAR}] = std::bind(ThirdFormSingularCondition, std::placeholders::_1); + DeclentionConditionMap[{THIRD_FORM_ANIMATE, NC_SINGULAR}] = std::bind(ThirdFormSingularCondition, std::placeholders::_1); + DeclentionConditionMap[{THIRD_FORM_INANIMATE, NC_PLURAL}] = std::bind(ThirdFormInanimatePluralCondition, std::placeholders::_1); + DeclentionConditionMap[{THIRD_FORM_ANIMATE, NC_PLURAL}] = std::bind(ThirdFormAnimatePluralCondition, std::placeholders::_1); } @@ -767,8 +658,16 @@ bool NounFitsDeclention(NounRecord nounRecord, NounTuple nounTuple) { NounDeclencion nounDeclencion = std::get<0>(nounTuple); + NounCount nounCount = std::get<1>(nounTuple); - return DeclentionConditionMap[nounDeclencion](nounRecord); + bool standardDeclention = DeclentionConditionMap[{nounDeclencion, nounCount}](nounRecord); + + if (standardDeclention) + { + return true; + } + + return false; } bool NounScructIsAlreadyInArray(const NounStruct& nounStruct, const std::vector& arr) @@ -784,6 +683,59 @@ bool NounScructIsAlreadyInArray(const NounStruct& nounStruct, const std::vector< return false; } +bool IsDeclencionSecondType(NounDeclencion nounDeclention) +{ + switch (nounDeclention) + { + case SECOND_MALE_IFORM_INANIMATE: + case SECOND_MALE_IFORM_ANIMATE: + case SECOND_MALE_UFORM_INANIMATE: + case SECOND_MALE_UFORM_ANIMATE: + case SECOND_MALE_SSFORM_INANIMATE: + case SECOND_MALE_SSFORM_ANIMATE: + return true; + break; + default: + return false; + break; + } +} + +bool IsDeclencionAnimated(NounDeclencion nounDeclention) +{ + switch (nounDeclention) + { + case FIRST_A_IFORM_ANIMATE: + case FIRST_A_UFORM_ANIMATE: + case FIRST_YA_FORM_ANIMATE: + case SECOND_MALE_IFORM_ANIMATE: + case SECOND_MALE_UFORM_ANIMATE: + case SECOND_MALE_SSFORM_ANIMATE: + case THIRD_FORM_ANIMATE: + return true; + break; + default: + return false; + break; + } +} + +bool StandardTest(NounTuple nounTuple, NounRecord nounRecord) +{ + return NounFitsDeclention(nounRecord, nounTuple); +} + +bool LostVowelOTest(NounTuple nounTuple, NounRecord nounRecord) +{ + return nounRecord.haveStandardMultipleFormWithMissingLastVowel; +} + +bool LostVowelETest(NounTuple nounTuple, NounRecord nounRecord) +{ + return nounRecord.haveStandardMultipleFormWithMissingLastVowel; +} + + std::vector RecognizeNoun(std::wstring noun) { @@ -794,27 +746,91 @@ std::vector RecognizeNoun(std::wstring noun) for (auto nounEndingDivision : nounEndingDivisionArr) { - std::wstring nounBase = nounEndingDivision.first; - std::wstring nounEnding = nounEndingDivision.second; + std::wstring nounBase = nounEndingDivision.base; + std::wstring nounEnding = nounEndingDivision.ending; + NounEndingDivision::DivisionCase dc = nounEndingDivision.divisionCase; + + + if (dc == NounEndingDivision::DC_LOST_VOWEL_O) + { + nounBase.insert(nounBase.begin() + nounBase.size() - 1, L'о'); + } + + if (dc == NounEndingDivision::DC_LOST_VOWEL_E) + { + nounBase[nounBase.size() - 2] = L'е'; + } std::vector possibleTupleArr = GetPossibleNounTupleArr(nounEnding); - //std::vector sureTupleArr; - //Standard check - for (auto nounTuple : possibleTupleArr) + for (NounTuple nounTuple : possibleTupleArr) { - std::wstring nounNominaviteSingular = GetNounNoninativeSingular(nounBase, std::get<0>(nounTuple)); + bool animated = IsDeclencionAnimated(std::get<0>(nounTuple)); + + bool additionalTest = true; + + if (dc == NounEndingDivision::DC_LOST_VOWEL_O) + { + additionalTest = (std::get<1>(nounTuple) == NC_PLURAL) || + ((std::get<0>(nounTuple) != NGC_P1_NOMINATIVE) && + (!(std::get<0>(nounTuple) == NGC_P4_ACCUSATIVE && !animated))); + } + if (dc == NounEndingDivision::DC_LOST_VOWEL_E) + { + additionalTest = (std::get<1>(nounTuple) == NC_PLURAL) || + ((std::get<0>(nounTuple) != NGC_P1_NOMINATIVE) && + (!(std::get<0>(nounTuple) == NGC_P4_ACCUSATIVE && !animated))); + } + + if (!additionalTest) + { + continue; + } + + std::wstring nounNominaviteSingular = GetNounNoninative(nounBase, std::get<0>(nounTuple), NC_SINGULAR); if (NounIsInDictionary(nounNominaviteSingular)) { NounRecord nounRecord = GetNounRecordFromDictionary(nounNominaviteSingular); - if (NounFitsDeclention(nounRecord, nounTuple)) + bool secondAdditionalTest = true; + + if (dc == NounEndingDivision::DC_LOST_VOWEL_O) { - //sureTupleArr.push_back(nounTuple); - result.push_back({ std::get<1>(nounTuple), nounRecord }); + secondAdditionalTest = LostVowelOTest(nounTuple, nounRecord) && StandardTest(nounTuple, nounRecord); + } + else if (dc == NounEndingDivision::DC_LOST_VOWEL_E) + { + secondAdditionalTest = LostVowelETest(nounTuple, nounRecord) && StandardTest(nounTuple, nounRecord); + } + else + { + secondAdditionalTest = (nounRecord.haveStandardMultipleForm || std::get<1>(nounTuple) == NC_SINGULAR) && StandardTest(nounTuple, nounRecord); + } + + + if (secondAdditionalTest) + { + + result.push_back({ std::get<2>(nounTuple), std::get<1>(nounTuple), animated, nounRecord }); + + //Check for additional form + if (IsDeclencionSecondType(std::get<0>(nounTuple))) + { + if (std::get<1>(nounTuple) == NC_SINGULAR && nounRecord.haveAlternativeMultipleFormEnding) + { + //Add additional form! + result.push_back({ NGC_P1_NOMINATIVE, NC_PLURAL, animated, nounRecord }); + + if (nounRecord.canBeInanimate) + { + result.push_back({ NGC_P4_ACCUSATIVE, NC_PLURAL, animated, nounRecord }); + } + } + } + } } } @@ -822,31 +838,45 @@ std::vector RecognizeNoun(std::wstring noun) //Special plural form check for (auto nounTuple : possibleTupleArr) { - if (NounDeclencionIsPlural(std::get<0>(nounTuple))) + if (std::get<1>(nounTuple) == NC_PLURAL) { - std::wstring nounNominavitePlural = GetNounNoninative(nounBase, std::get<0>(nounTuple)); + std::wstring nounNominavitePlural = GetNounNoninative(nounBase, std::get<0>(nounTuple), NC_PLURAL); if (NounSpecialPluralFormIsInDictionary(nounNominavitePlural)) { NounRecord nounRecord = GetNounRecordFromDictionary_BySpecialPluralForm(nounNominavitePlural); - NounStruct ns{ std::get<1>(nounTuple), nounRecord }; - if (!NounScructIsAlreadyInArray(ns, result)) + if (nounRecord.canBeAnimate) { - result.push_back(ns); + NounStruct ns{ std::get<2>(nounTuple), std::get<1>(nounTuple), true, nounRecord }; + + if (!NounScructIsAlreadyInArray(ns, result)) + { + result.push_back(ns); + } + } + + if (nounRecord.canBeInanimate) + { + NounStruct ns{ std::get<2>(nounTuple), std::get<1>(nounTuple), false, nounRecord }; + + if (!NounScructIsAlreadyInArray(ns, result)) + { + result.push_back(ns); + } } } } } - - + + } - + return result; } @@ -859,7 +889,7 @@ NounDeclencion CalculateNounDeclention(NounRecord nounRecord) { if (i.second(nounRecord)) { - return i.first; + return i.first.first; } } @@ -889,9 +919,11 @@ void LoadNounDeclencionCaseTable() std::cout << "File found!" << std::endl; - std::vector> currentGrammaticalCaseMap; + std::vector currentGrammaticalCaseTable; std::wstring currentNounDeclencion; + std::wstring currentNounCount; + getline(f, line); //Skip one line while (getline(f, line)) { @@ -907,22 +939,31 @@ void LoadNounDeclencionCaseTable() } else { - nounDeclencionCaseTable.push_back(NounDeclencionCaseTableRecord{ WStringToNounDeclencion(currentNounDeclencion), currentGrammaticalCaseMap }); + nounDeclencionCaseTable.push_back(NounDeclencionCaseTableRecord{ WStringToNounDeclencion(currentNounDeclencion), currentGrammaticalCaseTable }); currentNounDeclencion = string_to_wstring(lineArr[0]); - currentGrammaticalCaseMap.clear(); + currentGrammaticalCaseTable.clear(); } } - currentGrammaticalCaseMap.push_back({ WStringToNounGrammaticalCase(string_to_wstring(lineArr[1])), string_to_wstring(lineArr[2]) }); + if (lineArr[1] != "") + { + currentNounCount = string_to_wstring(lineArr[1]); + } + + currentGrammaticalCaseTable.push_back({ + WStringToNounCount(currentNounCount), + WStringToNounGrammaticalCase(string_to_wstring(lineArr[2])), + string_to_wstring(lineArr[3]) + }); } //Add last one if (currentNounDeclencion != L"") { - nounDeclencionCaseTable.push_back(NounDeclencionCaseTableRecord{ WStringToNounDeclencion(currentNounDeclencion), currentGrammaticalCaseMap }); + nounDeclencionCaseTable.push_back(NounDeclencionCaseTableRecord{ WStringToNounDeclencion(currentNounDeclencion), currentGrammaticalCaseTable }); } f.close(); @@ -938,7 +979,7 @@ void LoadNounDeclencionCaseTable() void LoadFrequentWordSet() { - + #ifdef _WIN32 std::ifstream f("C:/Workplace/ChineseJournal/rudict/frequent_nouns_2000.csv"); @@ -951,6 +992,9 @@ void LoadFrequentWordSet() if (f.is_open()) { + + getline(f, line); //Skip one line + std::cout << "File found!" << std::endl; while (getline(f, line)) { diff --git a/rudict/rudict/noun.h b/rudict/rudict/noun.h index 972307f..399e82c 100644 --- a/rudict/rudict/noun.h +++ b/rudict/rudict/noun.h @@ -27,6 +27,9 @@ struct NounRecord bool haveStandardMultipleForm; bool haveStandardMultipleFormWithMissingLastVowel; + bool haveStandardMultipleFormEnding; + bool haveAlternativeMultipleFormEnding; + std::wstring specialMultipleForm; bool canBeAnimate; @@ -38,34 +41,22 @@ struct NounRecord enum NounDeclencion { - FIRST_A_IFORM_SINGULAR = 0, - FIRST_A_IFORM_INANIMATE_PLURAL, - FIRST_A_IFORM_ANIMATE_PLURAL, - FIRST_A_UFORM_SINGULAR, - FIRST_A_UFORM_INANIMATE_PLURAL, - FIRST_A_UFORM_ANIMATE_PLURAL, - FIRST_YA_FORM_SINGULAR, - FIRST_YA_FORM_INANIMATE_PLURAL, - FIRST_YA_FORM_ANIMATE_PLURAL, - SECOND_MALE_IFORM_INANIMATE_SINGULAR, - SECOND_MALE_IFORM_INANIMATE_PLURAL, - SECOND_MALE_IFORM_ANIMATE_SINGULAR, - SECOND_MALE_IFORM_ANIMATE_PLURAL, - SECOND_MALE_UFORM_INANIMATE_SINGULAR, - SECOND_MALE_UFORM_INANIMATE_PLURAL, - SECOND_MALE_UFORM_ANIMATE_SINGULAR, - SECOND_MALE_UFORM_ANIMATE_PLURAL, - SECOND_MALE_SSFORM_INANIMATE_SINGULAR, - SECOND_MALE_SSFORM_INANIMATE_PLURAL, - SECOND_MALE_SSFORM_ANIMATE_SINGULAR, - SECOND_MALE_SSFORM_ANIMATE_PLURAL, - SECOND_NEUTRAL_E_FORM_SINGULAR, - SECOND_NEUTRAL_E_FORM_PLURAL, - SECOND_NEUTRAL_O_FORM_SINGULAR, - SECOND_NEUTRAL_O_FORM_PLURAL, - THIRD_FORM_SINGULAR, - THIRD_FORM_INANIMATE_PLURAL, - THIRD_FORM_ANIMATE_PLURAL + FIRST_A_IFORM_INANIMATE = 0, + FIRST_A_IFORM_ANIMATE, + FIRST_A_UFORM_INANIMATE, + FIRST_A_UFORM_ANIMATE, + FIRST_YA_FORM_INANIMATE, + FIRST_YA_FORM_ANIMATE, + SECOND_MALE_IFORM_INANIMATE, + SECOND_MALE_IFORM_ANIMATE, + SECOND_MALE_UFORM_INANIMATE, + SECOND_MALE_UFORM_ANIMATE, + SECOND_MALE_SSFORM_INANIMATE, + SECOND_MALE_SSFORM_ANIMATE, + SECOND_NEUTRAL_E_FORM, + SECOND_NEUTRAL_O_FORM, + THIRD_FORM_INANIMATE, + THIRD_FORM_ANIMATE, }; enum NounGrammaticalCase @@ -75,31 +66,88 @@ enum NounGrammaticalCase NGC_P3_DATIVE, NGC_P4_ACCUSATIVE, NGC_P5_INSTRUMENTAL, - NGC_P6_PREPOSITIONAL + NGC_P6_PREPOSITIONAL, + NGC_SIZE +}; + +enum NounCount +{ + NC_SINGULAR = 0, + NC_PLURAL, + NC_SIZE +}; + +struct GrammaticalTableRecord +{ + NounCount count; + + NounGrammaticalCase grammaticalCase; + + std::wstring ending; }; struct NounDeclencionCaseTableRecord { NounDeclencion nounDeclencion; - std::vector> grammaticalCaseMap; - + std::vector grammaticalCaseTable; }; + + extern std::vector NounRecordArr; extern std::vector nounDeclencionCaseTable; NounDeclencion WStringToNounDeclencion(std::wstring str); +std::wstring NounCountToWString(NounCount nounCount); +NounCount WStringToNounCount(std::wstring str); std::wstring NounGrammaticalCaseToWString(NounGrammaticalCase nounGrammaticalCase); NounGrammaticalCase WStringToNounGrammaticalCase(std::wstring str); + //std::wstring NounNumberToWString(NounNumber nounNumber); -typedef std::tuple NounTuple; +typedef std::tuple< + NounDeclencion, + NounCount, + NounGrammaticalCase +> NounTuple; typedef std::set StringSet; +struct NounEndingDivision +{ + std::wstring base; + std::wstring ending; + + enum DivisionCase + { + DC_COMMON = 0, + DC_LOST_VOWEL_O, + DC_LOST_VOWEL_E, + } divisionCase; + + bool operator<(const NounEndingDivision& other) const + { + if (base != other.base) + { + return base < other.base; + } + else + { + if (ending != other.ending) + { + return ending < other.ending; + } + else + { + return divisionCase < other.divisionCase; + } + } + } +}; + std::vector GetAllNounEndingArr(); bool NounIsInDictionary(std::wstring nounNominative); @@ -117,28 +165,26 @@ bool charIsVowel(wchar_t c); struct NounStruct { NounGrammaticalCase nounGrammaticalCase; + NounCount nounCount; + bool animated; NounRecord nounRecord; }; -std::set> getPossibleNounEndingDivisionSet(std::wstring noun); +std::set getPossibleNounEndingDivisionSet(std::wstring noun); std::vector GetPossibleNounTupleArr(std::wstring nounEnding); -bool NounDeclencionIsPlural(NounDeclencion nounDeclencion); - -NounDeclencion ConvertToSingularIfNeeded(NounDeclencion nounDeclencion); - -std::wstring GetNounNoninativeSingular(std::wstring nounBase, NounDeclencion nounDeclencion); - -std::wstring GetNounNoninativePlural(std::wstring nounBase, NounDeclencion nounDeclencion); - -std::wstring GetNounNoninative(std::wstring nounBase, NounDeclencion nounDeclencion); +std::wstring GetNounNoninative(std::wstring nounBase, NounDeclencion nounDeclencion, NounCount nounCount); void SetupDeclentionMap(); bool NounFitsDeclention(NounRecord nounRecord, NounTuple nounTuple); +bool IsDeclencionSecondType(NounDeclencion nounDeclention); +bool IsDeclencionAnimated(NounDeclencion nounDeclention); + + std::vector RecognizeNoun(std::wstring noun); NounDeclencion CalculateNounDeclention(NounRecord nounRecord);