diff --git a/rudict/frequent_nouns_2000.csv b/rudict/frequent_nouns_2000.csv new file mode 100644 index 0000000..970e226 --- /dev/null +++ b/rudict/frequent_nouns_2000.csv @@ -0,0 +1,836 @@ +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 diff --git a/rudict/frequent_nouns_2000.xlsx b/rudict/frequent_nouns_2000.xlsx new file mode 100644 index 0000000..86459d5 Binary files /dev/null and b/rudict/frequent_nouns_2000.xlsx differ diff --git a/rudict/frequent_words.xlsx b/rudict/frequent_words.xlsx new file mode 100644 index 0000000..012068c Binary files /dev/null and b/rudict/frequent_words.xlsx differ diff --git a/rudict/grammar_case.csv b/rudict/grammar_case.csv new file mode 100644 index 0000000..4475705 --- /dev/null +++ b/rudict/grammar_case.csv @@ -0,0 +1,168 @@ +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;ях;говорю о лошадях diff --git a/rudict/grammar_case.xlsx b/rudict/grammar_case.xlsx new file mode 100644 index 0000000..e593bd0 Binary files /dev/null and b/rudict/grammar_case.xlsx differ diff --git a/rudict/rudict/http/request_handler.cpp b/rudict/rudict/http/request_handler.cpp index 74a9b43..adda1e4 100644 --- a/rudict/rudict/http/request_handler.cpp +++ b/rudict/rudict/http/request_handler.cpp @@ -158,15 +158,32 @@ namespace http { boost::property_tree::wptree nounTree; nounTree.put(L"id", id); - nounTree.put(L"declencion", NounDeclencionToWString(std::get<0>(nounStruct.nounTuple))); - nounTree.put(L"grammaticalCase", NounGrammaticalCaseToWString(std::get<1>(nounStruct.nounTuple))); - nounTree.put(L"number", NounNumberToWString(std::get<2>(nounStruct.nounTuple))); - - - nounTree.put(L"nominative", nounStruct.noun); - - std::cout <<"nominative" << std::endl; + nounTree.put(L"grammaticalCase", NounGrammaticalCaseToWString(nounStruct.nounGrammaticalCase)); + nounTree.put(L"canBeAnimate", nounStruct.nounRecord.canBeAnimate); + nounTree.put(L"canBeInanimate", nounStruct.nounRecord.canBeInanimate); + nounTree.put(L"gender", nounStruct.nounRecord.gender); + nounTree.put(L"haveMultipleForm", nounStruct.nounRecord.haveMultipleForm); + nounTree.put(L"haveSingleForm", nounStruct.nounRecord.haveSingleForm); + nounTree.put(L"haveStandardMultipleForm", nounStruct.nounRecord.haveStandardMultipleForm); + nounTree.put(L"haveStandardMultipleFormWithMissingLastVowel", nounStruct.nounRecord.haveStandardMultipleFormWithMissingLastVowel); + nounTree.put(L"specialMultipleForm", nounStruct.nounRecord.specialMultipleForm); + + nounTree.put(L"nominativeSingularForm", nounStruct.nounRecord.nominativeForm); + + /* + if (nounStruct.nounRecord.haveMultipleForm) + { + if (nounStruct.nounRecord.specialMultipleForm != L"") + { + nounTree.put(L"nominativeSingularForm", nounStruct.nounRecord.nominativeForm); + } + else + { + nounTree.put(L"nominativeSingularForm", CalculateNounDeclention(nounStruct.nounRecord)); + } + }*/ + nounArr.push_back(std::make_pair(L"", nounTree)); id++; diff --git a/rudict/rudict/main.cpp b/rudict/rudict/main.cpp index 86601c1..6e0b67b 100644 --- a/rudict/rudict/main.cpp +++ b/rudict/rudict/main.cpp @@ -1,15 +1,19 @@ -#include -#include - +#include +#include + #include "boost/asio.hpp" -#include "http/server.hpp" - -#include "noun.h" - -int main() -{ - LoadFrequentWordSet(); - +#include "http/server.hpp" + +#include "noun.h" + +int main() +{ + SetupDeclentionMap(); + LoadNounDeclencionCaseTable(); + LoadFrequentWordSet(); + + RecognizeNoun(L"стульями"); + try { @@ -22,21 +26,21 @@ int main() catch (std::exception& e) { std::cerr << "exception: " << e.what() << "\n"; - } - - /* - std::wstring s(L"уродам"); - - std::vector recognizedResultArr = RecognizeNoun(s); - - for (auto& i : recognizedResultArr) - { - std::wcout << i.noun << L"\n"; - }*/ - - - - system("pause"); - - return 0; + } + + /* + std::wstring s(L"уродам"); + + std::vector recognizedResultArr = RecognizeNoun(s); + + for (auto& i : recognizedResultArr) + { + std::wcout << i.noun << L"\n"; + }*/ + + + + system("pause"); + + return 0; } \ No newline at end of file diff --git a/rudict/rudict/noun.cpp b/rudict/rudict/noun.cpp index 2e616da..b6a2bd4 100644 --- a/rudict/rudict/noun.cpp +++ b/rudict/rudict/noun.cpp @@ -4,21 +4,184 @@ #include "utf8utf16.h" +#include "boost/regex.hpp" +#include "boost/algorithm/string/regex.hpp" -std::wstring NounDeclencionToWString(NounDeclencion nounDeclencion) + +std::vector NounRecordArr; + +std::vector nounDeclencionCaseTable; + +NounRecord::NounRecord() + : gender(NG_MALE) + , haveSingleForm(false) + , haveMultipleForm(false) + , haveStandardMultipleForm(false) + , haveStandardMultipleFormWithMissingLastVowel(false) + , canBeAnimate(false) + , canBeInanimate(false) { - switch (nounDeclencion) + +} + + +NounRecord::NounRecord(std::wstring line) +{ + std::vector lineArr; + + boost::split_regex(lineArr, line, boost::wregex(L";")); + + nominativeForm = lineArr[1]; + + if (lineArr[2] == L"м") { - case ND_1_HARD: return L"First declencion (hard type), female"; - case ND_1_SOFT: return L"First declencion (soft type), female"; - case ND_2_HARD_MALE: return L"Second declencion (hard type), male"; - case ND_2_SOFT_MALE: return L"Second declencion (soft type), male"; - case ND_2_NEUTER_O: return L"Second declencion, E-ending, neuter"; - case ND_2_NEUTER_E: return L"Second declencion, O-ending, neuter"; - case ND_3: return L"Third declencion, female"; + gender = NG_MALE; + } + else if (lineArr[2] == L"ж") + { + gender = NG_FEMALE; + } + else + { + gender = NG_NEUTRAL; } - return L""; + haveSingleForm = lineArr[3] == L"1" ? true : false; + haveMultipleForm = lineArr[4] == L"1" ? true : false; + + haveStandardMultipleForm = lineArr[5] == L"1" ? true : false; + + haveStandardMultipleFormWithMissingLastVowel = lineArr[6] == L"1" ? true : false; + + + specialMultipleForm = lineArr[7]; + + canBeAnimate = lineArr[8] == L"1" ? true : false; + canBeInanimate = lineArr[9] == L"1" ? true : false; + + +} + + +NounDeclencion WStringToNounDeclencion(std::wstring str) +{ + + if (str == L"FIRST_A_IFORM_SINGULAR") + { + return FIRST_A_IFORM_SINGULAR; + } + if (str == L"FIRST_A_IFORM_INANIMATE_PLURAL") + { + return FIRST_A_IFORM_INANIMATE_PLURAL; + } + if (str == L"FIRST_A_IFORM_ANIMATE_PLURAL") + { + return FIRST_A_IFORM_ANIMATE_PLURAL; + } + if (str == L"FIRST_A_UFORM_SINGULAR") + { + return FIRST_A_UFORM_SINGULAR; + } + if (str == L"FIRST_A_UFORM_INANIMATE_PLURAL") + { + return FIRST_A_UFORM_INANIMATE_PLURAL; + } + if (str == L"FIRST_A_UFORM_ANIMATE_PLURAL") + { + return FIRST_A_UFORM_ANIMATE_PLURAL; + } + if (str == L"FIRST_YA_FORM_SINGULAR") + { + return FIRST_YA_FORM_SINGULAR; + } + if (str == L"FIRST_YA_FORM_INANIMATE_PLURAL") + { + return FIRST_YA_FORM_INANIMATE_PLURAL; + } + if (str == L"FIRST_YA_FORM_ANIMATE_PLURAL") + { + return FIRST_YA_FORM_ANIMATE_PLURAL; + } + if (str == L"SECOND_MALE_IFORM_INANIMATE_SINGULAR") + { + return SECOND_MALE_IFORM_INANIMATE_SINGULAR; + } + if (str == L"SECOND_MALE_IFORM_INANIMATE_PLURAL") + { + return SECOND_MALE_IFORM_INANIMATE_PLURAL; + } + if (str == L"SECOND_MALE_IFORM_ANIMATE_SINGULAR") + { + return SECOND_MALE_IFORM_ANIMATE_SINGULAR; + } + if (str == L"SECOND_MALE_IFORM_ANIMATE_PLURAL") + { + return SECOND_MALE_IFORM_ANIMATE_PLURAL; + } + if (str == L"SECOND_MALE_UFORM_INANIMATE_SINGULAR") + { + return SECOND_MALE_UFORM_INANIMATE_SINGULAR; + } + if (str == L"SECOND_MALE_UFORM_INANIMATE_PLURAL") + { + return SECOND_MALE_UFORM_INANIMATE_PLURAL; + } + if (str == L"SECOND_MALE_UFORM_ANIMATE_SINGULAR") + { + return SECOND_MALE_UFORM_ANIMATE_SINGULAR; + } + if (str == L"SECOND_MALE_UFORM_ANIMATE_PLURAL") + { + return SECOND_MALE_UFORM_ANIMATE_PLURAL; + } + if (str == L"SECOND_MALE_SSFORM_INANIMATE_SINGULAR") + { + return SECOND_MALE_SSFORM_INANIMATE_SINGULAR; + } + if (str == L"SECOND_MALE_SSFORM_INANIMATE_PLURAL") + { + return SECOND_MALE_SSFORM_INANIMATE_PLURAL; + } + if (str == L"SECOND_MALE_SSFORM_ANIMATE_SINGULAR") + { + return SECOND_MALE_SSFORM_ANIMATE_SINGULAR; + } + if (str == L"SECOND_MALE_SSFORM_ANIMATE_PLURAL") + { + return SECOND_MALE_SSFORM_ANIMATE_PLURAL; + } + if (str == L"SECOND_NEUTRAL_E_FORM_SINGULAR") + { + return SECOND_NEUTRAL_E_FORM_SINGULAR; + } + if (str == L"SECOND_NEUTRAL_E_FORM_PLURAL") + { + return SECOND_NEUTRAL_E_FORM_PLURAL; + } + if (str == L"SECOND_NEUTRAL_O_FORM_SINGULAR") + { + return SECOND_NEUTRAL_O_FORM_SINGULAR; + } + if (str == L"SECOND_NEUTRAL_O_FORM_PLURAL") + { + return SECOND_NEUTRAL_O_FORM_PLURAL; + } + if (str == L"THIRD_FORM_SINGULAR") + { + return THIRD_FORM_SINGULAR; + } + if (str == L"THIRD_FORM_INANIMATE_PLURAL") + { + return THIRD_FORM_INANIMATE_PLURAL; + } + if (str == L"THIRD_FORM_ANIMATE_PLURAL") + { + return THIRD_FORM_ANIMATE_PLURAL; + } + + std::cout << "Error in WStringToNounDeclencion!" << std::endl; + return FIRST_A_IFORM_SINGULAR; + } @@ -26,30 +189,49 @@ std::wstring NounGrammaticalCaseToWString(NounGrammaticalCase nounGrammaticalCas { switch (nounGrammaticalCase) { - case NGC_P1_NOMINATIVE: return L"Nominative case"; - case NGC_P2_GENITIVE: return L"Genitive case"; - case NGC_P3_DATIVE: return L"Dative case"; - case NGC_P4_ACCUSATIVE: return L"Accusative case"; - case NGC_P5_INSTRUMENTAL: return L"Instrumental case"; - case NGC_P6_PREPOSITIONAL: return L"Prepositional case"; + case NGC_P1_NOMINATIVE: return L"NGC_P1_NOMINATIVE"; + case NGC_P2_GENITIVE: return L"NGC_P2_GENITIVE"; + case NGC_P3_DATIVE: return L"NGC_P3_DATIVE"; + case NGC_P4_ACCUSATIVE: return L"NGC_P4_ACCUSATIVE"; + case NGC_P5_INSTRUMENTAL: return L"NGC_P5_INSTRUMENTAL"; + case NGC_P6_PREPOSITIONAL: return L"NGC_P6_PREPOSITIONAL"; } return L""; } -std::wstring NounNumberToWString(NounNumber nounNumber) +NounGrammaticalCase WStringToNounGrammaticalCase(std::wstring str) { - switch (nounNumber) + + if (str == L"NGC_P1_NOMINATIVE") { - case NPF_SINGULAR: return L"Singular form"; - case NPF_PLURAL: return L"Plural form"; + return NGC_P1_NOMINATIVE; + } + if (str == L"NGC_P2_GENITIVE") + { + return NGC_P2_GENITIVE; + } + if (str == L"NGC_P3_DATIVE") + { + return NGC_P3_DATIVE; + } + if (str == L"NGC_P4_ACCUSATIVE") + { + return NGC_P4_ACCUSATIVE; + } + if (str == L"NGC_P5_INSTRUMENTAL") + { + return NGC_P5_INSTRUMENTAL; + } + if (str == L"NGC_P6_PREPOSITIONAL") + { + return NGC_P6_PREPOSITIONAL; } - return L""; + std::cout << "Error in WStringToNounGrammaticalCase!" << std::endl; + return NGC_P1_NOMINATIVE; } -std::set frequentWordSet; - std::vector GetAllNounEndingArr() { std::vector result @@ -82,161 +264,62 @@ std::vector GetAllNounEndingArr() return result; } -std::map getNounEndingTable() -{ - std::map result; - - //Singular - result[NounTuple{ ND_1_SOFT, NGC_P1_NOMINATIVE, NPF_SINGULAR }] = StringSet{ L"а" }; - result[NounTuple{ ND_1_SOFT, NGC_P2_GENITIVE, NPF_SINGULAR }] = StringSet{L"и"}; - result[NounTuple{ ND_1_SOFT, NGC_P3_DATIVE, NPF_SINGULAR }] = StringSet{L"е"}; - result[NounTuple{ ND_1_SOFT, NGC_P4_ACCUSATIVE, NPF_SINGULAR }] = StringSet{L"у"}; - result[NounTuple{ ND_1_SOFT, NGC_P5_INSTRUMENTAL, NPF_SINGULAR }] = StringSet{ L"ой", L"ою" }; - result[NounTuple{ ND_1_SOFT, NGC_P6_PREPOSITIONAL, NPF_SINGULAR }] = StringSet{L"е"}; - - result[NounTuple{ ND_1_HARD, NGC_P1_NOMINATIVE, NPF_SINGULAR }] = StringSet{L"а"}; - result[NounTuple{ ND_1_HARD, NGC_P2_GENITIVE, NPF_SINGULAR }] = StringSet{L"ы"}; - result[NounTuple{ ND_1_HARD, NGC_P3_DATIVE, NPF_SINGULAR }] = StringSet{L"е"}; - result[NounTuple{ ND_1_HARD, NGC_P4_ACCUSATIVE, NPF_SINGULAR }] = StringSet{L"у"}; - result[NounTuple{ ND_1_HARD, NGC_P5_INSTRUMENTAL, NPF_SINGULAR }] = StringSet{ L"ой", L"ою", L"ей", L"ею" }; - result[NounTuple{ ND_1_HARD, NGC_P6_PREPOSITIONAL, NPF_SINGULAR }] = StringSet{L"е"}; - - - result[NounTuple{ ND_2_HARD_MALE, NGC_P1_NOMINATIVE, NPF_SINGULAR }] = StringSet{L""}; - result[NounTuple{ ND_2_HARD_MALE, NGC_P2_GENITIVE, NPF_SINGULAR }] = StringSet{L"а"}; - result[NounTuple{ ND_2_HARD_MALE, NGC_P3_DATIVE, NPF_SINGULAR }] = StringSet{L"у"}; - result[NounTuple{ ND_2_HARD_MALE, NGC_P4_ACCUSATIVE, NPF_SINGULAR }] = StringSet{L""}; - result[NounTuple{ ND_2_HARD_MALE, NGC_P5_INSTRUMENTAL, NPF_SINGULAR }] = StringSet{L"ом"}; - result[NounTuple{ ND_2_HARD_MALE, NGC_P6_PREPOSITIONAL, NPF_SINGULAR }] = StringSet{L"е"}; - - result[NounTuple{ ND_2_SOFT_MALE, NGC_P1_NOMINATIVE, NPF_SINGULAR }] = StringSet{L"ь"}; - result[NounTuple{ ND_2_SOFT_MALE, NGC_P2_GENITIVE, NPF_SINGULAR }] = StringSet{L"я"}; - result[NounTuple{ ND_2_SOFT_MALE, NGC_P3_DATIVE, NPF_SINGULAR }] = StringSet{L"ю"}; - result[NounTuple{ ND_2_SOFT_MALE, NGC_P4_ACCUSATIVE, NPF_SINGULAR }] = StringSet{L"ь"}; - result[NounTuple{ ND_2_SOFT_MALE, NGC_P5_INSTRUMENTAL, NPF_SINGULAR }] = StringSet{L"ем"}; - result[NounTuple{ ND_2_SOFT_MALE, NGC_P6_PREPOSITIONAL, NPF_SINGULAR }] = StringSet{L"е"}; - - - result[NounTuple{ ND_2_NEUTER_O, NGC_P1_NOMINATIVE, NPF_SINGULAR }] = StringSet{L"о"}; - result[NounTuple{ ND_2_NEUTER_O, NGC_P2_GENITIVE, NPF_SINGULAR }] = StringSet{L"а"}; - result[NounTuple{ ND_2_NEUTER_O, NGC_P3_DATIVE, NPF_SINGULAR }] = StringSet{L"у"}; - result[NounTuple{ ND_2_NEUTER_O, NGC_P4_ACCUSATIVE, NPF_SINGULAR }] = StringSet{L"о"}; - result[NounTuple{ ND_2_NEUTER_O, NGC_P5_INSTRUMENTAL, NPF_SINGULAR }] = StringSet{L"ом"}; - result[NounTuple{ ND_2_NEUTER_O, NGC_P6_PREPOSITIONAL, NPF_SINGULAR }] = StringSet{L"е"}; - - result[NounTuple{ ND_2_NEUTER_E, NGC_P1_NOMINATIVE, NPF_SINGULAR }] = StringSet{L"е"}; - result[NounTuple{ ND_2_NEUTER_E, NGC_P2_GENITIVE, NPF_SINGULAR }] = StringSet{L"я"}; - result[NounTuple{ ND_2_NEUTER_E, NGC_P3_DATIVE, NPF_SINGULAR }] = StringSet{L"ю"}; - result[NounTuple{ ND_2_NEUTER_E, NGC_P4_ACCUSATIVE, NPF_SINGULAR }] = StringSet{L"е"}; - result[NounTuple{ ND_2_NEUTER_E, NGC_P5_INSTRUMENTAL, NPF_SINGULAR }] = StringSet{L"ем"}; - result[NounTuple{ ND_2_NEUTER_E, NGC_P6_PREPOSITIONAL, NPF_SINGULAR }] = StringSet{L"е"}; - - result[NounTuple{ ND_3, NGC_P1_NOMINATIVE, NPF_SINGULAR }] = StringSet{L"ь"}; - result[NounTuple{ ND_3, NGC_P2_GENITIVE, NPF_SINGULAR }] = StringSet{L"и"}; - result[NounTuple{ ND_3, NGC_P3_DATIVE, NPF_SINGULAR }] = StringSet{L"и"}; - result[NounTuple{ ND_3, NGC_P4_ACCUSATIVE, NPF_SINGULAR }] = StringSet{L"ь"}; - result[NounTuple{ ND_3, NGC_P5_INSTRUMENTAL, NPF_SINGULAR }] = StringSet{L"ью"}; - result[NounTuple{ ND_3, NGC_P6_PREPOSITIONAL, NPF_SINGULAR }] = StringSet{L"и"}; - - //Plural - result[NounTuple{ ND_1_SOFT, NGC_P1_NOMINATIVE, NPF_PLURAL }] = StringSet{L"и"}; - result[NounTuple{ ND_1_SOFT, NGC_P2_GENITIVE, NPF_PLURAL }] = StringSet{L""}; //Xperimental -- need special modificator for suffix - result[NounTuple{ ND_1_SOFT, NGC_P3_DATIVE, NPF_PLURAL }] = StringSet{L"ам"}; - result[NounTuple{ ND_1_SOFT, NGC_P4_ACCUSATIVE, NPF_PLURAL }] = StringSet{L"и"}; - result[NounTuple{ ND_1_SOFT, NGC_P5_INSTRUMENTAL, NPF_PLURAL }] = StringSet{L"ами"}; - result[NounTuple{ ND_1_SOFT, NGC_P6_PREPOSITIONAL, NPF_PLURAL }] = StringSet{L"ах"}; - - result[NounTuple{ ND_1_HARD, NGC_P1_NOMINATIVE, NPF_PLURAL }] = StringSet{L"и"}; - result[NounTuple{ ND_1_HARD, NGC_P2_GENITIVE, NPF_PLURAL }] = StringSet{L""}; - result[NounTuple{ ND_1_HARD, NGC_P3_DATIVE, NPF_PLURAL }] = StringSet{L"ам"}; - result[NounTuple{ ND_1_HARD, NGC_P4_ACCUSATIVE, NPF_PLURAL }] = StringSet{L""}; - result[NounTuple{ ND_1_HARD, NGC_P5_INSTRUMENTAL, NPF_PLURAL }] = StringSet{L"ами"}; - result[NounTuple{ ND_1_HARD, NGC_P6_PREPOSITIONAL, NPF_PLURAL }] = StringSet{L"ах"}; - - - result[NounTuple{ ND_2_HARD_MALE, NGC_P1_NOMINATIVE, NPF_PLURAL }] = StringSet{L"ы"}; - result[NounTuple{ ND_2_HARD_MALE, NGC_P2_GENITIVE, NPF_PLURAL }] = StringSet{L"ов"}; - result[NounTuple{ ND_2_HARD_MALE, NGC_P3_DATIVE, NPF_PLURAL }] = StringSet{L"ам"}; - result[NounTuple{ ND_2_HARD_MALE, NGC_P4_ACCUSATIVE, NPF_PLURAL }] = StringSet{L"ы"}; - result[NounTuple{ ND_2_HARD_MALE, NGC_P5_INSTRUMENTAL, NPF_PLURAL }] = StringSet{L"ами"}; - result[NounTuple{ ND_2_HARD_MALE, NGC_P6_PREPOSITIONAL, NPF_PLURAL }] = StringSet{L"ах"}; - - result[NounTuple{ ND_2_SOFT_MALE, NGC_P1_NOMINATIVE, NPF_PLURAL }] = StringSet{L"и"}; - result[NounTuple{ ND_2_SOFT_MALE, NGC_P2_GENITIVE, NPF_PLURAL }] = StringSet{L"ей"}; - result[NounTuple{ ND_2_SOFT_MALE, NGC_P3_DATIVE, NPF_PLURAL }] = StringSet{L"ям"}; - result[NounTuple{ ND_2_SOFT_MALE, NGC_P4_ACCUSATIVE, NPF_PLURAL }] = StringSet{L"и"}; - result[NounTuple{ ND_2_SOFT_MALE, NGC_P5_INSTRUMENTAL, NPF_PLURAL }] = StringSet{L"и"}; - result[NounTuple{ ND_2_SOFT_MALE, NGC_P6_PREPOSITIONAL, NPF_PLURAL }] = StringSet{L"ях"}; - - result[NounTuple{ ND_2_NEUTER_O, NGC_P1_NOMINATIVE, NPF_PLURAL }] = StringSet{L"а"}; - result[NounTuple{ ND_2_NEUTER_O, NGC_P2_GENITIVE, NPF_PLURAL }] = StringSet{L""}; - result[NounTuple{ ND_2_NEUTER_O, NGC_P3_DATIVE, NPF_PLURAL }] = StringSet{L"ам"}; - result[NounTuple{ ND_2_NEUTER_O, NGC_P4_ACCUSATIVE, NPF_PLURAL }] = StringSet{L"а"}; - result[NounTuple{ ND_2_NEUTER_O, NGC_P5_INSTRUMENTAL, NPF_PLURAL }] = StringSet{L"ами"}; - result[NounTuple{ ND_2_NEUTER_O, NGC_P6_PREPOSITIONAL, NPF_PLURAL }] = StringSet{L"ах"}; - - result[NounTuple{ ND_2_NEUTER_E, NGC_P1_NOMINATIVE, NPF_PLURAL }] = StringSet{L"я"}; - result[NounTuple{ ND_2_NEUTER_E, NGC_P2_GENITIVE, NPF_PLURAL }] = StringSet{L"ей"}; - result[NounTuple{ ND_2_NEUTER_E, NGC_P3_DATIVE, NPF_PLURAL }] = StringSet{L"ям"}; - result[NounTuple{ ND_2_NEUTER_E, NGC_P4_ACCUSATIVE, NPF_PLURAL }] = StringSet{L"я"}; - result[NounTuple{ ND_2_NEUTER_E, NGC_P5_INSTRUMENTAL, NPF_PLURAL }] = StringSet{L"ями"}; - result[NounTuple{ ND_2_NEUTER_E, NGC_P6_PREPOSITIONAL, NPF_PLURAL }] = StringSet{L"ях"}; - - result[NounTuple{ ND_3, NGC_P1_NOMINATIVE, NPF_PLURAL }] = StringSet{L"и"}; - result[NounTuple{ ND_3, NGC_P2_GENITIVE, NPF_PLURAL }] = StringSet{L"ей"}; - result[NounTuple{ ND_3, NGC_P3_DATIVE, NPF_PLURAL }] = StringSet{L"ям"}; - result[NounTuple{ ND_3, NGC_P4_ACCUSATIVE, NPF_PLURAL }] = StringSet{L"и"}; - result[NounTuple{ ND_3, NGC_P5_INSTRUMENTAL, NPF_PLURAL }] = StringSet{L"ями"}; - result[NounTuple{ ND_3, NGC_P6_PREPOSITIONAL, NPF_PLURAL }] = StringSet{L"ях"}; - - return result; -} - bool NounIsInDictionary(std::wstring nounNominative) { - - if (frequentWordSet.count(nounNominative) != 0) + for (auto& noun : NounRecordArr) { - - return true; + if (noun.nominativeForm == nounNominative) + { + return true; + } } + + return false; + +} + +bool NounSpecialPluralFormIsInDictionary(std::wstring nounNominativePlural) +{ + for (auto& noun : NounRecordArr) + { + if (noun.specialMultipleForm == nounNominativePlural) + { + return true; + } + } + return false; } - -std::set GetPossibleNounDeclencionSet(std::wstring nounNominative) +NounRecord GetNounRecordFromDictionary(std::wstring nounNominative) { - - if (nounNominative.size() <= 1) + for (auto& noun : NounRecordArr) { - //Xperimental -- need to say that word is too short! - return{}; + if (noun.nominativeForm == nounNominative) + { + return noun; + } } + return{}; - wchar_t lastChar = nounNominative[nounNominative.size()-1]; - wchar_t prevLastChar = nounNominative[nounNominative.size() - 2]; - - if (lastChar == L'а') - { - return{ ND_1_HARD, ND_1_SOFT }; - } - if (lastChar == L'о') - { - return{ ND_2_NEUTER_O }; - } - if (lastChar == L'е') - { - return{ ND_2_NEUTER_E }; - } - if (lastChar == L'ь') - { - return{ ND_2_SOFT_MALE }; - } - - return{ ND_2_HARD_MALE }; } +NounRecord GetNounRecordFromDictionary_BySpecialPluralForm(std::wstring nounNominativePlural) +{ + for (auto& noun : NounRecordArr) + { + if (noun.specialMultipleForm == nounNominativePlural) + { + return noun; + } + } + + return{}; + +} + + bool charIsConsolant(wchar_t c) { std::wstring consolants = L"йцкнгшщзхфвпрлджчсмтб"; @@ -280,7 +363,7 @@ std::vector> getPossibleNounEndingDivision { std::wstring nounBase = boost::replace_last_copy(noun, ending, ""); - if (charIsConsolant(nounBase[nounBase.size() - 1])) + if (charIsConsolant(nounBase[nounBase.size() - 1]) || nounBase[nounBase.size() - 1] == L'ь' || nounBase[nounBase.size() - 1] == L'ъ') { result.push_back({ nounBase, ending}); } @@ -291,23 +374,139 @@ std::vector> getPossibleNounEndingDivision } + std::vector GetPossibleNounTupleArr(std::wstring nounEnding) { std::vector result; - auto nounEndingTable = getNounEndingTable(); - - for (auto i : nounEndingTable) + for (auto& noun : nounDeclencionCaseTable) { - if (i.second.count(nounEnding) != 0) + for (int i = 0; i < 6; i++) { - result.push_back(i.first); + if (noun.grammaticalCaseMap[i].second == nounEnding) + { + result.push_back(NounTuple{ noun.nounDeclencion, noun.grammaticalCaseMap[i].first }); + } } + } 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; @@ -323,20 +522,262 @@ std::vector FilterNounTupleArrByNounDeclentionSet(std::vector(nounTuple), NGC_P1_NOMINATIVE, NPF_SINGULAR }; + //Get nominative form of this declention + std::wstring nounEndling = nounDeclencionCaseTable[static_cast(nounDeclencionSingular)].grammaticalCaseMap[static_cast(NGC_P1_NOMINATIVE)].second; - auto nounEndingSet = nounEndingTable[nominativeNounTuple]; + return nounBase + nounEndling; +} - if (nounEndingSet.size() != 1) + +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; +} + +std::wstring i_form_consolants = L"гкжшчщ"; +std::wstring u_form_consolants = L"бпдтвфзснмлр"; + +wchar_t GetLastChar(const NounRecord& nounRecord) +{ + return nounRecord.nominativeForm[nounRecord.nominativeForm.size() - 1]; +} + +wchar_t GetPrevLastChar(const NounRecord& nounRecord) +{ + return nounRecord.nominativeForm[nounRecord.nominativeForm.size() - 2]; +} + +bool charIsIFormConsolant(wchar_t c) +{ + return i_form_consolants.find(c) != i_form_consolants.npos; +} + +bool charIsUFormConsolant(wchar_t c) +{ + return u_form_consolants.find(c) != i_form_consolants.npos; +} + + +bool FirstAIFormSingularCondition(const NounRecord& nounRecord) +{ + 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))); +} + +bool FirstAIFormAnimatePluralCondition(const NounRecord& nounRecord) +{ + return nounRecord.haveStandardMultipleForm && nounRecord.canBeAnimate && (GetLastChar(nounRecord) == L'а' && charIsIFormConsolant(GetPrevLastChar(nounRecord))); +} + + +bool FirstAUFormSingularCondition(const NounRecord& nounRecord) +{ + 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))); +} + +bool FirstAUFormAnimatePluralCondition(const NounRecord& nounRecord) +{ + return nounRecord.haveStandardMultipleForm && nounRecord.canBeAnimate && (GetLastChar(nounRecord) == L'а' && charIsUFormConsolant(GetPrevLastChar(nounRecord))); +} + + +bool FirstYaFormSingularCondition(const NounRecord& nounRecord) +{ + return nounRecord.haveSingleForm && (GetLastChar(nounRecord) == L'я'); +} + +bool FirstYaFormInanimatePluralCondition(const NounRecord& nounRecord) +{ + return nounRecord.haveStandardMultipleForm && nounRecord.canBeInanimate && (GetLastChar(nounRecord) == L'я'); +} + +bool FirstYaFormAnimatePluralCondition(const NounRecord& nounRecord) +{ + return nounRecord.haveStandardMultipleForm && nounRecord.canBeAnimate && (GetLastChar(nounRecord) == L'я'); +} + + +// Second declention + +bool SecondMaleIFormInanimateSingularCondition(const NounRecord& nounRecord) +{ + return nounRecord.haveSingleForm && nounRecord.gender == NG_MALE && nounRecord.canBeInanimate && charIsIFormConsolant(GetLastChar(nounRecord)); +} + +bool SecondMaleIFormInanimatePluralCondition(const NounRecord& nounRecord) +{ + return nounRecord.haveStandardMultipleForm && nounRecord.gender == NG_MALE && nounRecord.canBeInanimate && charIsIFormConsolant(GetLastChar(nounRecord)); +} + + +bool SecondMaleIFormAnimateSingularCondition(const NounRecord& nounRecord) +{ + return nounRecord.haveSingleForm && nounRecord.gender == NG_MALE && nounRecord.canBeAnimate && charIsIFormConsolant(GetLastChar(nounRecord)); +} + +bool SecondMaleIFormAnimatePluralCondition(const NounRecord& nounRecord) +{ + return nounRecord.haveStandardMultipleForm && nounRecord.gender == NG_MALE && nounRecord.canBeAnimate && charIsIFormConsolant(GetLastChar(nounRecord)); +} + + +bool SecondMaleUFormInanimateSingularCondition(const NounRecord& nounRecord) +{ + return nounRecord.haveSingleForm && nounRecord.gender == NG_MALE && nounRecord.canBeInanimate && charIsUFormConsolant(GetLastChar(nounRecord)); +} + +bool SecondMaleUFormInanimatePluralCondition(const NounRecord& nounRecord) +{ + return nounRecord.haveStandardMultipleForm && nounRecord.gender == NG_MALE && nounRecord.canBeInanimate && charIsUFormConsolant(GetLastChar(nounRecord)); +} + + +bool SecondMaleUFormAnimateSingularCondition(const NounRecord& nounRecord) +{ + return nounRecord.haveSingleForm && nounRecord.gender == NG_MALE && nounRecord.canBeAnimate && charIsUFormConsolant(GetLastChar(nounRecord)); +} + +bool SecondMaleUFormAnimatePluralCondition(const NounRecord& nounRecord) +{ + return nounRecord.haveStandardMultipleForm && nounRecord.gender == NG_MALE && nounRecord.canBeAnimate && charIsUFormConsolant(GetLastChar(nounRecord)); +} + + +bool SecondMaleSSFormInanimateSingularCondition(const NounRecord& nounRecord) +{ + return nounRecord.haveSingleForm && nounRecord.gender == NG_MALE && nounRecord.canBeInanimate && GetLastChar(nounRecord) == L'ь'; +} + +bool SecondMaleSSFormInanimatePluralCondition(const NounRecord& nounRecord) +{ + return nounRecord.haveStandardMultipleForm && nounRecord.gender == NG_MALE && nounRecord.canBeInanimate && GetLastChar(nounRecord) == L'ь'; +} + + +bool SecondMaleSSFormAnimateSingularCondition(const NounRecord& nounRecord) +{ + return nounRecord.haveSingleForm && nounRecord.gender == NG_MALE && nounRecord.canBeAnimate && GetLastChar(nounRecord) == L'ь'; +} + +bool SecondMaleSSFormAnimatePluralCondition(const NounRecord& nounRecord) +{ + return nounRecord.haveStandardMultipleForm && nounRecord.gender == NG_MALE && nounRecord.canBeAnimate && GetLastChar(nounRecord) == L'ь'; +} + +bool SecondNeutralEFormSingularCondition(const NounRecord& nounRecord) +{ + return nounRecord.haveSingleForm && nounRecord.gender == NG_NEUTRAL && GetLastChar(nounRecord) == L'е'; +} + +bool SecondNeutralEFormPluralCondition(const NounRecord& nounRecord) +{ + return nounRecord.haveStandardMultipleForm && nounRecord.gender == NG_NEUTRAL && GetLastChar(nounRecord) == L'е'; +} + +bool SecondNeutralOFormSingularCondition(const NounRecord& nounRecord) +{ + return nounRecord.haveSingleForm && nounRecord.gender == NG_NEUTRAL && GetLastChar(nounRecord) == L'о'; +} + +bool SecondNeutralOFormPluralCondition(const NounRecord& nounRecord) +{ + return nounRecord.haveStandardMultipleForm && nounRecord.gender == NG_NEUTRAL && GetLastChar(nounRecord) == L'о'; +} + +bool ThirdFormSingularCondition(const NounRecord& nounRecord) +{ + 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'ь'; +} + +bool ThirdFormAnimatePluralCondition(const NounRecord& nounRecord) +{ + return nounRecord.haveStandardMultipleForm && nounRecord.gender == NG_FEMALE && nounRecord.canBeAnimate && GetLastChar(nounRecord) == L'ь'; +} + + +std::map> 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_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_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); + + //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_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_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[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); + + +} + + +bool NounFitsDeclention(NounRecord nounRecord, NounTuple nounTuple) +{ + + NounDeclencion nounDeclencion = std::get<0>(nounTuple); + + return DeclentionConditionMap[nounDeclencion](nounRecord); +} + +bool NounScructIsAlreadyInArray(const NounStruct& nounStruct, const std::vector& arr) +{ + for (auto& ns : arr) { - //throw std::exception("There is problem - noun have more than 1 form!"); + if (ns.nounGrammaticalCase == nounStruct.nounGrammaticalCase && + ns.nounRecord.nominativeForm == nounStruct.nounRecord.nominativeForm) + { + return true; + } } - return nounBase + *(nounEndingTable[nominativeNounTuple].begin()); + return false; } std::vector RecognizeNoun(std::wstring noun) @@ -353,57 +794,174 @@ std::vector RecognizeNoun(std::wstring noun) std::vector possibleTupleArr = GetPossibleNounTupleArr(nounEnding); - + //std::vector sureTupleArr; + + //Standard check for (auto nounTuple : possibleTupleArr) { - std::wstring nounNominative = RestoreNounByTuple(nounBase, nounTuple); + std::wstring nounNominaviteSingular = GetNounNoninativeSingular(nounBase, std::get<0>(nounTuple)); - - auto possibleNounDetectionSet = GetPossibleNounDeclencionSet(nounNominative); - - - if (possibleNounDetectionSet.count(std::get<0>(nounTuple)) != 0) + if (NounIsInDictionary(nounNominaviteSingular)) { - - if (NounIsInDictionary(nounNominative)) + + NounRecord nounRecord = GetNounRecordFromDictionary(nounNominaviteSingular); + + if (NounFitsDeclention(nounRecord, nounTuple)) { - result.push_back({ nounTuple, nounNominative }); + //sureTupleArr.push_back(nounTuple); + result.push_back({ std::get<1>(nounTuple), nounRecord }); } } - } + //Special plural form check + for (auto nounTuple : possibleTupleArr) + { + if (NounDeclencionIsPlural(std::get<0>(nounTuple))) + { + std::wstring nounNominavitePlural = GetNounNoninative(nounBase, std::get<0>(nounTuple)); + if (NounSpecialPluralFormIsInDictionary(nounNominavitePlural)) + { + NounRecord nounRecord = GetNounRecordFromDictionary_BySpecialPluralForm(nounNominavitePlural); + + NounStruct ns{ std::get<1>(nounTuple), nounRecord }; + + if (!NounScructIsAlreadyInArray(ns, result)) + { + result.push_back(ns); + } + } + } + + } + + + } + + return result; } -void LoadFrequentWordSet() +NounDeclencion CalculateNounDeclention(NounRecord nounRecord) { + + //Xperimental -- need to find if here might be more than 1 declention + + for (auto& i : DeclentionConditionMap) + { + if (i.second(nounRecord)) + { + return i.first; + } + } + + std::cout << "Error in CalculateNounDeclention" << std::endl; + + return{}; +} + + +void LoadNounDeclencionCaseTable() +{ + + nounDeclencionCaseTable.clear(); + #ifdef _WIN32 - std::ifstream f("C:/Workplace/ChineseJournal/rudict/frequent_words.txt"); + std::ifstream f("C:/Workplace/ChineseJournal/rudict/grammar_case.csv"); #else -std::ifstream f("/home/devuser/workplace/rudict/frequent_words.txt"); + std::ifstream f("/home/devuser/workplace/rudict/grammar_case.csv"); #endif - //f.imbue(std::locale(std::locale::empty(), new std::codecvt_utf8)); std::string line; std::wstring wline; if (f.is_open()) { - std::cout<<"File found!" << std::endl; + + std::cout << "File found!" << std::endl; + + std::vector> currentGrammaticalCaseMap; + std::wstring currentNounDeclencion; + + while (getline(f, line)) { + std::vector lineArr; + + boost::split_regex(lineArr, line, boost::regex(";")); + + if (lineArr[0] != "") + { + if (currentNounDeclencion == L"") + { + currentNounDeclencion = string_to_wstring(lineArr[0]); + } + else + { + nounDeclencionCaseTable.push_back(NounDeclencionCaseTableRecord{ WStringToNounDeclencion(currentNounDeclencion), currentGrammaticalCaseMap }); + + currentNounDeclencion = string_to_wstring(lineArr[0]); + + currentGrammaticalCaseMap.clear(); + } + + } + + currentGrammaticalCaseMap.push_back({ WStringToNounGrammaticalCase(string_to_wstring(lineArr[1])), string_to_wstring(lineArr[2]) }); + + } + //Add last one + if (currentNounDeclencion != L"") + { + nounDeclencionCaseTable.push_back(NounDeclencionCaseTableRecord{ WStringToNounDeclencion(currentNounDeclencion), currentGrammaticalCaseMap }); + } + + f.close(); + } + else + { + std::cout << "file not found!" << std::endl; + } + + +} + +void LoadFrequentWordSet() +{ + + +#ifdef _WIN32 + std::ifstream f("C:/Workplace/ChineseJournal/rudict/frequent_nouns_2000.csv"); + +#else + std::ifstream f("/home/devuser/workplace/rudict/frequent_nouns_2000.csv"); +#endif + + std::string line; + std::wstring wline; + + if (f.is_open()) + { + std::cout << "File found!" << std::endl; + while (getline(f, line)) + { + wline = string_to_wstring(line); - frequentWordSet.insert(wline); + NounRecord nounRecord(wline); + + NounRecordArr.push_back(nounRecord); + } f.close(); } else { - std::cout <<"file not found!" << std::endl; + std::cout << "file not found!" << std::endl; } + + } \ No newline at end of file diff --git a/rudict/rudict/noun.h b/rudict/rudict/noun.h index 6f6d742..238c090 100644 --- a/rudict/rudict/noun.h +++ b/rudict/rudict/noun.h @@ -1,78 +1,150 @@ -#ifndef NOUN_H_INCLUDED -#define NOUN_H_INCLUDED - -#include -#include -#include -#include -#include - -#include "boost/algorithm/string.hpp" - -enum NounDeclencion -{ - ND_1_HARD, // Папа (папы) - ND_1_SOFT, // Доска (доски) - ND_2_HARD_MALE, // Трактор (тракторы) - ND_2_SOFT_MALE, // Тополь (тополи) - ND_2_NEUTER_O, // Бревно (брёвна) - ND_2_NEUTER_E, // Поле (поля) - ND_3 // Лошадь -}; - -enum NounGrammaticalCase -{ - NGC_P1_NOMINATIVE, - NGC_P2_GENITIVE, - NGC_P3_DATIVE, - NGC_P4_ACCUSATIVE, - NGC_P5_INSTRUMENTAL, - NGC_P6_PREPOSITIONAL -}; - -enum NounNumber -{ - NPF_SINGULAR, - NPF_PLURAL -}; - -std::wstring NounDeclencionToWString(NounDeclencion nounDeclencion); -std::wstring NounGrammaticalCaseToWString(NounGrammaticalCase nounGrammaticalCase); -std::wstring NounNumberToWString(NounNumber nounNumber); - -typedef std::tuple NounTuple; - -typedef std::set StringSet; - -std::vector GetAllNounEndingArr(); -std::map getNounEndingTable(); - -bool NounIsInDictionary(std::wstring nounNominative); - -std::set GetPossibleNounDeclencionSet(std::wstring nounNominative); - -bool charIsConsolant(wchar_t c); - -bool charIsVowel(wchar_t c); - - -struct NounStruct -{ - NounTuple nounTuple; - std::wstring noun; -}; - - -std::vector> getPossibleNounEndingDivisionArr(std::wstring noun); - -std::vector GetPossibleNounTupleArr(std::wstring nounEnding); - -//std::vector FilterNounTupleArrByNounDeclentionSet(std::vector nounTupleArr, std::set filter); - -std::wstring RestoreNounByTuple(std::wstring nounBase, NounTuple nounTuple); - -std::vector RecognizeNoun(std::wstring noun); - -void LoadFrequentWordSet(); - -#endif //NOUN_H_INCLUDED +#ifndef NOUN_H_INCLUDED +#define NOUN_H_INCLUDED + +#include +#include +#include +#include +#include + +#include "boost/algorithm/string.hpp" + +enum NounGender +{ + NG_MALE = 0, + NG_FEMALE, + NG_NEUTRAL +}; + +struct NounRecord +{ + std::wstring nominativeForm; + NounGender gender; + + bool haveSingleForm; + bool haveMultipleForm; + + bool haveStandardMultipleForm; + bool haveStandardMultipleFormWithMissingLastVowel; + + std::wstring specialMultipleForm; + + bool canBeAnimate; + bool canBeInanimate; + + NounRecord(); + NounRecord(std::wstring line); +}; + +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 +}; + +enum NounGrammaticalCase +{ + NGC_P1_NOMINATIVE = 0, + NGC_P2_GENITIVE, + NGC_P3_DATIVE, + NGC_P4_ACCUSATIVE, + NGC_P5_INSTRUMENTAL, + NGC_P6_PREPOSITIONAL +}; + +struct NounDeclencionCaseTableRecord +{ + NounDeclencion nounDeclencion; + std::vector> grammaticalCaseMap; + +}; + +extern std::vector NounRecordArr; + +extern std::vector nounDeclencionCaseTable; + + +NounDeclencion WStringToNounDeclencion(std::wstring str); +std::wstring NounGrammaticalCaseToWString(NounGrammaticalCase nounGrammaticalCase); +NounGrammaticalCase WStringToNounGrammaticalCase(std::wstring str); + +//std::wstring NounNumberToWString(NounNumber nounNumber); + +typedef std::tuple NounTuple; + +typedef std::set StringSet; + +std::vector GetAllNounEndingArr(); + +bool NounIsInDictionary(std::wstring nounNominative); +bool NounSpecialPluralFormIsInDictionary(std::wstring nounNominativePlural); + + +NounRecord GetNounRecordFromDictionary(std::wstring nounNominative); +NounRecord GetNounRecordFromDictionary_BySpecialPluralForm(std::wstring nounNominativePlural); + +bool charIsConsolant(wchar_t c); + +bool charIsVowel(wchar_t c); + + +struct NounStruct +{ + NounGrammaticalCase nounGrammaticalCase; + NounRecord nounRecord; +}; + + +std::vector> getPossibleNounEndingDivisionArr(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); + +void SetupDeclentionMap(); + +bool NounFitsDeclention(NounRecord nounRecord, NounTuple nounTuple); + +std::vector RecognizeNoun(std::wstring noun); + +NounDeclencion CalculateNounDeclention(NounRecord nounRecord); + + +void LoadFrequentWordSet(); +void LoadNounDeclencionCaseTable(); + +#endif //NOUN_H_INCLUDED diff --git a/rudict/rudict/rudict.vcxproj b/rudict/rudict/rudict.vcxproj index 2baa2e0..dee4e59 100644 --- a/rudict/rudict/rudict.vcxproj +++ b/rudict/rudict/rudict.vcxproj @@ -45,7 +45,7 @@ Disabled true C:/Workplace/boost_1_57_0 - _WIN32_WINNT=0x0501;_MBCS;%(PreprocessorDefinitions) + _SCL_SECURE_NO_WARNINGS;_WIN32_WINNT=0x0501;_MBCS;%(PreprocessorDefinitions) true @@ -60,7 +60,7 @@ true true C:/Workplace/boost_1_57_0 - _WIN32_WINNT=0x0501;_MBCS;%(PreprocessorDefinitions) + _SCL_SECURE_NO_WARNINGS;_WIN32_WINNT=0x0501;_MBCS;%(PreprocessorDefinitions) true diff --git a/rudict/rudict/utf8utf16.cpp b/rudict/rudict/utf8utf16.cpp index 3ce2bb7..9d6d066 100644 --- a/rudict/rudict/utf8utf16.cpp +++ b/rudict/rudict/utf8utf16.cpp @@ -2,7 +2,7 @@ #include -#include +#include #include std::string wstring_to_string(std::wstring in)