All Downloads are FREE. Search and download functionalities are using the official Maven repository.
Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
org.languagetool.rules.uk.grammar-grammar.xml Maven / Gradle / Ivy
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../../../../../../../../../languagetool-core/src/main/resources/org/languagetool/rules/print.xsl" title="Pretty print" ?>
<?xml-stylesheet type="text/css" href="../../../../../../../../../languagetool-core/src/main/resources/org/languagetool/rules/rules.css" title="Easy editing stylesheet" ?>
<!--
Ukrainian grammar and typo rules for LanguageTool
Copyright (C) 2007 Andriy Rysin
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
-->
<!--suppress CheckTagEmptyBody -->
<!DOCTYPE rules [
<!ENTITY weekdays "понеділок|вівторлк|середа|четвер|п'ятниця|субота|неділя">
<!ENTITY months "січень|лютий|березень|квітень|травень|червень|липень|серпень|вересень|жовтень|листопад|грудень|січня|лютого|березня|квітня|травня|червня|липня|серпня|вересня|жовтня|листопада|грудня">
<!ENTITY abbrevMonths "січ|лют|бер|кві|тра|чер|лип|сер|вер|жов|лис|гру">
<!ENTITY hours "перший|другий|третій|четвертий|п'ятий|шостий|сьомий|восьмий|дев'ятий|десятий|одинадцятий|дванадцятий|тринадцятий|чотирнадцятий|п'ятнадцятий|шістнадцятий|сімнадцятий|вісімнадцятий|дев'ятнадцятий">
]>
<rules lang="uk" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="../../../../../../../../../languagetool-core/src/main/resources/org/languagetool/rules/rules.xsd">
<category name="Граматика">
<rulegroup name="Узгодженість частин речення" id="CONSISTENCY_VERB">
<rule>
<antipattern>
<token regexp="yes">о?крім|замість|(за)?для|(за)?ради|замість</token>
<token postag_regexp="yes" postag="verb.*inf.*"/>
</antipattern>
<antipattern>
<token case_sensitive="no">о</token>
<token postag_regexp="yes" postag="verb.*impr.*"/>
</antipattern>
<antipattern>
<token inflected="yes" regexp="yes">група|турнір|гепатит</token>
<token case_sensitive="yes" regexp="yes">[А-Я]</token>
</antipattern>
<pattern>
<token postag_regexp="yes" postag="prep.*">
<exception negate_pos="yes" postag_regexp="yes" postag="prep.*" />
</token>
<token postag_regexp="yes" postag="verb.*">
<exception negate_pos="yes" postag_regexp="yes" postag="verb.*" />
</token>
</pattern>
<message>Прийменник \1 перед дієсловом <suggestion>\2</suggestion></message>
<example>Їм треба їхати.</example>
<example>Їм треба в'їхати.</example>
<example>Просто взяти.</example>
<!-- TODO: case sensitivity in MultiWordChunker
<example>Справедливості заради скажемо</example>
<example>Справедливості заради хочеться зауважити</example>
-->
<example>Просто неба.</example>
<example>Це більше задля годиться</example>
<example>задля годиться</example>
<example>не залишається нічого іншого, крім чекати.</example>
<example>Наїхали на Мела Гібсона</example>
<example>О покладіть мені квіти</example>
<example>заради скажемо</example>
<example>кількість захворювань на гепатит В зменшилась у вісім разів.</example>
<example correction="їхати">Їм треба <marker>в їхати</marker>.</example>
<example correction="будь"><marker>для будь</marker> кого</example>
</rule>
<rule>
<pattern>
<token postag_regexp="yes" postag="predic.*">
<exception negate_pos="yes" postag_regexp="yes" postag="predic.*|adj.*" />
<exception scope="previous">кого</exception>
</token>
<marker>
<token postag_regexp="yes" postag="verb.*">
<exception postag_regexp="yes" postag="verb:(rev:)?inf.*|.*unknown.*"/>
<exception negate_pos="yes" postag_regexp="yes" postag="verb.*"/>
<exception regexp="yes">буде|було|був</exception>
</token>
</marker>
</pattern>
<message>Дієслово після присудкового слова має йти інфінітивом: <suggestion><match no="2" postag_regexp="yes" postag="verb(:rev)?:inf.*"/></suggestion></message>
<example>Повинен їхати</example>
<example>Йому треба писати</example>
<example>Чи варто їм таке писати?</example>
<example>Чи варто було їм таке писати?</example>
<example>Треба буде таке писати</example>
<example>В кого треба видалено.</example>
<example>можна буде встояти.</example>
<example correction="писати">Повинен <marker>писатиме</marker>.</example>
<example correction="писати">Треба <marker>писав</marker>.</example>
<example correction="встояти">Не можна <marker>встоять</marker>.</example>
<example correction="сподіватись|сподіватися">І тому варто <marker>сподіваюся</marker>, що це спрацює.</example>
</rule>
</rulegroup>
<rulegroup name="Узгодженість відмінків з прийменниками" id="CONSISTENCY_VIDM_prep">
<rule>
<pattern>
<token>згідно</token>
<marker>
<token postag_regexp="yes" postag="(noun|adj|prep).*">
<exception regexp="yes">з|зі|із</exception>
</token>
</marker>
</pattern>
<message>Згідно з чим</message>
<example correction="">згідно <marker>статуту</marker></example>
<example correction="">згідно <marker>до</marker> правила</example>
<example>згідно зі статутом</example>
<example>згідно з правилом</example>
</rule>
</rulegroup>
<rulegroup name="Узгодженість відмінків з іменниками" id="CONSISTENCY_VIDM_noun">
<rule>
<pattern>
<token inflected="yes" regexp="yes">завідувач|завідувачка|зав|зав\.</token>
<marker>
<token postag_regexp="yes" postag="adj.*v_oru.*" min="0"/>
<token postag_regexp="yes" postag="noun.*v_oru.*">
<exception postag_regexp="yes" postag="noun.*v_rod.*|.*pron.*"/>
</token>
</marker>
</pattern>
<message>Завідувач(ка) чого</message>
<suggestion><match no="2" postag_regexp="yes" postag="(adj.*)v_oru(.*)" postag_replace="$1v_rod$2"/> <match no="3" postag_regexp="yes" postag="(noun.*)v_oru(.*)" postag_replace="$1v_rod$2"/></suggestion>
<!-- TODO: change code to remove space -->
<example correction=" відділу">завідувача <marker>відділом</marker></example>
<example correction=" відділу">зав <marker>відділом</marker></example>
<!-- <example correction=" відділу">зав. <marker>відділом</marker></example> -->
<example correction="сьомого відділу">завідувачки <marker>сьомим відділом</marker></example>
<example>завідувачем ним же створеної</example>
</rule>
</rulegroup>
<rulegroup name="Узгодженість відмінків з дієсловами" id="CONSISTENCY_VIDM_AFTER_VERBS">
<rule>
<pattern>
<token inflected="yes" regexp="yes">навч[иа]ти</token>
<token postag_regexp="yes" postag="noun.*v_zna.*anim.*|.*pron:pers.*" min="0"/>
<marker>
<token postag_regexp="yes" postag="adj.*v_dav.*" min="0">
<exception regexp="yes">всьому|цьому</exception> <!-- <exception postag_regexp="yes" postag=".*pron:dem.*"/> -->
</token>
<token postag_regexp="yes" postag="noun.*:v_dav.*|.*v_dav.*pron:dem.*">
<exception postag_regexp="yes" postag=".*:v_(rod|zna|oru).*|noun:.:v_(naz|dav).*:anim.*|adv.*"/>
<exception>нікому</exception> <!-- не вірити -->
</token>
</marker>
</pattern>
<message>Навчати чого</message>
<example correction="">навчати <marker>математиці</marker>.</example>
<example correction="">навчати <marker>елементарній математиці</marker>.</example>
<example correction="">навчати учнів <marker>елементарній математиці</marker>.</example>
<example correction="">навчати їх <marker>елементарній математиці</marker>.</example>
<example correction="">навчати <marker>цьому</marker> виду спорту.</example>
<example correction="">навчали <marker>улюбленому заняттю</marker>.</example>
<example correction="">навчити <marker>всьому</marker>.</example>
<example>навчати математики</example>
<example>навчати елементарної математики</example>
<example>навчати фаху</example>
<example>навчати їх</example>
<example>навчило її нікому не вірити</example>
<example>Чого навчила вас ця поразка?</example>
</rule>
<rule>
<pattern>
<token inflected="yes" regexp="yes">навч[иа]тися</token>
<marker>
<token postag_regexp="yes" postag="adj.*v_dav.*" min="0">
<exception regexp="yes">всьому|цьому|самому</exception>
</token>
<token postag_regexp="yes" postag="noun.*:v_dav.*|.*:n:.*pron:dem.*"> <!--TODO: всьому|цьому -->
<exception postag_regexp="yes" postag=".*:v_(rod|zna|oru).*|noun:.:(v_naz|v_dav).*(:anim|pron:pers).*|adv.*"/>
<exception>нікому</exception> <!-- не вірити -->
</token>
</marker>
</pattern>
<message>Навчати чого</message>
<example correction="">навчатися <marker>математиці</marker>.</example>
<example correction="">навчатися <marker>елементарній математиці</marker>.</example>
<example correction="">навчатися <marker>цьому</marker> виду спорту.</example>
<example correction="">навчалися <marker>улюбленому заняттю</marker>.</example>
<example correction="">навчитися <marker>всьому</marker>.</example>
<example correction="">навчитися <marker>цій екзотиці</marker>.</example>
<example>Куди піти навчатись ентузіастам із фотоапаратами.</example>
<example>навчалися індійці.</example>
<example>навчаються китайці.</example>
<example>навчатися досі</example>
<example>навчилася нікому не вірити</example>
<example>Але довго навчатися йому не довелося</example>
</rule>
</rulegroup>
<rulegroup name="Узгодженість числа іменників з числівниками" id="CONSISTENCY_NOUN_NUMERIC">
<rule>
<pattern>
<token postag_regexp="yes" postag="num.*">
<exception scope="previous">на</exception>
</token>
<token regexp="yes">десятих|сотих|третіх|треті|четвертих|чверті|четверті</token>
<marker>
<token postag_regexp="yes" postag="noun:.:.*">
<exception postag_regexp="yes" postag="noun:[mfnp]:v_rod.*"/>
<exception postag_regexp="yes" postag="noun:.*:anim.*"/>
<exception regexp="yes">гра|біографій|витрат|голосів|грошей|занять|заяв|інвестицій|локомотивів|мінус|місць|плюс|потреб|потужностей|рейсів|сімей|смертей|фірм|шлюбів|творів|.*господарств|експонатів|країн|країн-.*</exception>
</token>
</marker>
</pattern>
<message>Після дробового числівника іменник має стояти в родовому відмінку</message>
<suggestion><match no="3" postag_regexp="yes" postag="(.*):.:v_...(.*)" postag_replace="$1:[mnf]:v_rod$2"/></suggestion>
<example correction="відсотка">два десятих <marker>відсотки</marker></example>
<example correction="відсотка">дві третіх <marker>відсотки</marker></example>
<example correction="відсотка">три четверті <marker>відсотки</marker></example>
<example>дві десяті відсотка</example>
<example>через десяті руки</example>
<example>дві третіх країн-членів</example>
<example>дві десяті мм</example>
<example>три чверті місць</example>
<example>три чверті їх слухати неможливо</example>
<example>на три чверті він ними був заповнений</example>
<example>три чверті громадян</example>
<example>усі три чверті гра була рівною</example>
</rule>
<rule>
<antipattern>
<token regexp="yes">соті|десяті|.*[234]</token>
<token case_sensitive="yes" postag_regexp="yes" postag="noun:m:v_rod.*" regexp="yes">[А-ЯІЇЄҐ].*</token>
</antipattern>
<pattern>
<token regexp="yes">два|дві|обидва|обидві|три|чотири|[^,.№:-]*[2-9]?[234]
<exception postag_regexp="yes" postag="date|time"/>
<exception scope="previous" regexp="yes">[:/№]|статт[яі]|пункті?|частин[аи]|[а-яіїєґ]+\.|\.</exception> <!-- ст.,ч.,п. тощо -->
</token>
<token postag_regexp="yes" postag="adj.*" min="0">
<exception regexp="yes">третіх|четвертих</exception>
<exception postag_regexp="yes" postag="noun:p:v_naz.*"/>
</token>
<marker>
<token postag_regexp="yes" postag="noun:m:v_rod.*" regexp="yes">.*[ая]
<exception postag_regexp="yes" postag="noun:p:v_naz.*"/>
<exception regexp="yes">січня|березня|квітня|травня|червня|липня|серпня|вересня|жовтня|листопада|грудня</exception>
</token>
</marker>
</pattern>
<message>Після числівника що закінчується на 2-4 іменник має стояти в називному відмінку множини: <suggestion><match no="3" postag="noun:p:v_naz.*" postag_regexp="yes"/></suggestion></message>
<example correction="вулики">двадцять три <marker>вулика</marker></example>
<example correction="тижні">24 <marker>тижня</marker></example>
<example correction="автомобілі">обидва <marker>автомобіля</marker></example>
<example correction="автомобілі">обидва синіх <marker>автомобіля</marker></example>
<example correction="(Києва)">два <marker>Києва</marker></example>
<example>двадцять три вулики</example>
<example>двадцять три дні</example>
<example>три чверті</example>
<example>співвласника ДБК-3 Петра Шелюка</example>
<example>1/2 шилінга</example>
<example>після поразки 0:2 Базилевича</example>
<example>три головні завдання</example>
<example>2,2 мільйона</example>
<example>три століття</example>
<example>три роки тому</example>
<example>дві третіх шлунка</example>
<example>1992 року</example>
<example>три тис. грн.</example>
<example>3 липня 1998р.</example>
<example>ст. 33 документа</example>
<example>статті 43 Закону</example>
<example>заспівали дві пісні короля футболу</example>
<example>випередивши на дві соті Давида Ньясу з Катару</example>
</rule>
<rule>
<pattern>
<token regexp="yes" inflected="yes">десять|двадцять|тридцять|сорок|.*десят|дев'яносто|сто|двісті|триста|чотириста|п'ятьсот|шістьсот|сімсот|вісімсот|сотня|тисяча|мільйон|мільярд|([0-9]*[05-9]|[0-9]+11)
<exception postag_regexp="yes" postag=".*:v_oru.*"/>
<exception scope="previous" regexp="yes">[:./№«]</exception>
<exception regexp="yes">(1[0-9]{3}|20[0-2][0-9])</exception>
</token>
<token postag_regexp="yes" postag="adj.*" min="0"/>
<marker>
<!--
<token postag_regexp="yes" postag="noun:m:v_naz.*" regexp="yes">.*[бвгґджйзклмнпрстфхцчшщ]ь?
<exception scope="previous">хвилин за</exception>
<exception postag_regexp="yes" postag="noun:p:v_rod.*|verb.*|predic.*"/>
<exception regexp="yes" case_sensitive="yes">[А-ЯІЇЄҐ].*</exception>
<exception regexp="yes">раз|чоловік|грам|тис|куб|як|абзац|клас|канал|номер|плюс|поверх|пункт</exception>
</token>
-->
<token postag_regexp="yes" postag="noun:m:v_naz.*" regexp="yes">(нано|мікро|мілі|дека|кіло|мега|гіга|тера|пета)?(герц|байт|бар|бер|ват|вольт|солдат|децибел|рентген|моль|мікрон|грам|аршин|лат|карат)</token>
</marker>
</pattern>
<message>Після числівника що закінчується на 5-9 або 0 іменник має стояти в родовому відмінку множини: <suggestion><match no="3" postag="noun:p:v_rod.*" postag_regexp="yes"/></suggestion></message>
<!--
<example correction="грамів">сто <marker>грам</marker></example>
<example correction="грамів">100 <marker>грам</marker></example>
-->
<example correction="байтів">10 <marker>байт</marker></example>
<example correction="мілібарів">10 <marker>мілібар</marker></example>
<example correction="солдатів">дві сотні <marker>солдат</marker></example>
<example correction="солдатів">дві сотні хоробрих <marker>солдат</marker></example>
<example>хвилин за 10 спікер увійшов</example>
<example>до 16 вхід заборонено</example>
<example>в 40 став наймолодшим</example>
<example>50 тис. людей</example>
<example>сто грамів</example>
<example>100 грамів</example>
<example>10 разів</example>
<example>10 раз</example>
<example>10 номер</example>
<example>У 2008 президент</example>
<example>10 плюс 5</example>
<example>о 17.15 патріарх буде в місті</example>
<example>«5 канал»</example>
<example>у свої сімдесят два роки</example>
<example>на виборах-2007 Блок Литвина</example>
<example>127 Шевченко Євген Валерійович</example>
<example>керував сотнею німець</example>
<example>комендантом сотні став Віталій</example>
<example>ці мільйони слід шукати там</example>
</rule>
<rule>
<pattern>
<token regexp="yes" inflected="yes">десять|двадцять|тридцять|сорок|.*десят|дев'яносто|сто|двісті|триста|чотириста|п'ятьсот|шістьсот|сімсот|вісімсот|сотня|тисяча|мільйон|мільярд|([0-9]*[05-9]|[0-9]+11)
<exception postag_regexp="yes" postag=".*:v_oru.*"/>
<exception scope="previous" regexp="yes">[:./№«]</exception>
<exception regexp="yes">(1[0-9]{3}|20[0-2][0-9])</exception>
</token>
<marker>
<token regexp="yes">(нано|мікро|мілі|дека|кіло|мега|гіга|тера|пета)?тон</token>
</marker>
</pattern>
<message>Ви мали на увазі: <suggestion><match no="2"/>н</suggestion>?</message>
<example correction="кілотонн">10 <marker>кілотон</marker></example>
<example correction="тонн">10 <marker>тон</marker></example>
<example>10 тонн</example>
<example>10 тонів</example>
</rule>
<rule>
<pattern>
<token regexp="yes">([1-9][0-9]*)[02-9]1
<exception scope="previous" regexp="yes">[:./$№«]</exception>
<exception regexp="yes">(1[0-9]{3}|20[0-2][0-9])</exception>
</token>
<token postag_regexp="yes" postag="adj.*" min="0">
<exception postag_regexp="yes" postag="noun:[mfn]:.*"/>
</token>
<marker>
<token postag_regexp="yes" postag="noun:p:.*">
<exception postag_regexp="yes" postag=".*:[mfn]:.*|.*pron:pers.*|adv.*"/>
<exception regexp="yes">рр\.</exception>
</token>
</marker>
</pattern>
<message>Після числівника що закінчується на 1 іменник має стояти в однині</message>
<example type="incorrect">271 <marker>депутатів</marker> проголосовали</example>
<example type="correct">11 депутатів проголосовали</example>
<example type="correct">на тлі претендента 001 доходи великої родини</example>
<example type="correct">27 депутатів проголосовали</example>
<example type="correct">проти 441 зараз.</example>
<example type="correct">залишилася 781 тонна пестицидів.</example>
<example>В 1999-2001 рр. він був секретарем.</example>
<example>В 604-562 або 561 рр. до н.е.</example>
<example>Про знеструмлення будинків 10 та 101 нас не повідомили.</example>
</rule>
<rule>
<antipattern>
<token regexp="yes">[12][0-9]{3},[12][0-9]{3}</token>
<token regexp="yes">рр\.</token>
</antipattern>
<pattern>
<token regexp="yes">.*,[1-46-9]+</token> <!-- ,5 - виняток: 4,5 роки може читатися як «чотири з половиною роки» -->
<marker>
<token postag_regexp="yes" postag="noun:.:.*">
<exception postag_regexp="yes" postag="noun:[mfn]:(v_rod|nv).*|.*pron.*"/>
<exception regexp="yes">тис|рази|куб|кал</exception>
<exception case_sensitive="yes" regexp="yes">[А-ЯІЇЄҐ].*</exception>
</token>
</marker>
</pattern>
<message>Після десяткового дробу іменник має стояти в родовому відмінку однини: <suggestion><match no="2" postag_regexp="yes" postag="(.*):.:v_...(.*)" postag_replace="$1:[mnf]:v_rod$2"/></suggestion></message>
<example correction="кілограма">2,4 <marker>кілограми</marker></example>
<example correction="мільйона">2,4 <marker>мільйони</marker></example>
<example>33,77 тонни</example>
<example>2,19 бала</example>
<example>33,77 мм</example>
<example>33,77 тис</example>
<example>33,5 роки</example>
<example>33,5 Терещенко</example>
<example>1998,1999 рр.</example>
<example>із результатом 28,91 вона посіла третє місце</example>
<example>Становлять відповідно 0,5 і 0,3 її оцінки.</example>
</rule>
</rulegroup>
<rulegroup name="Узгодженість роду іменників з числівниками" id="CONSISTENCY_NOUN_NUMERIC_GENDER">
<rule>
<pattern>
<marker>
<token>півтора</token>
</marker>
<token postag_regexp="yes" postag="noun:f:.*">
<exception postag_regexp="yes" postag="noun:[nm]:(nv|v_rod).*"/>
</token>
</pattern>
<message>В жіночому роді правильно: <suggestion>півтори</suggestion></message>
<example correction="півтори"><marker>півтора</marker> доби</example>
<example correction="півтори"><marker>півтора</marker> тисячі</example>
<example>півтори доби</example>
</rule>
<rule>
<pattern>
<token regexp="yes">півтор[аи]</token>
<marker>
<token postag_regexp="yes" postag="noun:p:.*">
<exception postag_regexp="yes" postag="noun:[nmf]:(nv|v_rod).*"/>
<exception>рази</exception>
</token>
</marker>
</pattern>
<message>Після «півтора» треба вживати родовий однини: <suggestion><match no="2" postag_regexp="yes" postag="noun:[mnf]:v_rod.*"/></suggestion></message>
<example correction="відра">півтора <marker>відер</marker></example>
<example correction="сотні">півтори <marker>сотень</marker></example>
<example correction="мільярда">півтора <marker>мільярди</marker></example>
<example>півтора літра</example>
<example>півтора рази</example>
<example>півтора тисячі</example> <!-- ingore this mistake here, it'll be caght by rule above -->
</rule>
<rule>
<pattern>
<token>півтора</token>
<marker>
<token postag_regexp="yes" postag="noun:[mn]:.*">
<exception postag_regexp="yes" postag="noun:[nmfp]:(nv|v_rod).*"/>
<exception>рази</exception>
</token>
</marker>
</pattern>
<message>Після «півтора» треба вживати родовий однини: <suggestion><match no="2" postag_regexp="yes" postag="(noun:.):v_...(.*)" postag_replace="$1:v_rod$2"/></suggestion></message>
<example correction="копальника">півтора <marker>копальнику</marker></example>
<example correction="відра">півтора <marker>відрі</marker></example>
<example>півтора літра</example>
<example>півтора рази</example>
<example>півтора тисячі</example> <!-- ingore this mistake here, it'll be caght by rule above -->
</rule>
<rule>
<pattern>
<marker>
<token>півтори</token>
</marker>
<token postag_regexp="yes" postag="noun:[mn]:.*">
<exception postag_regexp="yes" postag="noun:[fp]:(nv|v_rod).*"/>
</token>
</pattern>
<message>В чоловічому та середньому роді правильно: «<suggestion>півтора</suggestion>»</message>
<example correction="півтора"><marker>півтори</marker> відра</example>
<example correction="півтора"><marker>півтори</marker> кухля</example>
<example>півтора відра</example>
<example>півтори доби</example>
<example>півтора кухля</example>
<example>півтори сотні</example> <!-- ingore this mistake here, it'll be caght by rule above -->
</rule>
</rulegroup>
<rulegroup name="Час" id="TIME">
<rule>
<pattern>
<token>пів</token>
<token postag_regexp="yes" postag="adj:f:v_rod.*" regexp="yes" inflected="yes">&hours;</token>
</pattern>
<message>Правильно: <suggestion>(о) пів на <match no="2" postag_regexp="yes" postag="adj:f:v_zna.*"/></suggestion></message>
<suggestion>(о) пів до <match no="2" postag_regexp="yes" postag="adj:f:v_rod.*"/></suggestion>
<example correction="(о) пів на першу|(о) пів до першої"><marker>пів першої</marker> приїхав і він</example>
<example>пів на першу приїхав і він</example>
</rule>
<rule>
<pattern>
<marker>
<token regexp="yes">[ву]</token>
</marker>
<token postag_regexp="yes" postag="adj:f:v_mis.*" regexp="yes" inflected="yes">&hours;</token>
<token>годині</token>
</pattern>
<message>Правильно: <suggestion>о</suggestion></message>
<example correction="о">аж <marker>у</marker> третій годині ночі</example>
<example>аж о третій годині ночі</example>
</rule>
<rule>
<pattern>
<marker>
<token regexp="yes">[ву]</token>
</marker>
<token regexp="yes">[1-9]-і?й|[12][0-9]-і?й</token>
<token>годині</token>
</pattern>
<message>Правильно: <suggestion>о</suggestion></message>
<example correction="о">аж <marker>у</marker> 10-й годині ночі</example>
<example>аж о 5-ій годині ночі</example>
</rule>
<rule>
<pattern>
<token regexp="yes">[ву]</token>
<token postag_regexp="yes" postag="num.*"/>
<token>годин</token>
<token postag_regexp="yes" postag="num.*"/>
<token postag_regexp="yes" postag="num.*" min="0"/>
<token>хвилин</token>
</pattern>
<message>Правильно: <suggestion>о <match no="2"/> <match no="3"/>і <match no="4"/> <match no="5"/> <match no="6"/></suggestion></message>
<suggestion><match no="2"/> <match no="3"/> до <match no="4"/></suggestion>
<example correction="о п'ять годині двадцять п'ять хвилин|п'ять годин до двадцять"><marker>в п'ять годин двадцять п'ять хвилин</marker></example>
<example>п'ять хвилин на дев'яту</example>
</rule>
<rule>
<pattern>
<!--
<token postag_regexp="yes" postag="num.*"/>
-->
<token postag_regexp="yes" postag="adj:f:v_mis.*" regexp="yes" inflected="yes">&hours;</token>
<token>годині</token>
<marker>
<token postag_regexp="yes" postag="num.*" min="0"/>
<token postag_regexp="yes" postag="adj.*"/>
<token>хвилині</token>
</marker>
</pattern>
<message>Правильно: <suggestion>…надцять хвилин</suggestion></message>
<example correction="…надцять хвилин">о першій годині <marker>двадцятій хвилині</marker></example>
<example correction="…надцять хвилин">о першій годині <marker>тридцять п'ятій хвилині</marker></example>
<example>о першій годині двадцять п'ять хвилин</example>
</rule>
<rule>
<pattern>
<token regexp="yes">[1-9]-і?й|[12][0-9]-і?й</token>
<token>годині</token>
<marker>
<token postag_regexp="yes" postag="num.*" min="0"/>
<token postag_regexp="yes" postag="adj.*"/>
<token>хвилині</token>
</marker>
</pattern>
<message>Правильно: <suggestion>…надцять хвилин</suggestion></message>
<example correction="…надцять хвилин">о 10-й годині <marker>двадцять п'ятій хвилині</marker></example>
<example>о 10-й годині двадцять п'ять хвилин</example>
</rule>
<rule>
<pattern>
<token>без</token>
<token postag_regexp="yes" postag="num.*" min="1" max="2"/>
<token min="0">хвилин</token>
<token postag_regexp="yes" postag="adj:f:v_naz.*" regexp="yes" inflected="yes">&hours;</token>
</pattern>
<message>Правильно: <suggestion>за <match no="2" postag_regexp="yes" postag="numr:p:v_naz.*"/> <match no="3"/> <match no="4"/></suggestion></message>
<suggestion><match no="2" postag_regexp="yes" postag="numr:p:v_naz.*"/> <match no="3"/> до <match no="4" postag_regexp="yes" postag="adj:f:v_rod.*"/></suggestion>
<example correction="за десять третя|десять до третьої"><marker>без десяти третя</marker></example>
<example correction="за двадцять хвилин третя|двадцять хвилин до третьої"><marker>без двадцяти хвилин третя</marker></example>
<example correction="за двоє хвилин сьома|двоє хвилин до сьомої"><marker>без двадцяти двох хвилин сьома</marker></example>
<example>за десять хвилин третя</example>
</rule>
<rule>
<antipattern>
<token postag_regexp="yes" postag="adj:f:v_rod.*" regexp="yes" inflected="yes">&hours;</token>
<token regexp="yes">половини|треті|чверті|частини</token>
</antipattern>
<pattern>
<token postag_regexp="yes" postag="num.*" min="1" max="2"/>
<token>хвилин</token>
<marker>
<token postag_regexp="yes" postag="adj:f:v_rod.*" regexp="yes" inflected="yes">&hours;</token>
</marker>
</pattern>
<!-- TODO: use java code to get previous hour?? -->
<message>Правильно: <suggestion>по [<match no="3" postag_regexp="yes" postag="adj:f:v_mis.*"/> - 1 година]</suggestion></message>
<suggestion>на <match no="3" postag_regexp="yes" postag="adj:f:v_zna.*"/></suggestion>
<example correction="по [третій - 1 година]|на третю">п'ять хвилин <marker>третьої</marker></example>
<example correction="по [дев'ятій - 1 година]|на дев'яту">5 хвилин <marker>дев'ятої</marker></example>
<example correction="по [сьомій - 1 година]|на сьому">двадцять п'ять хвилин <marker>сьомої</marker></example>
<example>п'ять хвилин по восьмій</example>
<example>п'ять хвилин на дев'яту</example>
<example>11 хвилин другої половини зустрічі</example>
<example>11 хвилин сьомої частини</example>
</rule>
</rulegroup>
<rulegroup name="Пасивний предикат або пасивний атрибут (ev. апозиція) з інструменталем дієвої особи" id="PASSIVE_PREDICATE">
<rule>
<pattern>
<token postag_regexp="yes" postag="noun.*v_zna.*|adj:n:v_zna:&pron:dem"/>
<marker>
<token postag_regexp="yes" postag="verb:impers.*">
<exception regexp="yes">визнано|названо|призначено|.*обрано|обумовлено|.*укомплектовано|зумовлено</exception>
</token>
<token postag_regexp="yes" postag="adj.*v_oru.*" min="0" max="2">
<exception regexp="yes">тим|таким</exception>
</token>
<token postag_regexp="yes" postag="noun.*v_oru.*:anim.*|.*v_oru.*pron:pers.*">
<exception negate_pos="yes" postag_regexp="yes" postag="noun.*v_oru.*:anim.*|.*v_oru.*pron:pers.*"/>
<exception postag_regexp="yes" postag="<(adv|insert)>"/>
<exception regexp="yes">тим|таким|персоною|днями|цими</exception>
</token>
<!-- TODO: особа-діяч може бути не лише :anim
<token postag_regexp="yes" postag="noun.*v_oru.*"/>
-->
</marker>
</pattern>
<message>Невластива мові конструкція: пасивний предикат</message>
<url>http://kurylo.wikidot.com/3-nevlastyva-ukrainskii-movi-konstruktsiia:pasyvnyi-predykat</url>
<example>Користувача авторизовано.</example>
<example>Листа написано Келлі.</example>
<example>Справу порушено за фактом.</example>
<example>Наказ підписано синьою ручкою.</example>
<example>церковні терміни використано тією мірою.</example>
<example>це викликано тим, що</example>
<example>його обрано президентом</example>
<example>документ виписано таким чином</example>
<example>Яку роль відведено Ульянченко</example>
<example correction="">Справу <marker>порушено прокурором</marker>.</example>
<example correction="">Справу <marker>порушено генеральним прокурором</marker>.</example>
<example correction="">Це <marker>зроблено шановним академіком</marker>.</example>
<example correction="">Громадянство <marker>отримано ним</marker> законно.</example>
<!-- TODO: див. вище
<example correction="">Справу <marker>порушено судом</marker></example>
<example type="incorrect">Справу <marker>порушено міським судом</marker></example>
-->
<example correction="">Користувача <marker>авторизовано адміністратором</marker>.</example>
<!--
<example correction="">Все <marker>зроблено самими учасниками</marker></example>
<example correction="">Потепління <marker>ускладнено нашою недолугою діяльністю</marker></example>
-->
</rule>
</rulegroup>
<!--
<rulegroup name="Узгодженість" id="CONISTENCY">
<rule>
<pattern>
<unify negate="yes">
<feature id="gender"></feature>
<feature id="number"></feature>
<feature id="case"></feature>
<token postag_regexp="yes" postag="adj:.*"></token>
<token postag_regexp="yes" postag="noun:.*"></token>
</unify>
</pattern>
<message>Неузгоджений рід/число/відмінок</message>
<example>Синя яхта</example>
<example>Гарні вірші</example>
<example type="incorrect"><marker>Синій яхта</marker>.</example>
</rule>
</rulegroup>
-->
<!--
<rulegroup name="Узгодженість відмінку" id="CONISTENCY_VIDM_1">
<rule>
<pattern>
<token postag="prep:rv_rod"></token>
<token postag_regexp="yes" postag="(noun|adj):v_[^r].*"></token>
</pattern>
<message>Прийменник вимагає родового відмінку <suggestion>\2</suggestion></message>
<example>Для відтінку.</example>
<example>Для синього відтінку.</example>
<example type="incorrect"><marker>Для відтінок</marker>.</example>
</rule>
</rulegroup>
-->
<!--
<rulegroup name="Узгодженість роду" id="CONISTENCY_GENDER">
<rule>
<pattern>
<token postag_regexp="yes" postag="adj:m:.*">
<exception postag_regexp="yes" postag="adj:[^m]:.*"/>
</token>
<token postag_regexp="yes" postag="noun:[^m]:.*">
<exception postag_regexp="yes" postag="noun:m:.*"/>
</token>
</pattern>
<message>Неузгодженість роду</message>
<example>абонентське абонування</example>
<example>холодне серце</example>
<example>холодним вітром</example>
<example>холодним серцем</example>
<example type="incorrect"><marker>абонентський абонування</marker>.</example>
<example type="incorrect"><marker>холодним водою</marker>.</example>
</rule>
</rulegroup>
-->
</category>
<category name="Логічні помилки">
<rulegroup id="INVALID_DATE" name="Неправильна дата, наприклад '31 лютого 2014'">
<rule>
<pattern>
<marker>
<token>31</token>
<token regexp="yes">квітень|квітня|кві|червень|червня|вересень|вересня|вер|листопад|листопада|лис</token>
</marker>
</pattern>
<message>Місяць \2 має лише 30 днів.</message>
<example correction="">Це трапилося <marker>31 листопада</marker> 2014 р.</example>
<example>Це трапилося <marker>30 листопада</marker> 2014 р.</example>
</rule>
<rule>
<pattern>
<marker>
<token regexp="yes">3[01]</token>
<token regexp="yes">лютий|лютого|лют</token>
</marker>
</pattern>
<message>Лютий має 28 днів або 29 днів у переступному році.</message>
<example correction="">Це трапилося <marker>30 лютого</marker> 2014 р.</example>
<example>Це трапилося <marker>28 лютого</marker> 2014 р.</example>
</rule>
</rulegroup>
<rule id="YEAR_20001" name="Забагато нулів в номері року">
<pattern>
<token regexp="yes">&months;|рік</token>
<token regexp="yes">200\d\d</token>
</pattern>
<message>Можливо <suggestion><match no="1"/> <match no="2" regexp_match="200" regexp_replace="20"/></suggestion>?</message>
<short>Помилка друку?</short>
<example>Мою поїздку запланували на травень 2014 р.</example>
<example correction="травень 2014">Мою поїздку запланували на <marker>травень 20014</marker> р.</example>
</rule>
<rulegroup id="DATE_WEEKDAY1" name="День тижня не відповідає даті">
<!-- "понеділок, 7 жовтня 2014" -->
<rule>
<pattern>
<token regexp="yes">&weekdays;</token>
<token>,</token>
<token regexp="yes">\d\d?</token>
<token regexp="yes">&months;|&abbrevMonths;</token>
<token regexp="yes">\d\d\d\d</token>
</pattern>
<filter class="org.languagetool.rules.uk.DateCheckFilter" args="year:\5 month:\4 day:\3 weekDay:\1"/>
<message>Днем тижня \3 \4 \5 є не \1, а {realDay}.</message>
<example correction="">Конференція відбудеться в <marker>понеділок, 7 жовтня 2014</marker> р.</example>
<example correction="">Конференція відбудеться в <marker>понеділок, 7 жов 2014</marker> р.</example>
<example>Конференція відбудеться у вівторок, 7 жовтня 2014 р.</example>
<example>Конференція відбудеться у вівторок, 7 жов 2014 р.</example>
</rule>
</rulegroup>
<rule id="WORD_REPEAT" name="Повторення слова">
<pattern>
<token>пів</token>
<token postag_regexp="yes" postag="adj:f:v_rod.*" regexp="yes" inflected="yes">&hours;</token>
</pattern>
<message>Правильно: <suggestion>(о) пів на <match no="2" postag_regexp="yes" postag="adj:f:v_zna.*"/></suggestion></message>
<suggestion>(о) пів до <match no="2" postag_regexp="yes" postag="adj:f:v_rod.*"/></suggestion>
<example correction="(о) пів на першу|(о) пів до першої"><marker>пів першої</marker> приїхав і він</example>
<example>пів на першу приїхав і він</example>
</rule>
</category>
</rules>