org.languagetool.rules.uk.grammar-grammar.xml Maven / Gradle / Ivy
The newest version!
<?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 "перший|другий|третій|четвертий|п'ятий|шостий|сьомий|восьмий|дев'ятий|десятий|одинадцятий|дванадцятий|тринадцятий|чотирнадцятий|п'ятнадцятий|шістнадцятий|сімнадцятий|вісімнадцятий|дев'ятнадцятий"> <!ENTITY punct_std "[,.:;!?…/()\[\]"«»„“”–—-]|[.!?]{2,3}"> <!ENTITY punct_dash "[–—-]"> <!ENTITY punct_quote "["«»„“”]"> <!ENTITY punct_quote_left "["«„“”]"> ]> <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 id="GRAMMAR" name="Граматика"> <!-- group: дієслова --> <rule id="PREP_BEFORE_VERB" name="Прийменник перед дієсловом"> <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.*|noninfl:&(p|i).*|SENT_END|PARA_END" /> </token> </pattern> <message>Прийменник \1 перед дієсловом <suggestion>\2</suggestion></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>Їм треба їхати.</example> <example>Їм треба в'їхати.</example> <example>Просто взяти.</example> <example>Справедливості заради скажемо</example> <example>Справедливості заради хочеться зауважити</example> <example>Просто неба.</example> <example>Це більше задля годиться</example> <example>задля годиться</example> <example>не залишається нічого іншого, крім чекати.</example> <example>Наїхали на Мела Гібсона</example> <example>О покладіть мені квіти</example> <!-- <example>заради скажемо</example> --> <example>кількість захворювань на гепатит В зменшилась у вісім разів.</example> <example>О слався, о слався, сміливцю...</example> </rule> <rulegroup id="MODAL_WORD" name="Узгодження з модальними словами"> <rule> <antipattern> <token regexp="yes">чим|як|скільки|тільки</token> <token inflected="yes">можна</token> </antipattern> <pattern> <token regexp="yes">варто|годі|можна|треба|повинно <exception scope="previous" regexp="yes">кого</exception> </token> <token regexp="yes" min="0">було(-би?)?|буде</token> <token regexp="yes" min="0">би?</token> <token min="0">не</token> <marker> <token postag_regexp="yes" postag="verb.*"> <exception postag_regexp="yes" postag="verb.*:inf.*"/> <exception regexp="yes">було(-би?)?|буде</exception> <exception negate_pos="yes" postag_regexp="yes" postag="verb.*|noninfl:&(i|p).*|SENT_END|PARA_END"/> </token> </marker> </pattern> <message>Дієслово після модального слова має йти інфінітивом: <suggestion><match no="5" postag_regexp="yes" postag="verb.*:inf(?!.*short).*"/></suggestion></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>Повинен їхати</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">чим|як|скільки|тільки|наскільки</token> <token inflected="yes" regexp="yes">з?могти</token> </antipattern> <!-- TODO: можливо, треба додати «мала» у словник, як noun? --> <antipattern> <token>мала</token> <!-- TODO: for some reason fails "Та мала виявилася неговіркою." <token regexp="yes" min="0">би?</token> --> <token min="0">не</token> <token postag_regexp="yes" postag="verb.*?(past:f|pres:s:3|futr:s:3).*"/> </antipattern> <antipattern> <token regexp="yes">мав|міг|мусив</token> <token regexp="yes">був|було</token> </antipattern> <antipattern> <token regexp="yes">мали|могли|мусили</token> <token regexp="yes">бул[ио]</token> </antipattern> <pattern> <token inflected="yes" regexp="yes" postag_regexp="yes" postag="verb.*">мати|мусити|могти|змогти <exception regexp="yes">(може|мати|мало)(-би?)?</exception> </token> <token regexp="yes" min="0">би?</token> <token min="0">не</token> <marker> <token postag_regexp="yes" postag="verb.*"> <exception postag_regexp="yes" postag="verb.*:inf.*"/> <exception negate_pos="yes" postag_regexp="yes" postag="verb.*|SENT_END|PARA_END"/> <!-- <exception inflected="yes">бути</exception> --> </token> </marker> </pattern> <message>Дієслово після модального слова має йти інфінітивом: <suggestion><match no="4" postag_regexp="yes" postag="verb.*:inf(?!.*short).*"/></suggestion></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> <example>мав був додому вертати</example> <example>Та мала виявилася неговіркою.</example> <example>Мала не прокинулася навіть тоді</example> <example>Мав було розказати і про свою біду</example> <example>дівчата, що мали були утікати</example> </rule> <rule> <pattern> <!-- |братися|старатися --> <token regexp="yes" inflected="yes">бажати|благати <exception postag_regexp="yes" postag="(advp|insert).*"/> <exception scope="previous" regexp="yes">кого(-би?)?</exception> </token> <token regexp="yes" min="0">би?</token> <token min="0">не</token> <marker> <token postag_regexp="yes" postag="verb.*"> <exception postag_regexp="yes" postag="verb.*:(inf|past:n|futr:s:3).*"/> <exception negate_pos="yes" postag_regexp="yes" postag="verb.*|SENT_END|PARA_END"/> <exception inflected="yes" postag_regexp="yes" postag="verb:imperf:(past|futr).*">бути</exception> </token> </marker> </pattern> <message>Дієслово після модального слова має йти інфінітивом: <suggestion><match no="4" postag_regexp="yes" postag="verb.*:inf(?!.*short).*"/></suggestion></message> <example correction="працювати">Вони не бажали <marker>працювали</marker>.</example> <example correction="стріляти">Вони благали не <marker>стрілятимуть</marker>.</example> <!-- TODO: <example correction="розбудити">старався не <marker>розбудить</marker>.</example> --> <example>братися не хочуть</example> <example>багато старатися не доведеться</example> </rule> <rule> <pattern> <token inflected="yes" postag_regexp="yes" postag="adj:.:v_naz.*">повинний</token> <token regexp="yes" min="0">би?</token> <token inflected="yes" postag_regexp="yes" postag="verb:imperf:(past|futr).*" min="0">бути</token> <token min="0">не</token> <marker> <token postag_regexp="yes" postag="verb.*"> <exception postag_regexp="yes" postag="verb.*:inf.*"/> <exception negate_pos="yes" postag_regexp="yes" postag="verb.*|SENT_END|PARA_END"/> <exception inflected="yes" postag_regexp="yes" postag="verb:imperf:(past|futr).*">бути</exception> </token> </marker> </pattern> <message>Дієслово після модального слова має йти інфінітивом: <suggestion><match no="5" postag_regexp="yes" postag="verb.*:inf(?!.*short).*"/></suggestion></message> <example correction="писати">Повинен <marker>писатиме</marker>.</example> <example correction="плакати">Повинна не <marker>плакатиме</marker>.</example> <example correction="писати">Повинен би був <marker>писатиме</marker>.</example> <example>Повинен їхати</example> <example>І вони на всьому готовому живуть.</example> <!-- verb:inf:coll not in default dictionary <example>суспільство повинно довірять не лише програмі дій</example> --> </rule> </rulegroup> <rulegroup id="nemaye_v_rod" name="Немає з р.в."> <rule> <pattern> <token regexp="yes">немає?</token> <token postag_regexp="yes" postag="adj:m:v_rod.*" min="0"/> <marker> <token postag_regexp="yes" postag="noun:inanim:m:v_dav.*" regexp="yes">.+[ую] <exception postag_regexp="yes" postag="noun:.*?(v_rod|pron|numr|prop).*"/> <exception negate_pos="yes" postag_regexp="yes" postag="noun.*|.*_END"/> </token> </marker> </pattern> <message>Слово, пов'язане з «немає», має стояти в родовому відмінку</message> <suggestion><match no="3" postag_regexp="yes" postag="(noun:inanim:m:)v_...(.*)" postag_replace="$1v_rod$2.*"/></suggestion> <example correction="гаража">Там немає <marker>гаражу</marker>.</example> <example correction="графіка">Там немає жодного <marker>графіку</marker>.</example> <example>немає чим відвернути увагу</example> <example>значить білка немає та імунна система</example> <example>його немає другу добу</example> <example>немає перед ким</example> <example>немає Сергію виходу</example> </rule> <rule> <antipattern> <token regexp="yes">немає?</token> <token postag_regexp="yes" postag="(noun:inanim|adj):.:v_rod.*"/> </antipattern> <pattern> <marker> <token postag_regexp="yes" postag="noun:inanim:m:v_dav.*" regexp="yes">.+[ую] <exception postag_regexp="yes" postag="noun:.*?(v_rod|pron|numr|prop).*"/> <exception negate_pos="yes" postag_regexp="yes" postag="noun.*|.*_END"/> <exception scope="previous" postag_regexp="yes" postag="prep.*"/> </token> </marker> <token regexp="yes">немає? <!-- exception via next/postag_regexp does not work :( - need antipattern <exception scope="next" postag_regexp="yes" postag="noun:inanim:.:v_rod.*"/> --> </token> </pattern> <message>Слово, пов'язане з «немає», має стояти в родовому відмінку</message> <suggestion><match no="1" postag_regexp="yes" postag="(noun:inanim:m:)v_...(.*)" postag_replace="$1v_rod$2.*"/></suggestion> <example correction="предмета">Такого <marker>предмету</marker> немає.</example> <example>рейсів на кубу немає</example> <example>комітету немає резону сподіватися</example> <example>що комітету немає кому довірити</example> <example>У найповнішому медичному довіднику немає такої хвороби</example> <!-- TODO: <example>загрози паводку немає</example> --> </rule> </rulegroup> <rulegroup id="VONO_IMPERF" name="Воно + безособова форма"> <rule> <pattern> <token>воно</token> <token min="0">не</token> <token postag_regexp="yes" postag="verb:.*:impers.*"> <exception negate_pos="yes" postag_regexp="yes" postag="verb:.*:impers.*|SENT_END|PARA_END"/> </token> </pattern> <message>Неправильна конструкція (наз. відм + безос. форма дієслова)</message> <suggestion>його <match no="2"/> <match no="3"/></suggestion> <suggestion><match no="1"/> <match no="2"/> <match no="3" regexp_match="(.*)о" regexp_replace="$1е"/></suggestion> <example correction="його зафіксовано|воно зафіксоване">І так <marker>воно зафіксовано</marker> в законі.</example> <example correction="його не пов'язано|воно не пов'язане">І так <marker>воно не пов'язано</marker> з подією.</example> <example>воно приховано існувало багато років</example> </rule> <rule> <pattern> <token>воно</token> <token min="0" postag_regexp="yes" postag="adv(?!p).*"> <exception negate_pos="yes" postag_regexp="yes" postag="adv(?!p).*"/> </token> <token postag_regexp="yes" postag="verb:.*:impers.*"> <exception negate_pos="yes" postag_regexp="yes" postag="verb:.*:impers.*|SENT_END|PARA_END"/> </token> </pattern> <message>Неправильна конструкція (наз. відм + безос. форма дієслова)</message> <suggestion>його <match no="2"/> <match no="3"/></suggestion> <suggestion><match no="1"/> <match no="2"/> <match no="3" regexp_match="(.*)о" regexp_replace="$1е"/></suggestion> <example correction="його тимчасово відкладено|воно тимчасово відкладене">І <marker>воно тимчасово відкладено</marker>.</example> <example>воно приховано існувало багато років</example> </rule> <rule> <antipattern> <token>все</token> <token>решта</token> </antipattern> <pattern> <token>решта</token> <token min="0">не</token> <token postag_regexp="yes" postag="verb:.*:impers.*"> <exception negate_pos="yes" postag_regexp="yes" postag="verb:.*:impers.*|SENT_END|PARA_END"/> </token> </pattern> <message>Неправильна конструкція (наз. відм. + безос. форма дієслова)</message> <suggestion>решту <match no="2"/> <match no="3"/></suggestion> <suggestion><match no="1"/> <match no="2"/> <match no="3" regexp_match="(.*)о" regexp_replace="$1а"/></suggestion> <example correction="решту зафіксовано|решта зафіксована">А <marker>решта зафіксовано</marker> в законі.</example> <example>все решта зафіксовано</example> </rule> <rule> <antipattern> <token>все</token> <token>решта</token> </antipattern> <pattern> <token>решта</token> <token min="0" postag_regexp="yes" postag="adv(?!p).*"> <exception negate_pos="yes" postag_regexp="yes" postag="adv(?!p).*"/> </token> <token postag_regexp="yes" postag="verb:.*:impers.*"> <exception negate_pos="yes" postag_regexp="yes" postag="verb:.*:impers.*|SENT_END|PARA_END"/> </token> </pattern> <message>Неправильна конструкція (наз. відм + безос. форма дієслова)</message> <suggestion>решту <match no="2"/> <match no="3"/></suggestion> <suggestion><match no="1"/> <match no="2"/> <match no="3" regexp_match="(.*)о" regexp_replace="$1а"/></suggestion> <example correction="решту зафіксовано|решта зафіксована">А <marker>решта зафіксовано</marker> в законі.</example> <example correction="решту швиденько зафіксовано|решта швиденько зафіксована">А <marker>решта швиденько зафіксовано</marker> в законі.</example> <example>все решта зафіксовано</example> </rule> </rulegroup> <rule id="zapytaty_dozvolu" name="Запитати і спитати дозволу"> <pattern> <marker> <token inflected="yes" regexp="yes">запитати(ся)?|запитавши</token> </marker> <token>дозволу</token> </pattern> <message>Правильно: <suggestion><match no="1" regexp_match="(?iu)запи(.*)" regexp_replace="спи$1"/></suggestion></message> <example correction="спитався"><marker>запитався</marker> дозволу</example> </rule> <rulegroup id="predyavlyaty" name="Пред'являти і подавати/заявляти/ставити"> <rule> <pattern> <marker> <token inflected="yes" regexp="yes">пред'являти|пред'явити|пред'явивши|пред'являючи</token> </marker> <token regexp="yes" min="0">би?</token> <token postag_regexp="yes" postag="adj:[mp]:v_zna(?!:ranim).*" min="0"/> <token inflected="yes" postag_regexp="yes" postag="noun:inanim:.:v_zna.*">позов</token> </pattern> <message>Правильно: <suggestion>подавати</suggestion></message> <suggestion>вчиняти</suggestion> <example correction="подавати|вчиняти">І він <marker>пред'явив</marker> позов.</example> <example correction="подавати|вчиняти">І він <marker>пред'являв</marker> би новий позов.</example> </rule> <rule> <pattern> <marker> <token inflected="yes" regexp="yes">пред'являти|пред'явити|пред'явивши|пред'являючи</token> </marker> <token regexp="yes" min="0">би?</token> <token postag_regexp="yes" postag="adj:[np]:v_zna(?!:ranim).*" min="0"/> <token inflected="yes" postag_regexp="yes" postag="noun:inanim:.:v_zna.*">посвідчення</token> </pattern> <message>Правильно: <suggestion>показувати</suggestion></message> <example correction="показувати">І він <marker>пред'явив</marker> посвідчення.</example> <example correction="показувати">І він <marker>пред'являв</marker> би нові посвідчення.</example> </rule> <rule> <pattern> <marker> <token inflected="yes" regexp="yes">пред'являти|пред'явити|пред'явивши|пред'являючи</token> </marker> <token regexp="yes" min="0">би?</token> <token postag_regexp="yes" postag="adj:[fp]:v_zna(?!:ranim).*" min="0"/> <token inflected="yes" postag_regexp="yes" postag="noun:inanim:.:v_zna.*">претензія</token> </pattern> <message>Правильно: <suggestion>заявляти</suggestion></message> <suggestion>мати</suggestion> <example correction="заявляти|мати">І він <marker>пред'явив</marker> претензії.</example> <example correction="заявляти|мати">І він <marker>пред'являв</marker> би нові претензії.</example> </rule> <rule> <pattern> <marker> <token inflected="yes" regexp="yes">пред'являти|пред'явити|пред'явивши|пред'являючи</token> </marker> <token regexp="yes" min="0">би?</token> <token postag_regexp="yes" postag="adj:[fnp]:v_zna(?!:ranim).*" min="0"/> <token inflected="yes" postag_regexp="yes" postag="noun:inanim:.:v_zna.*" regexp="yes">вимога|звинувачення|обвинувачення</token> </pattern> <message>Правильно: <suggestion>ставити</suggestion></message> <example correction="ставити">І він <marker>пред'явив</marker> вимогу.</example> <example correction="ставити">І він <marker>пред'явив</marker> нові звинувачення.</example> <example correction="ставити">І він <marker>пред'являв</marker> би нові вимоги.</example> </rule> </rulegroup> <!-- group: дієслова: керування --> <rule id="ODRUZHYTYSIA_NA" name="Одружитися на"> <pattern> <token inflected="yes" regexp="yes">одружуватися|одружитися|о?женитися|одружуючись|одружившись|о?женившись</token> <token regexp="yes" min="0">би?</token> <marker> <token>на</token> </marker> </pattern> <message>Правильно: одружитися <suggestion>з</suggestion> кимсь</message> <url>http://mova.kreschatic.kiev.ua/11.php</url> <example correction="з">Джонні Депп вирішив одружитися <marker>на</marker> Ембер Херд</example> <example>Джонні Депп вирішив одружитися з Ембер Херд</example> </rule> <rulegroup id="diyakuvaty_chomu" name="Дякувати чому" default="off"> <rule> <antipattern> <!-- <unify> <feature id="person"/> --> <token inflected="yes" regexp="yes">дякувати|подякувати <exception postag_regexp="yes" postag="verb:.*(:impr|:[12]).*"/> </token> <token postag_regexp="yes" postag="(adj|numr).*v_naz.*" min="0" max="2"/> <token postag_regexp="yes" postag="noun:.*v_naz.*"/> <!-- </unify> --> </antipattern> <!-- <antipattern> <token postag_regexp="yes" postag="noun:.*v_dav.*"/> <token inflected="yes" regexp="yes">дякувати|подякувати <exception postag_regexp="yes" postag="verb:.*(:impr|:[12]).*"/> </token> <token postag_regexp="yes" postag="adj.*v_naz.*" min="0"/> <token postag_regexp="yes" postag="noun:.*v_naz.*"/> </antipattern> --> <pattern> <token inflected="yes" regexp="yes">дякувати|подякувати</token> <token postag_regexp="yes" postag="(adj|numr).*v_zna.*" min="0" max="2"> <exception postag_regexp="yes" postag="noun:.*:v_dav.*"/> <exception regexp="yes">його|її</exception> </token> <token postag_regexp="yes" postag="noun.*v_zna.*"> <exception postag_regexp="yes" postag="noun.*:v_dav.*|.*predic.*|.*numr.*"/> <exception regexp="yes">його|її</exception> </token> </pattern> <message>Правильно: <suggestion><match no="1"/> <match no="2"/> <match no="3" postag_regexp="yes" postag="(noun.*:)v_zna(.*)" postag_replace="$1v_dav$2"/></suggestion></message> <example correction="дякує компанії">«ДТ» <marker>дякує компанію</marker> «ИнтВестДистрибьюшн».</example> <example correction="дякуватимемо директорові|дякуватимемо директору">Ми <marker>дякуватимемо директора</marker> компанії.</example> <!-- TODO: <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> <!-- handled by the next rule --> <example>подякувала його сестру</example> <example>Будемо дякувати його.</example> </rule> <rule> <pattern> <token inflected="yes" regexp="yes">дякувати|подякувати</token> <token regexp="yes">його|її</token> <token postag_regexp="yes" postag="noun.*v_zna.*"> <exception postag_regexp="yes" postag="noun.*:v_dav.*|.*predic.*|.*numr.*"/> </token> </pattern> <message>Правильно: <suggestion><match no="1"/> <match no="2"/> <match no="3" postag_regexp="yes" postag="(noun.*:)v_zna(.*)" postag_replace="$1v_dav$2"/></suggestion></message> <example correction="подякувала його сестрі"><marker>подякувала його сестру</marker>.</example> <example correction="дякувати його сміливості">Будемо <marker>дякувати його сміливість</marker>.</example> <!-- handled by the rule below --> <example>Подякувати його треба.</example> <example>Будемо дякувати його.</example> </rule> <rule> <pattern> <marker> <token inflected="yes" regexp="yes">дякувати|подякувати</token> <token regexp="yes">його|її</token> </marker> <token> <exception postag_regexp="yes" postag="noun.*(v_zna|v_dav).*"/> </token> </pattern> <message>Правильно: <suggestion><match no="1"/> <match no="2" postag_regexp="yes" postag="(noun.*:)v_zna(.*)" postag_replace="$1v_dav$2"/></suggestion></message> <example correction="подякувала йому"><marker>подякувала його</marker>.</example> <example correction="подякувати йому"><marker>подякувати його</marker> треба.</example> <example correction="подякувати йому"><marker>подякувати його</marker> вдруге.</example> <!-- handled by the rule above --> <example>Будемо дякувати його сестру.</example> </rule> </rulegroup> <rulegroup id="vybachaty_kogo" name="Вибачати кого"> <rule> <pattern> <token inflected="yes" regexp="yes">вибачати|вибачити|пробачати|пробачити</token> <unify> <feature id="gender"/> <feature id="case"/> <token postag_regexp="yes" postag="(adj|numr):.:v_zna(?!:ri).*" min="0" max="2"/> <token postag_regexp="yes" postag="noun:anim:.:v_zna.*"> <exception postag_regexp="yes" postag="noun:anim:.:v_dav.*"/> </token> </unify> </pattern> <message>Правильно: <suggestion><match no="1"/> <match no="2" postag_regexp="yes" postag="(adj.*?)(?:v_rod|v_zna)(.*)" postag_replace="$1v_dav$2"/> <match no="3" postag_regexp="yes" postag="(noun:anim:.:)(?:v_rod|v_zna)(.*)" postag_replace="$1v_dav$2"/></suggestion></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> <!-- TODO: <example correction="пробачили свому коханому"><marker>пробачила свого коханого</marker>.</example> --> <example>вибачити все йому</example> </rule> </rulegroup> <rulegroup id="NAVCHATY_CHOGO" name="Навчати чого"> <rule> <pattern> <token inflected="yes" regexp="yes">навч[иа]ти|навча(вши|ючи)|навчивши</token> <token postag_regexp="yes" postag="noun:anim.*?:v_zna.*|noun.*?v_zna.*pron:pers.*" min="0"/> <marker> <unify> <feature id="gender"/> <feature id="case"/> <token postag_regexp="yes" postag="numr:.:v_dav.*" min="0"/> <token postag_regexp="yes" postag="adj:.:v_dav.*" min="0"> <exception>їх</exception> </token> <token postag_regexp="yes" postag="noun:inanim:.:v_dav.*"> <exception postag_regexp="yes" postag="noun:.*:v_(rod|zna|oru).*|noun:anim.*:v_naz.*|adv.*"/> <!-- <exception scope="next">нікому</exception> --> <!-- не вірити --> </token> </unify> </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 correction="">навчали <marker>необхідним навикам</marker>.</example> <example correction="">Вас хтось навчив <marker>цим рухам</marker>?</example> <example correction="">навчають <marker>незнайомим словам</marker>.</example> <!-- TODO: <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> <pattern> <token inflected="yes" regexp="yes">навч[иа]ти|навча(вши|ючи)|навчивши</token> <token regexp="yes" min="0">би?</token> <token postag_regexp="yes" postag="noun:anim.*?:v_zna.*|noun.*?v_zna.*?pron:pers.*" min="0"/> <marker> <token postag_regexp="yes" postag="(noun|adj):.:v_dav.*"> <exception postag_regexp="yes" postag="noun.*?:v_rod.*"/> <exception regexp="yes">їх|його|її</exception> </token> </marker> <or> <token regexp="yes">&punct_std;</token> <token postag_regexp="yes" postag="conj.*"/> </or> </pattern> <message>Навчати чого</message> <example correction="">Мене навчили <marker>головному</marker> — бачити кінцеву мету</example> <example correction="">навчити дітей <marker>елементарному</marker> й прищепити любов</example> <example correction="">навчити дітей <marker>тому</marker>, що любов...</example> <example>а він навчив її,</example> </rule> <rule> <antipattern> <token regexp="yes">їх|його|її</token> <unify> <feature id="gender"/> <feature id="case"/> <token postag_regexp="yes" postag="adj:.:v_rod.*" min="0"/> <token postag_regexp="yes" postag="noun:inanim:.:v_rod.*"/> </unify> </antipattern> <pattern> <token inflected="yes" regexp="yes">навч[иа]ти|навча(вши|ючи)|навчивши</token> <token regexp="yes">їх|його|її</token> <marker> <token postag_regexp="yes" postag="adj:.:v_dav.*" min="0"/> <token postag_regexp="yes" postag="noun:inanim:.:v_dav.*"> <exception postag_regexp="yes" postag="noun:inanim:.:v_oru.*|adv.*"/> </token> </marker> </pattern> <message>Навчати чого</message> <example correction="">навчають її <marker>іноземним мовам</marker>.</example> <example correction="">навчити їх <marker>здоровому способу</marker> життя.</example> <example>навчають її живопису.</example> </rule> <rule> <antipattern> <token inflected="yes" regexp="yes">навч[иа]тися|навча(вши|ючи)сь|навчившись</token> <unify> <feature id="gender"/> <feature id="case"/> <token postag_regexp="yes" postag="adj:.:v_rod.*" min="0"/> <token postag_regexp="yes" postag="noun:inanim:.:v_rod.*"/> </unify> </antipattern> <pattern> <token inflected="yes" regexp="yes">навч[иа]тися|навча(вши|ючи)сь|навчившись</token> <marker> <token postag_regexp="yes" postag="numr:.:v_dav.*" min="0"> <exception postag_regexp="yes" postag="numr:.:v_naz.*"/> </token> <token postag_regexp="yes" postag="adj:.:v_dav.*" min="0" max="2"/> <token postag_regexp="yes" postag="noun:inanim:.:v_dav.*"> <exception postag_regexp="yes" postag="noun:anim:.:v_naz.*|adv.*|.*?numr.*"/> <exception scope="next" postag_regexp="yes" postag="verb.*"/> <exception scope="next" regexp="yes">нікому</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 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 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> <example>не маючи можливості навчатися самому.</example> <example>доведеться таки навчитися цим провокаціям протистояти.</example> <example>там теж навчаються тисячі студентів, які потім...</example> <example>навчитися самій робити хліб</example> <example>тут навчалася півтора року.</example> </rule> <rule> <pattern> <token inflected="yes">навчання</token> <marker> <token postag_regexp="yes" postag="adj:.:v_dav.*" min="0"/> <token postag_regexp="yes" postag="noun:inanim:.:v_dav.*"> <exception postag_regexp="yes" postag="noun:inanim:.:v_(oru|rod).*|adv.*"/> </token> </marker> </pattern> <message>Навчати чого</message> <example correction="">навчання <marker>математиці</marker>.</example> <example correction="">навчання <marker>іноземним мовам</marker>.</example> <!-- <example correction="">навчанню їх <marker>здоровому способу</marker> життя.</example> --> <example>навчання персоналу</example> </rule> </rulegroup> <rule id="HVORITY_CHYM" name="Хворіти чим замість на що"> <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_naz.*"/> <exception regexp="yes">дивом|чудом|протягом|часом|сім'ями|маленьким|дорослим</exception> </token> </marker> </pattern> <message>Хворіти вимагає конструкції з «на»</message> <suggestion>на <match no="2" postag_regexp="yes" postag="(adj:.*):v_oru(.*)" postag_replace="$1:v_zna(:r(in)?anim)?$2"/> <match no="3" postag_regexp="yes" postag="(noun:.*)v_oru(.*)" postag_replace="$1v_zna$2"/></suggestion> <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> </rule> <rule id="zaznaty_porazku" name="Зазнати/завдати поразку"> <pattern> <token regexp="yes" inflected="yes">зазнати|зазнавати|завдати|завдавати</token> <token min="0" postag_regexp="yes" postag="noun.*?v_dav.*"> <exception postag_regexp="yes" postag="adj:f:v_zna.*"/> </token> <marker> <token min="0" postag_regexp="yes" postag="adj:f:v_zna.*"/> <token>поразку</token> </marker> </pattern> <message>Правильно: <suggestion><match no="3" postag_regexp="yes" postag="adj:f:v_zna(.*)" postag_replace="adj:f:v_rod$1"/> поразки</suggestion></message> <example correction="поразки">зазнати <marker>поразку</marker>.</example> <example correction="нищівної поразки">завдав <marker>нищівну поразку</marker>.</example> <example correction="нищівної поразки">завдав йому <marker>нищівну поразку</marker>.</example> </rule> <!-- group: числівники --> <rulegroup id="CONSISTENCY_NOUN_NUMERIC_FRACTIONAL" name="Узгодженість числа іменників з дробовими числівниками"> <rule> <pattern> <token postag_regexp="yes" postag="numr:[fp].*|number"/> <token regexp="yes">десятих|десяті|сотих|соті|.*тисячних|.*тисячні|третіх|треті|четвертих|чверті|четверті</token> <marker> <token postag_regexp="yes" postag="noun:inanim:.:.*"> <exception postag_regexp="yes" postag="noun:inanim:[mfnp]:v_rod.*|.*(predic|pron).*"/> <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> <example>два десятих класи</example> <example>заради цих двох сотих треба дуже багато попрацювати</example> </rule> <rule> <pattern> <marker> <token>два</token> </marker> <token regexp="yes">десятих|сотих|.*тисячних|третіх|четвертих</token> <token regexp="yes" inflected="yes">відсоток|.*метр|секунда|мільйон|мільярд</token> </pattern> <message>Десяті, соті, тисячні тощо — жіночого роду</message> <suggestion>дві</suggestion> <!-- <suggestion><match no="1" postag_regexp="yes" postag="(numr):m(:.*)" postag_replace="$1:f$2"/></suggestion> --> <example correction="дві"><marker>два</marker> десятих відсотки</example> <example correction="дві"><marker>два</marker> третіх метра</example> <example>заради цих двох сотих треба дуже багато попрацювати</example> <example>не вистачило дві десятих секунди</example> </rule> <rule> <pattern> <marker> <token>півтора</token> </marker> <token regexp="yes">десятих|сотих|.*тисячних|третіх|четвертих</token> <token regexp="yes" inflected="yes">відсоток|.*метр|секунда|мільйон|мільярд</token> </pattern> <message>Десяті, соті, тисячні тощо — жіночого роду</message> <suggestion>півтори</suggestion> <example correction="півтори"><marker>півтора</marker> сотих секунди</example> <example>не вистачило півтора метра</example> </rule> </rulegroup> <rule id="consistency_numeric_fractional" name="Узгодженість дробових числівників"> <pattern> <token regexp="yes">дві|три|чотири</token> <marker> <token regexp="yes">десятих|сотих|тисячних|третіх|четвертих</token> </marker> </pattern> <message>Хоча чинний правопис пропонує у дробовому числівнику після два, три, чотири писати: третіх, десятих, сотих, логічніше мало би бути: треті, десяті, соті…</message> <suggestion><match no="2" postag_regexp="yes" postag="(.*):.:v_...(.*)" postag_replace="$1:p:v_naz$2"/></suggestion> <example correction="десяті">дві <marker>десятих</marker></example> <example correction="соті">три <marker>сотих</marker></example> <!-- TODO: false positive <example>перше місце, три других і чотири третіх</example> --> </rule> <rule id="consistency_numeric_fractional_2019" name="Узгодженість дробових числівників (2019)"> <pattern> <token regexp="yes">дві|три|чотири</token> <marker> <token regexp="yes">десяті|соті|тисячні|треті|четверті</token> </marker> </pattern> <message>Хоча логічніше мало би бути: треті, десяті, соті…, чинний правопис пропонує у дробовому числівнику після два, три, чотири писати: третіх, десятих, сотих,…</message> <suggestion><match no="2" postag_regexp="yes" postag="(.*):.:v_...(.*)" postag_replace="$1:p:v_rod$2"/></suggestion> <example correction="десятих">дві <marker>десяті</marker></example> <example correction="сотих">три <marker>соті</marker></example> </rule> <rulegroup id="CONSISTENCY_NOUN_NUMERIC_WHOLE" name="Узгодженість числа іменників з цілими числівниками"> <rule> <pattern> <token regexp="yes">([1-9][0-9 \u00A0]*)[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>рр.</exception> </token> </marker> </pattern> <message>Після числівника, що закінчується на 1, іменник має стояти в однині</message> <example type="incorrect">271 <marker>депутатів</marker> проголосували</example> <example type="incorrect">1 271 <marker>депутатів</marker> проголосували</example> <example type="incorrect">всього 441 <marker>рази</marker>.</example> <example type="incorrect">10931 <marker>глядачів</marker>.</example> <example>11 депутатів проголосували</example> <example>на тлі претендента 001 доходи великої родини</example> <example>27 депутатів проголосували</example> <example>проти 441 зараз.</example> <example>залишилася 781 тонна пестицидів.</example> <example>В 1999-2001 рр. він був секретарем.</example> <example>В 604-562 або 561 рр. до н.е.</example> <example>Про знеструмлення будинків 10 та 101 нас не повідомили.</example> </rule> </rulegroup> <rule name="Раза з дробовими числівниками" id="raza_with_fractions"> <antipattern> <token regexp="yes">([0-9.,—–-]+)?[0-9]+[.,][0-9]+|півтора</token> <token>раза</token> </antipattern> <antipattern> <token regexp="yes">[0-9]+[.,][0-9]+([0-9.,—–-]+)?|півтора</token> <token>раза</token> </antipattern> <antipattern> <token>половиною</token> <token>раза</token> </antipattern> <antipattern> <token>раза</token> <token min="0" regexp="yes">[ву]</token> <token regexp="yes">півтора(-.*)?</token> </antipattern> <pattern> <token>раза <exception case_sensitive="yes">Раза</exception> </token> </pattern> <message>«\1» вживаємо лише після дробових числівників</message> <suggestion>рази</suggestion> <suggestion>разів</suggestion> <suggestion>разу</suggestion> <url>https://kulturamovy.org.ua/movni-trudnoshhi/r-movni-trudnoshhi/raz/</url> <example correction="рази|разів|разу">Два <marker>раза</marker> прочитав.</example> <example>1,5 раза.</example> <example>раза півтора-два</example> <example>у 2,3–2,5 раза</example> <example>2,5–5 раза</example> <example>Юсуф Раза Гілані</example> <example>два з половиною раза</example> </rule> <!-- group: іменник: керування --> <rulegroup id="token_agreement_noun_noun" name="Узгодження: іменник-іменник"> <rule> <!-- <antipattern> <token postag_regexp="yes" postag="noun:anim:m:v_dav.*prop:fname"/> <token postag_regexp="yes" postag="noun:anim:m:v_dav.*prop:lname"/> </antipattern> --> <pattern> <token postag_regexp="yes" postag="noun.*"> <exception postag_regexp="yes" postag="adj.*|.*pron.*|verb.*|.*prop.*"/> <exception inflected="yes" regexp="yes">догода|пам'ятник|рік|інтерв'ю|коментар|допомога</exception> <!-- <exception regexp="yes">місті</exception> --> </token> <marker> <token regexp="yes" postag_regexp="yes" postag="noun:inanim:m:v_dav.*">.*[ую] <exception postag_regexp="yes" postag="noun:inanim:.:v_rod.*|adj.*|verb.*|.*(prop|alt|slang|arch).*"/> <exception postag_regexp="yes" postag="noun:anim:m:.*"/> <exception regexp="yes">ставку|плату|курку|дню|дрібку|соску|кулю|бутсу|динаміку|зморшку|тирсу|цукерку|точку|півдню</exception> </token> </marker> </pattern> <message>Можливо, має бути р.в.: <suggestion><match no="2" postag_regexp="yes" postag="(noun:inanim:m:v_)dav(.*)" postag_replace="$1rod$2"/></suggestion>?</message> <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> <example>висловив догану Вальтеру</example> <example>за цей злочин кару смертю</example> </rule> </rulegroup> <rulegroup id="NA_TAKIY_MOVI" name="На (такій) мові - (такою) мовою"> <antipattern> <token regexp="yes" inflected="yes">базуватися|базований|вихований|ґрунтуватися|заробляти|зав'язаний|зекономити|знатися|зосередитися|зупинитися|позначитися|розумітися|сфокусуватися</token> <token postag_regexp="yes" postag="noun.*?:v_dav.*" min="0"/> <token>на</token> </antipattern> <rule> <antipattern> <token>мові</token> <token regexp="yes" inflected="yes">базуватися|вихований|ґрунтуватися|заробляти|зав'язаний|зекономити|знатися|зосередитися|зупинитися|позначитися|розумітися|сфокусуватися</token> </antipattern> <pattern> <token>на</token> <token postag_regexp="yes" postag="(adj|numr):f:v_mis.*"/> <token>мові</token> </pattern> <message>Правильно: <suggestion><match no="2" postag_regexp="yes" postag="(adj|numr):f:v_mis(.*)" postag_replace="$1:f:v_oru.*"/> мовою</suggestion></message> <example correction="Китайською мовою"><marker>На китайській мові</marker>.</example> <example correction="одною мовою|однією мовою"><marker>на одній мові</marker>.</example> <example>в українській мові</example> <example>давати заробляти росіянам на українській мові</example> <example>котрий розуміється на їхній мові</example> <example>У прийнятті рішення, на якій мові зупинитися</example> </rule> <rule> <pattern> <token regexp="yes" inflected="yes">(за)?говорити|спілкуватись|балакати|розмовляти</token> <marker> <token>на</token> <!-- note: some languages we have as nouns in the dictionary but the rest are generic adj --> <token inflected="yes" postag_regexp="yes" postag="(adj|noun:inanim):f:v_mis.*" regexp="yes">українська|російська|англійська|німецька|іспанська|французька|польська</token> </marker> </pattern> <message>Правильно: <suggestion><match no="3" postag_regexp="yes" postag="(adj|noun:inanim):f:v_mis(.*)" postag_replace="$1:f:v_oru.*"/></suggestion></message> <example correction="англійською">говорив <marker>на англійській</marker>.</example> <example>в українській</example> <example>ґрунтується на німецькій</example> <example>на українській військовій базі</example> <example>на українській же військовій базі</example> </rule> <rule> <pattern> <token>на</token> <token>мові</token> <token postag_regexp="yes" postag="(adj|noun).*?v_rod.*"/> </pattern> <message>Правильно: <suggestion>мовою <match no="3"/></suggestion></message> <example correction="мовою майя">Говорили <marker>на мові майя</marker>.</example> <example correction="мовою зулуських">Говорили <marker>на мові зулуських</marker> племен.</example> </rule> <rule> <pattern> <token>на</token> <token postag_regexp="yes" postag="numr:.:v_mis.*"/> <token>мовах</token> </pattern> <message>Правильно: <suggestion><match no="2" postag_regexp="yes" postag="(numr:.:)v_mis(.*)" postag_replace="$1v_oru$2"/> мовами</suggestion></message> <example correction="двома мовами">Говорили <marker>на двох мовах</marker>.</example> </rule> </rulegroup> <rule id="na_ukraini" name="На Україні"> <pattern> <marker> <token>на</token> </marker> <token>Україні</token> </pattern> <message>Згідно з чинною нормою пишемо "в Україні", однак у фольклорних і давніших літературних творах з історичних причин вживали "на Україні".</message> <suggestion>в</suggestion> <url>https://uk.wikipedia.org/wiki/%D0%9D%D0%B0_%D0%A3%D0%BA%D1%80%D0%B0%D1%97%D0%BD%D1%96#%D0%A3%D0%BA%D1%80%D0%B0%D1%97%D0%BD%D1%81%D1%8C%D0%BA%D0%B0</url> <example correction="в"><marker>на</marker> Україні</example> </rule> <!-- group: час --> <rulegroup id="TIME" name="Час"> <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(?!.*long).*"/></suggestion></message> <suggestion>(о) пів до <match no="2" postag_regexp="yes" postag="adj:f:v_rod(?!.*long).*"/></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 regexp="yes">годині|ранку|вечора|ночі</token> </pattern> <message>Правильно: <suggestion>о</suggestion></message> <example correction="о">аж <marker>у</marker> третій годині ночі</example> <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 regexp="yes">годині|ранку|вечора|ночі</token> </pattern> <message>Правильно: <suggestion>о</suggestion></message> <example correction="о">аж <marker>у</marker> 10-й годині ночі</example> <example correction="о">аж <marker>у</marker> 10-й ранку</example> <example>аж о 5-ій годині ночі</example> </rule> <rule> <pattern> <marker> <token regexp="yes">[ву] <exception scope="previous" inflected="yes" regexp="yes">влитися|втиснути|інтервал</exception> </token> <token regexp="yes">дві|три|чотири|п'ять|шість|сім|вісім|дев'ять|десять|одинадцять|дванадцять</token> <token regexp="yes">години?</token> </marker> <token regexp="yes">годині|ранку|вечора|ночі</token> </pattern> <message>Правильно: <suggestion>о ... годині</suggestion></message> <example correction="о ... годині">аж <marker>у вісім годин</marker> ночі</example> <example>процедура вилилася в шість годин</example> <example>матимемо різницю з Європою аж у дві години</example> <example>хронометраж стрічки в чотири години</example> <example>не можна у дві години фільму втиснути</example> </rule> <rule> <pattern> <token regexp="yes">[ву]</token> <token regexp="yes">(2[0-4]|1[0-9]|[1-9]):[0-9]{2}</token> </pattern> <message>Правильно: <suggestion>о <match no="2"/></suggestion></message> <example correction="о 17:00">почнеться <marker>в 17:00</marker> за місцевим часом</example> <example>з рахунком 22:33</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="1"/> <token min="0">хвилин</token> <token postag_regexp="yes" postag="adj:f:v_naz.*" regexp="yes" inflected="yes">&hours;</token> </pattern> <message>Правильною є конструкція за + числівник у знахідному відмінку</message> <suggestion>за <match no="2" postag_regexp="yes" postag="numr:p:v_naz.*"/> <match no="3"/> <match no="4"/></suggestion> <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(?!.*long).*"/></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> <rule id="U_YEAR" name="У XXXX року"> <pattern> <token regexp="yes">[ув]</token> <token regexp="yes">[0-9]{4}</token> <token>року</token> </pattern> <message>Правильно: <suggestion><match no="1"/> <match no="2"/> році</suggestion></message> <suggestion><match no="2"/> року</suggestion> <example correction="в 2010 році|2010 року">ще <marker>в 2010 року</marker></example> <example>в 60-х роках</example> </rule> <rule id="u_svoyemu_zhyti" name="У своєму житі"> <pattern> <token regexp="yes">[ув]</token> <token regexp="yes">своєму|твоєму|моєму|її|його|їхньому|вашому|нашому|духовному|національному|соціальному|економічному</token> <marker> <token>житі</token> </marker> </pattern> <message>Можливо: <suggestion>житті</suggestion>?</message> <example correction="житті">в моєму <marker>житі</marker></example> </rule> <!-- group: сполуки --> <rulegroup id="zgidno_z" name="Згідно з"> <rule> <pattern> <token>згідно</token> <marker> <token postag_regexp="yes" postag="(noun|adj).*"/> </marker> </pattern> <message>Згідно з чим</message> <suggestion>з <match no="2" postag="((?:noun|adj).*?)v_(?:rod|dav)(.*)" postag_replace="$1v_oru$2" postag_regexp="yes"/></suggestion> <example correction="з статутом">згідно <marker>статуту</marker></example> <example correction="з теперішніми">згідно <marker>теперішніх</marker> умов</example> <example correction="з якими">згідно <marker>яких</marker></example> <example>згідно зі статутом</example> <example>згідно з правилом</example> </rule> <rule> <pattern> <token>згідно</token> <marker> <token regexp="yes">до|за</token> <token postag_regexp="yes" postag="(noun|adj).*"/> </marker> </pattern> <message>Згідно з чим</message> <suggestion>з <match no="3" postag="((?:noun|adj).*?)v_(?:rod|dav|oru)(.*)" postag_replace="$1v_oru$2" postag_regexp="yes"/></suggestion> <example correction="з статутом">згідно <marker>за статутом</marker></example> <example correction="з правилом">згідно <marker>до правила</marker></example> </rule> </rulegroup> <!-- group: керування відмінком --> <rule id="ZAVIDUVACH" name="Завідувач"> <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> <!-- group: імена і прізвища --> <rule id="IMENI_MALE_LAST_NAME" name="Ім. + чоловіче прізвище"> <pattern> <token>ім.</token> <marker> <token postag_regexp="yes" postag="noun:anim:m:v_naz.*?:lname.*"> <exception postag_regexp="yes" postag="noun:anim:m:v_rod.*?:lname.*"/> </token> </marker> </pattern> <message>Чоловіче прізвище відмінюється</message> <suggestion><match no="2" postag_regexp="yes" postag="(noun:anim:m:)v_naz(.*?:lname.*)" postag_replace="$1v_rod.*"/></suggestion> <example correction="Довженка">Кіностудія ім. <marker>Довженко</marker>.</example> </rule> <rule id="INFLECTION_MALE_LAST_NAME" name="Відмінювання чоловічих прізвищ"> <antipattern> <token postag_regexp="yes" postag="noun:anim:f.*?:fname.*"/> <token regexp="yes">і|й|та</token> <token postag_regexp="yes" postag="noun:anim:m.*?:fname.*"/> <token postag_regexp="yes" postag="noun:anim:.*?:lname.*"/> </antipattern> <pattern> <token postag_regexp="yes" postag="noun:anim:m.*:fname.*"> <exception postag_regexp="yes" postag="noun.*:m:v_(naz|kly).*:fname.*"/> <exception postag_regexp="yes" postag="noun.*:f.*:fname.*"/> <exception regexp="yes">Тому|Ніколи|Владика</exception> <exception postag_regexp="yes" postag="noun.*:prop(?!:fname).*"/> <exception scope="previous" inflected="yes" regexp="yes">король|отець|патріарх|святий</exception> </token> <marker> <token postag_regexp="yes" postag="noun.*:m:v_naz.*:lname.*"> <exception postag_regexp="yes" postag="noun.*:m:v_[^n].*:lname.*"/> <exception postag_regexp="yes" postag="noun.*:m:v_naz.*:fname.*"/> <!-- <exception postag_regexp="yes" postag="noun.*:prop(?!:lname).*"/> --> </token> </marker> </pattern> <message>Чоловіче прізвище відмінюється разом з іменем</message> <!-- <suggestion><match no="1" postag_regexp="yes" postag="(noun.*:m.*:)fname(.*)" postag_replace="$1lname.*">\2</match></suggestion> --> <url>http://pravopys.kiev.ua/pravopys.aspx?SectionID=1765</url> <example correction="">Бульвар Тараса <marker>Шевченко</marker></example> <example correction="">прийшов до Андрія <marker>Громико</marker> секретар.</example> <example correction="">прийшов до Петра <marker>Порошенко</marker> секретар.</example> <!-- TODO: <example correction="">Дякую Олегу <marker>Ляшко</marker> за те</example> --> <example>Прийшов Тарас Шевченко</example> <example>Картина Жені Шевченко</example> <example>Тому Путін цілком здатен...</example> <example>Ніколи Ковтуненко не був паном</example> <example>У Києві Шлемкевич працював секретарем</example> <example>Ну, будь здоровий, Семене Гурко!</example> <example>агент Сергія Шандор Варга</example> <example>Син Павла Мартин теж став бурмистром</example> <example>після смерті короля Данила Галич почав утрачати свою велич</example> <example>...на Донеччину Московського Патріарха Кирила Янукович ходив за ним по п’ятах</example> <example>спитав у отця Харитона Казанцев</example> <example>у соборі Святого Петра Ющенко</example> <!-- Лишаємо для іншого правила --> <example>Подружжю Наталі та Сергія Гедзь судилося вписати свої імена...</example> <example>виготовлені Людмилою і Мирославом Куць</example> <example>Людмили та Юрія Миськів</example> <example>Владика Ґудзяк</example> <!-- Важко розрізнити на граматичному рівні <example>Прибіг до Єремії Тишкевич</example> <example>охолодив Арсена Метелиця</example> <example>де колись приймав Андрія Донець</example> <example>За нею увійшов Андрій, за Андрієм Рибалко</example> <example>У партії з Анандом Пономарьов розіграв</example> <example>як підвів Миколу Марчук</example> <example>під наглядом Петера Йоханссон став</example> --> </rule> <rulegroup id="PLURAL_LAST_NAME" name="Множина прізвищ"> <rule> <antipattern> <token inflected="yes" postag_regexp="yes" postag="noun:inanim:n:.*">подружжя</token> <token postag_regexp="yes" postag="noun:anim:f:v_rod.*:lname.*"/> <token regexp="yes">і|й|та</token> <token postag_regexp="yes" postag="noun:anim:m:v_rod.*:lname.*"/> </antipattern> <pattern> <token inflected="yes" postag_regexp="yes" postag="noun:inanim:n:.*">подружжя</token> <marker> <token postag_regexp="yes" postag="noun:anim:[fm]:v_naz:prop:lname.*"> <exception postag_regexp="yes" postag="noun:anim:p:v_rod:prop:lname.*"/> </token> </marker> </pattern> <message>Після «подружжя» прізвище має стояти в родовому відмінку множини</message> <suggestion><match no="2" postag_regexp="yes" postag="(noun:anim:)[fm]:v_...(?::nv)?(:prop:lname.*)" postag_replace="$1p:v_rod(:nv)?$2"/></suggestion> <example correction="Обам">Подружжя <marker>Обама</marker>.</example> <example correction="Кличків">Подружжя <marker>Кличко</marker>.</example> <!-- <example correction="Гіббсів">Подружжя <marker>Гіббс</marker>.</example> --> <example>Подружжя Бушів.</example> <example>Подружжя Роше.</example> <example>подружжя Цвігун і Ковальчука</example> </rule> <rule> <antipattern> <token inflected="yes" postag_regexp="yes" postag="noun:anim:p:.*">брат</token> <token postag_regexp="yes" postag="noun:anim:m:v_naz.*:fname.*"/> <token regexp="yes">і|й|та</token> <token postag_regexp="yes" postag="noun:anim:m:v_naz.*:fname.*"/> </antipattern> <pattern> <token inflected="yes" postag_regexp="yes" postag="noun:anim:p:.*">брат</token> <marker> <token postag_regexp="yes" postag="noun:anim:m:v_naz:prop:lname.*"> <exception postag_regexp="yes" postag="noun:anim:p:v_rod:prop:lname.*"/> </token> </marker> </pattern> <message>Після «брати́» прізвище має стояти в множині</message> <!-- TODO: figure out how to inflect 2nd token by the 1st inflection <suggestion><match no="2" postag_regexp="yes" postag="(noun:anim:)m:v_...(:prop:lname.*)" postag_replace="$1p:v_naz$2"/></suggestion> --> <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> </rule> </rulegroup> <!-- group: самий, кращий... --> <rulegroup id="SAMYI_WITH_ADJ" name="Самий з прикметниками"> <!-- TODO: якщо робити це правило загальним фальшивих помилок більше ніж правильних позначень, тож поки що обмежимося лише двома більш-менш стабільними випадками --> <antipattern> <token regexp="yes">як|що|де|куди|хто</token> <token>саме</token> </antipattern> <antipattern> <token inflected="yes">великий</token> <token inflected="yes">князь</token> </antipattern> <antipattern> <unify> <feature id="gender"/> <feature id="case"/> <token regexp="yes" inflected="yes">той|такий|цей|отой</token> <token inflected="yes">самий</token> </unify> </antipattern> <!-- can't unify over part же so need 1 more antipattern --> <antipattern> <token regexp="yes" inflected="yes">той|такий|цей|отой</token> <token regexp="yes">же?</token> <token inflected="yes">самий</token> </antipattern> <!-- comps --> <rule> <pattern> <unify> <feature id="gender"/> <feature id="case"/> <token inflected="yes">самий</token> <token postag_regexp="yes" postag="adj.*:comps.*"> <exception regexp="yes">(що|як)най.*</exception> </token> </unify> </pattern> <message>Замість «самий» + прикметник найвищого ступеня треба вживати якнай-, щонай-</message> <suggestion>як<match no="2"/></suggestion> <suggestion>що<match no="2"/></suggestion> <suggestion>щояк<match no="2"/></suggestion> <example correction="Якнайкращий|Щонайкращий|Щоякнайкращий"><marker>Самий найкращий</marker>.</example> <example correction="Якнайгірша|Щонайгірша|Щоякнайгірша"><marker>Сама найгірша</marker>.</example> <!-- handled by other rules in this group --> <example>самий перший</example> <example>повторювати те саме щонайменше нудно</example> <example>і, що саме найцікавіше,</example> <example>і куди саме найоптимальніше їхати</example> <example>вирішують, як саме найкраще заохотити</example> <example>Не можу сказати, де саме найкраще сприймали</example> <example>— на ту саму найчисельнішу фракцію</example> <example>увімкніть радіо на той самий найтихіший рівень гучності</example> <example>Йдеться про той самий найдешевший рослинний жир</example> <example>до самого великого князя</example> </rule> <!-- compr --> <rule> <pattern> <unify> <feature id="gender"/> <feature id="case"/> <token inflected="yes">самий </token> <token postag_regexp="yes" postag="adj.*?:compc.*"> <exception postag_regexp="yes" postag="verb.*"></exception> <exception case_sensitive="yes" regexp="yes">[А-ЯІЇЄҐ].*</exception> </token> </unify> </pattern> <message>Замість «самий» + прикметник треба вживати найвищий ступінь</message> <suggestion>най<match no="2"/></suggestion> <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> <!-- handled by other rules in this group --> <example>Самий найкращий</example> <example>Самий добрий</example> </rule> <!-- compb --> <rule> <antipattern> <token inflected="yes">вищий</token> <token inflected="yes">навчальний</token> </antipattern> <pattern> <unify> <feature id="gender"/> <feature id="case"/> <token>самий </token> <token postag_regexp="yes" postag="adj.*?:v_(naz|zna).*?:compb.*"> <exception postag_regexp="yes" postag="verb.*"></exception> <exception case_sensitive="yes" regexp="yes">[А-ЯІЇЄҐ].*</exception> <exception postag_regexp="yes" postag="noun:anim:p:.*" regexp="yes" inflected="yes">хворий|учений|постраждалий</exception> </token> </unify> </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>Самий цвіт</example> <example>Саме такий</example> <example>той самий страшний сон</example> <example>лише самих економічних санкцій</example> <example>і куди саме добре поїхати</example> <example>вирішують, як саме заохотити</example> <example>де саме смачно поїсти</example> <example>та й самі хворі</example> <example>активність самих учених, які</example> <example>у скільки обійдеться цей самий гарантований контроль</example> <example>докласти такий же самий хороший підзаконний акт</example> <example>самим вищим навчальним закладом</example> <!-- handled by other rules in this group --> <example>Самий найкращий</example> <example>Самий кращий</example> </rule> <!-- саме краще, що в нас є --> <rule> <pattern> <unify> <feature id="gender"/> <feature id="case"/> <marker> <token inflected="yes">самий </token> <token postag_regexp="yes" postag="adj.*?:comp[bc].*"> <exception postag_regexp="yes" postag="verb.*"></exception> <exception>дуже</exception> <exception case_sensitive="yes" regexp="yes">[А-ЯІЇЄҐ].*</exception> <exception postag_regexp="yes" postag="noun:anim:p:.*" regexp="yes" inflected="yes">хворий|учений|постраждалий</exception> </token> </marker> </unify> <token>,</token> <token regexp="yes" inflected="yes">що|який</token> </pattern> <message>Замість «самий» + прикметник треба вживати найвищий ступінь</message> <example correction=""><marker>Саме краще</marker>, що в нас є.</example> <example correction=""><marker>Сама краща</marker>, яка в нас є.</example> <example>суцільнозерновий хліб, посипаний насінням, такий самий малий.</example> <example>і самий цвіт, що знайти його важко</example> <example>Той самий учений, що описав</example> <example>і самих хворих, які нібито не дотримувалися</example> <example>ті ж самі вищі суди вирішать, що та чи інша справа</example> </rule> <!-- саме краще — дітям --> <rule> <pattern> <unify> <feature id="gender"/> <feature id="case"/> <marker> <token inflected="yes">самий <!-- <exception scope="previous" regexp="yes" inflected="yes">який|лише</exception> --> </token> <token postag_regexp="yes" postag="adj.*?:comp[bc].*"> <exception postag_regexp="yes" postag="verb.*"></exception> <exception regexp="yes">дуже|рада</exception> </token> </marker> </unify> <token regexp="yes">&punct_dash;</token> </pattern> <message>Замість «самий» + прикметник треба вживати найвищий ступінь</message> <example correction=""><marker>Саме краще</marker> — ливарний цех.</example> <example>Самий цвіт —</example> <example>Сама прийшла — сама пішла</example> <example>Саме такий — зелений.</example> <example>Саме вони — партизани, були початком.</example> <example>голова ради обирається на п'ять років, а сама рада — на чотири</example> </rule> <!-- самий перший --> <rule> <pattern> <unify> <feature id="gender"/> <feature id="case"/> <token inflected="yes">самий </token> <token inflected="yes" regexp="yes">перший|найперший <exception case_sensitive="yes" regexp="yes">[А-ЯІЇЄҐ].*</exception> </token> </unify> </pattern> <message>Замість «самий перший» треба вживати найвищий ступінь: <suggestion>найперший</suggestion></message> <example correction="Найперший"><marker>Самий перший</marker>.</example> <example>самі першими втікали</example> <example>Та сама Перша кінна армія</example> <example>На самому Першому Національному пояснили</example> </rule> </rulegroup> <rulegroup id="kraschiy_vs_naikraschiy_with_ne" name="Кращий і найкращий (З не)"> <antipattern> <token inflected="yes">кращий</token> <token min="0">,</token> <token regexp="yes">за|від|ніж|аніж|як|од</token> </antipattern> <rule> <antipattern> <token>чи</token> <token>не</token> <token>краще</token> </antipattern> <pattern> <token regexp="yes">далеко|чи</token> <token>не</token> <marker> <token inflected="yes">кращий</token> </marker> </pattern> <message>Коли мається на увазі найвищий ступінь порівняння, слід вживати <suggestion>найкращий</suggestion></message> <example correction="найкращий">Кіно — чи не <marker>кращий</marker> інструмент</example> <example correction="найкращий">... була далеко не <marker>кращим</marker> способом...</example> <example>був не кращий, ніж сталінський</example> <example>Гітлерівський режим нічим не кращий сталінського</example> <example>Він — не кращий і не гірший</example> <example>на мою думку, далеко не кращий за них.</example> <example>І чи не краще було б зробити інакше.</example> <example>Виявився чи не кращим, ніж цього року.</example> </rule> <rule> <antipattern> <token>кращий</token> <token>і</token> <token>не</token> <token>гірший</token> </antipattern> <pattern> <token regexp="yes">&punct_dash;|це|зараз</token> <token>не</token> <marker> <token>кращий</token> </marker> </pattern> <message>Коли мається на увазі найвищий ступінь порівняння, слід вживати <suggestion>найкращий</suggestion></message> <example correction="найкращий">блокування — не <marker>кращий</marker> варіант</example> <example correction="найкращий">Зараз не <marker>кращий</marker> період для прийняття важливих рішень.</example> <example>Він — не кращий і не гірший</example> <!-- TODO: <example>— Та й у мене — не кращий, — зітхнула Явдоха.</example> <example> емоції, як відомо, не кращий порадник</example> --> </rule> <rule> <antipattern> <token inflected="yes">кращий</token> <token>і</token> <token>не</token> <token inflected="yes">гірший</token> </antipattern> <pattern> <token>був</token> <token>не</token> <marker> <token inflected="yes">кращий</token> </marker> </pattern> <message>Коли мається на увазі найвищий ступінь порівняння, слід вживати <suggestion>найкращий</suggestion></message> <example correction="найкращий">Це був не <marker>кращий</marker> матч Роналдо</example> <example>був не кращий, ніж сталінський</example> <example>був не кращим і не гіршим</example> </rule> <rule> <pattern> <token>не</token> <marker> <token inflected="yes">кращий</token> </marker> <token inflected="yes" regexp="yes">час|період|вихід|спосіб|бік</token> </pattern> <message>Коли мається на увазі найвищий ступінь порівняння, слід вживати <suggestion>найкращий</suggestion></message> <example correction="найкращий">Зараз не <marker>кращий</marker> час починати справу.</example> </rule> </rulegroup> <rulegroup id="kraschiy_vs_naikraschiy_without_ne" name="Кращий і найкращий (без не)"> <antipattern> <token>не</token> <token inflected="yes">кращий</token> </antipattern> <antipattern> <token>кращий</token> <token max="3"/> <token postag_regexp="yes" postag="adj:.:v_naz:compc.*"/> </antipattern> <antipattern> <token regexp="yes">значно|набагато|суттєво|трохи|куди|дещо|якомога|чим|тим|ще</token> <!-- <token postag_regexp="yes" postag="adv(:.*|$)"> <exception postag_regexp="yes" postag="conj.*"/> <exception postag_regexp="yes" postag=".*?:dem.*"/> <exception regexp="yes">натомість|взагалі</exception> </token> --> <token>кращий</token> </antipattern> <rule> <pattern> <marker> <token>кращий</token> </marker> <token regexp="yes">з|із|поміж|серед</token> </pattern> <message>Коли мається на увазі найвищий ступінь порівняння, слід вживати <suggestion>найкращий</suggestion></message> <example correction="найкращий"><marker>кращий</marker> з людей</example> <example correction="найкращий"><marker>кращий</marker> із світів</example> <example correction="найкращий"><marker>кращий</marker> із кращих</example> </rule> <rule> <pattern> <token regexp="yes">серед|поміж|з|із</token> <token postag_regexp="yes" postag="noun:.*?:v_rod(?!.*?pron).*"/> <marker> <token>кращий</token> </marker> </pattern> <message>Коли мається на увазі найвищий ступінь порівняння, слід вживати <suggestion>найкращий</suggestion></message> <example correction="найкращий">серед жінок <marker>кращий</marker> результат</example> <example>який із них кращий, який дешевший</example> <example>який із них кращий і дешевший</example> </rule> <rule> <pattern> <token regexp="yes">за|як</token> <marker> <token>кращий</token> </marker> <token postag_regexp="yes" postag="adj.*?:v_naz.*" min="0"/> <token postag_regexp="yes" postag="noun:.*?:v_naz.*"/> </pattern> <message>Коли мається на увазі найвищий ступінь порівняння, слід вживати <suggestion>найкращий</suggestion></message> <example correction="найкращий">за <marker>кращий</marker> короткий сценарій</example> <example correction="найкращий">як <marker>кращий</marker> виконавець</example> <example>розраховувати на кращий результат</example> <example>за кращий город, за багатше князівство</example> </rule> <rule> <pattern> <token inflected="yes" regexp="yes">конкурс|звання|змагання|тендер|претендувати</token> <token regexp="yes" min="0">[:—–-]</token> <token>на</token> <marker> <token>кращий</token> </marker> </pattern> <message>Коли мається на увазі найвищий ступінь порівняння, слід вживати <suggestion>найкращий</suggestion></message> <example correction="найкращий">конкурс на <marker>кращий</marker> фільм</example> <example correction="найкращий">організовує конкурси: на <marker>кращий</marker> твір про гімназію</example> </rule> <rule> <pattern> <token postag_regexp="yes" postag="noun:.*?:v_naz.*"/> <token regexp="yes">&punct_dash;</token> <marker> <token>кращий</token> </marker> <token postag_regexp="yes" postag="adj:.:v_naz.*" min="0"/> <token postag_regexp="yes" postag="noun:.*?:v_naz.*"/> </pattern> <message>Коли мається на увазі найвищий ступінь порівняння, слід вживати <suggestion>найкращий</suggestion></message> <example correction="найкращий">Сергій Стаховський — <marker>кращий</marker> тенісист</example> <example correction="найкращий">книжка - <marker>кращий</marker> подарунок</example> <example correction="найкращий">собака - <marker>кращий</marker> друг людини</example> <example>якийсь інший світ – кращий світ, вільніший</example> </rule> <rule> <pattern> <marker> <token>кращий <exception scope="previous" regexp="yes">&punct_quote_left;</exception> </token> </marker> <token postag_regexp="yes" postag="adj:m:v_naz.*" min="0"/> <token postag_regexp="yes" postag="noun:anim:m:v_naz.*"/> <token postag_regexp="yes" postag="adj:.:v_rod.*" min="0"/> <token postag_regexp="yes" postag="noun:.*?:v_rod.*"/> </pattern> <message>Коли мається на увазі найвищий ступінь порівняння, слід вживати <suggestion>найкращий</suggestion></message> <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 regexp="yes">&punct_quote_left;</token> <marker> <token spacebefore="no">кращий</token> </marker> <token postag_regexp="yes" postag="adj:m:v_naz.*" min="0"/> <token postag_regexp="yes" postag="noun:.*?:m:v_naz.*"/> <token postag_regexp="yes" postag="noun:.*?:v_rod.*"/> </pattern> <message>Коли мається на увазі найвищий ступінь порівняння, слід вживати <suggestion>найкращий</suggestion></message> <example correction="найкращий">«<marker>кращий</marker> оперний спектакль року»</example> <example correction="найкращий">«<marker>кращий</marker> господар року»</example> <example>кращий стан здоров'я</example> </rule> <rule> <pattern> <marker> <token>кращий</token> </marker> <token postag_regexp="yes" postag="adj:m:v_naz.*" min="0"/> <token postag_regexp="yes" postag="noun:inanim:m:v_naz.*"/> <or> <token postag_regexp="yes" postag="noun:inanim:.:v_rod.*" regexp="yes">світу|міста|країни|планети|області|сезону|турніру|матчу|року|місяця|сторіччя|століття</token> <token postag_regexp="yes" postag="noun:inanim:.:v_rod.*?geo.*"/> </or> </pattern> <message>Коли мається на увазі найвищий ступінь порівняння, слід вживати <suggestion>найкращий</suggestion></message> <example correction="найкращий"><marker>кращий</marker> час сезону</example> <example correction="найкращий"><marker>кращий</marker> документальний фільм року</example> <example correction="найкращий"><marker>кращий</marker> фестиваль Європи</example> <!-- TODO: <example correction="найкращий"><marker>кращий</marker> фільм країн</example> --> <example>розвернути в кращий бік життя</example> <example>забезпечити для себе кращий розподіл ресурсів</example> <example>швидший і кращий розвиток економіки</example> </rule> <rule> <pattern> <marker> <token>кращий</token> </marker> <token postag_regexp="yes" postag="adj:.:v_naz.*" min="0"/> <token postag_regexp="yes" postag="noun:anim:.:v_naz.*"/> <token regexp="yes">у|в|на</token> <or> <token postag_regexp="yes" postag="noun:inanim:.:v_mis.*" regexp="yes">світі|місті|країні|планеті|області|сезоні|турнірі|матчі|році|сторіччі|столітті|сфері</token> <token postag_regexp="yes" postag="noun:inanim:.:v_mis.*?geo.*"/> </or> </pattern> <message>Коли мається на увазі найвищий ступінь порівняння, слід вживати <suggestion>найкращий</suggestion></message> <example correction="найкращий"><marker>кращий</marker> захисник в Україні</example> <example>розвернути в кращий бік на сході</example> </rule> <rule> <pattern> <marker> <token>кращий</token> </marker> <token postag_regexp="yes" postag="adj:.:v_naz.*" min="0"/> <token postag_regexp="yes" postag="noun:inanim:.:v_naz.*"/> <token regexp="yes">у|в|на</token> <token postag_regexp="yes" postag="noun:inanim:.:v_mis.*" regexp="yes">світі|місті|країні|планеті|області|сезоні|турнірі|матчі|році|місяці|сторіччі|столітті|сфері|історії</token> <!-- <or> <token postag_regexp="yes" postag="noun:inanim:.:v_mis.*" regexp="yes">світі|місті|країні|планеті|області|сезоні|турнірі|матчі|році|сторіччі|столітті|сфері</token> <token postag_regexp="yes" postag="noun:inanim:.:v_mis.*?geo.*"/> </or> --> </pattern> <message>Коли мається на увазі найвищий ступінь порівняння, слід вживати <suggestion>найкращий</suggestion></message> <!-- TODO: <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> <example>Попри кращий розвиток в Україні чоловічого баскетболу</example> </rule> <rule> <pattern> <marker> <token regexp="yes">кращ(ий|і)</token> </marker> <token postag_regexp="yes" postag="adj:[mp]:v_naz.*" min="0"/> <token regexp="yes" inflected="yes" postag_regexp="yes" postag="noun.*:[mp]:v_naz.*">друг|бомбардир|спортсмен|бестселер|представник|винахід|учень</token> </pattern> <message>Коли мається на увазі найвищий ступінь порівняння, слід вживати <suggestion>найкращий</suggestion></message> <example correction="найкращий">наш <marker>кращий</marker> друг людини - собака</example> <example correction="найкращий">натомість <marker>кращий</marker> бомбардир чемпіонату</example> <example correction="найкращий">і <marker>кращий</marker> український бомбардир</example> <example correction="найкращий">і <marker>кращі</marker> учні</example> <!-- TODO: exception that maybe not worth complicating the rules <example> щедріший, гостинніший і взагалі кращий друг</example> --> </rule> <rule> <pattern> <marker> <token>кращий</token> </marker> <token>світовий</token> <token>досвід</token> </pattern> <message>Коли мається на увазі найвищий ступінь порівняння, слід вживати <suggestion>найкращий</suggestion></message> <example correction="найкращий">спираючись на <marker>кращий</marker> світовий досвід</example> </rule> <rule> <pattern> <token regexp="yes">свій|мій|наш|твій</token> <marker> <token>кращий</token> </marker> <token postag_regexp="yes" postag="adj.*?:v_naz.*" min="0"/> <token postag_regexp="yes" postag="noun:.*?:v_naz.*"/> </pattern> <message>Коли мається на увазі найвищий ступінь порівняння, слід вживати <suggestion>найкращий</suggestion></message> <example correction="найкращий">наш <marker>кращий</marker> друг людини - собака</example> </rule> <rule> <pattern> <marker> <token>кращий</token> </marker> <token>захист</token> <token regexp="yes">&punct_dash;</token> </pattern> <message>Коли мається на увазі найвищий ступінь порівняння, слід вживати <suggestion>найкращий</suggestion></message> <example correction="найкращий"><marker>кращий</marker> захист - це напад</example> </rule> <rule> <pattern> <marker> <token>кращий</token> </marker> <token>тому</token> <token postag_regexp="yes" postag="noun:.*?:v_naz.*"/> </pattern> <message>Коли мається на увазі найвищий ступінь порівняння, слід вживати <suggestion>найкращий</suggestion></message> <example correction="найкращий">це — <marker>кращий</marker> тому доказ</example> </rule> </rulegroup> <rulegroup id="BIL_MASC" name="Біль - ч.р."> <rule> <pattern> <token postag_regexp="yes" postag="adj:f:.*"> <exception postag_regexp="yes" postag="adj:m:.*"/> <exception postag_regexp="yes" postag="(part|conj).*"/> <exception regexp="yes" inflected="yes">мережаний|невинний|тонкий|сам</exception> </token> <token inflected="yes" postag_regexp="yes" postag="noun:inanim:f:.*">біль <exception>білі</exception> <exception case_sensitive="yes">Біль</exception> </token> </pattern> <message>Іменник біль - чоловічого роду</message> <suggestion><match no="1" postag_regexp="yes" postag="(adj):f:(v_...)(.*)" postag_replace="$1:m:$2(:rinanim)?$3"/> <match no="2" postag_regexp="yes" postag="(noun:inanim):f:(.*):xp2" postag_replace="$1:m:$2:xp1"/></suggestion> <example correction="сильний біль"><marker>сильна біль</marker></example> <example correction="сильний біль"><marker>сильну біль</marker></example> <example>Стояла біла, як біль, так перелякалася.</example> <example>Лице біллю білували.</example> <example>увесь їхній біль</example> <example>пошибає душу мою болем</example> <example>Помітивши гіркоту на стиснутих вустах Арсена та біль у його почервонілих очах</example> <example>можу сама біль втамувати</example> <example>Христина Біль</example> </rule> <!-- забагато фальшивих: * як могла, терпіла біль * заробила головний біль і витратила * якщо біль спровокувала банальна перевтома <rule> <pattern> <token postag_regexp="yes" postag="verb.*:f(:.*|$)"/> <token>біль</token> </pattern> <message>Іменник біль - чоловічого роду</message> <suggestion><match no="1" postag_regexp="yes" postag="(verb.*):f(.*)" postag_replace="$1:m$2"/> <match no="2" postag_regexp="yes" postag="(noun:inanim):f:(.*)" postag_replace="$1:m:$2"/></suggestion> <example correction="почавсь біль|почався біль"><marker>почалася біль</marker></example> <example>собі завдала болю</example> </rule> <rule> <pattern> <token>біль</token> <token postag_regexp="yes" postag="(part|adv).*" min="0"/> <token postag_regexp="yes" postag="verb.*:f(:.*|$)"/> </pattern> <message>Іменник біль - чоловічого роду</message> <suggestion><match no="1" postag_regexp="yes" postag="(noun:inanim):f:(.*)" postag_replace="$1:m:$2"/> <match no="2"/> <match no="3" postag_regexp="yes" postag="(verb.*):f(.*)" postag_replace="$1:m$2"/></suggestion> <example correction="біль почавсь|біль почався"><marker>біль почалася</marker> раптово</example> <example correction="біль не проходив"><marker>біль не проходила</marker></example> </rule> --> </rulegroup> <!-- group: кличний --> <rule id="pryvit_z_klychnym" name="привіт з кличним"> <pattern> <token>привіт</token> <token min="0">,</token> <token postag_regexp="yes" postag="noun:anim:.:v_naz:prop:fname.*"> <exception postag_regexp="yes" postag="noun:anim:.:v_kly:prop:fname.*"></exception> </token> </pattern> <message>При звертанні треба вживати кличний відмінок</message> <suggestion>\1, <match no="3" postag_regexp="yes" postag="(noun:anim:.:)v_naz(:prop:fname.*)" postag_replace="$1v_kly$2"/></suggestion> <example correction="Привіт, Василю"><marker>Привіт Василь</marker>!</example> </rule> <rulegroup id="KLYCHNYI_AND_IMPERATIVE" name="Кличний та наказова форма" default="on"> <rule> <pattern> <token postag_regexp="yes" postag="noun.*:v_kly.*"> <exception negate_pos="yes" postag_regexp="yes" postag="noun.*:v_kly.*"/> </token> <token postag_regexp="yes" postag="part.*" min="0"/> <token postag_regexp="yes" postag="verb.*:impr.*"> <exception negate_pos="yes" postag_regexp="yes" postag="verb.*impr.*|SENT_END|PARA_END"/> </token> </pattern> <message>Можливо, пропущена кома після кличного?</message> <suggestion><match no="1"/>, <match no="2"/> <match no="3"/></suggestion> <example correction="Олено, поклич"><marker>Олено поклич</marker> тата.</example> <example correction="Олено, не розлий"><marker>Олено не розлий</marker> молоко.</example> </rule> <!-- забагато фальшивих спрацьовувань, напр. * Отоді, куме, заживем, * <rule> <pattern> <token postag_regexp="yes" postag="noun.*:v_kly.*"> <exception negate_pos="yes" postag_regexp="yes" postag="noun.*:v_kly.*"/> <exception postag_regexp="yes" postag="(part|conj|prep).*"/> </token> <token>,</token> <token postag_regexp="yes" postag="verb.*:futr:p:1.*"> <exception postag_regexp="yes" postag="verb.*impr.*"/> </token> </pattern> <message>Можливо, дієслово має стояти у наказовій формі?</message> <suggestion><match no="1"/>, <match no="3" postag_regexp="yes" postag="verb.*impr:p:1.*"/></suggestion> <!- <example correction="Олено, підім|Олено, підімо"><marker>Олено, пішли</marker> додому.</example> -> <example correction="Ірмо, повернімось|Ірмо, повернімося|Ірмо, повернімся">Пані <marker>Ірмо, повернемося</marker> до театру.</example> <example>Яким, вибачте, фанатичним бажанням</example> </rule> --> <rule> <pattern> <!-- <or> <token postag="SENT_START"/> <token regexp="yes">[!?:;,…"«“„\(\)\[\]/–—-]</token> </or> --> <token postag="SENT_START"/> <marker> <token postag_regexp="yes" postag="noun:anim(:.:v_naz|:f:v_zna|:m:v_dav).*"> <exception postag_regexp="yes" postag="noun:anim:.*:v_kly.*"/> <exception postag_regexp="yes" postag="noun.*(lname).*|.*pron.*|(intj|part).*"/> <exception regexp="yes">.*-.*|типу|чорт</exception> <!-- <exception>ласка</exception> <exception regexp="yes">честь|милість|високість</exception> --> </token> <token>,</token> <token postag_regexp="yes" postag="verb.*:impr(:s:2|:p:1).*"> <exception negate_pos="yes" postag_regexp="yes" postag="verb.*impr.*|SENT_END|PARA_END"/> <exception postag_regexp="yes" postag="verb.*insert.*"/> <!--TODO: якщо знай, бач.., не виділені комою, вони не отримують тегу insert після зняття омонімії --> <exception case_sensitive="yes" regexp="yes">.*\.|[А-ЯІЇЄҐ].*|знай|бач|бачте|скажімо|дякуй|дякуйте</exception> </token> </marker> </pattern> <message>Можливо, іменник має бути у кличному відмінку?</message> <suggestion><match no="2" postag_regexp="yes" postag="(noun:anim:.:)(v_naz|v_zna|v_dav)(.*)" postag_replace="$1v_kly$3"/>, <match no="4"/></suggestion> <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>... (Conservative Party) конституція, див. Хартія свободи...</example> <example>будь ласка, скажіть мені</example> <example>Ваша честь, дивіться.</example> <example>та я феміністка, відчепіться</example> <example>Я, повірте, навіть не знав</example> <!-- dynamic tagger does not work on v_kly yet --> <example>Екс-вкладники, готуйтеся до нових черг!</example> <example>Гей, збирайтеся, панове молодці</example> <example>Христя, знай, озиралася з повозки</example> <example>Яким, вибачте, фанатичним бажанням</example> <example>Іпатій Потій (1541–1613) — ...</example> <example>Дівчина знай опускала туди</example> <example>Чорт забирай!</example> <example>Бобові перетріть крізь сито</example> <example>Рибу з'їж сам</example> <example>Настю відправ додому</example> </rule> </rulegroup> <!-- group: сполучуваність --> <rulegroup id="SEKTOR_GAZA" name="Сектор Газа"> <rule> <pattern> <token>сектор</token> <token case_sensitive="yes">Газа</token> </pattern> <message>Правильно: <suggestion>Сектор Гази</suggestion></message> <example correction="Сектор Гази">Приїхав в <marker>Сектор Газа</marker> в лютому.</example> <example correction="Сектор Гази">Приїхав в <marker>сектор Газа</marker> в лютому.</example> </rule> <rule> <pattern case_sensitive="yes"> <token>сектор</token> <token>Гази</token> </pattern> <message>Правильно: <suggestion>Сектор Гази</suggestion></message> <example correction="Сектор Гази">Приїхав в <marker>сектор Гази</marker> в лютому.</example> </rule> </rulegroup> <!-- group: неправильно вжите слово --> <rule id="pozhezhni" name="Пожежні"> <antipattern> <unify> <feature id="gender"/> <feature id="case"/> <token inflected="yes" postag_regexp="yes" postag="adj:p:.*">пожежний</token> <token postag_regexp="yes" postag="noun:inanim:p:.*"/> </unify> </antipattern> <pattern> <marker> <token inflected="yes" postag_regexp="yes" postag="adj:p:.*">пожежний</token> </marker> </pattern> <message>У значенні іменника правильно вживати <suggestion>пожежники</suggestion></message> <example correction="пожежники">приїхали <marker>пожежні</marker>.</example> <example>пожежні вежі</example> <example>пожежних випадків</example> <!-- <example>пожежних інспекторів</example> --> </rule> <rulegroup id="stypin_vs_stepin" name="Ступінь і степінь"> <rule> <pattern> <token inflected="yes" regexp="yes">науковий|вчений</token> <marker> <token>степінь</token> </marker> </pattern> <message>Правильно: <suggestion>ступінь</suggestion></message> <example correction="ступінь">Науковий <marker>степінь</marker></example> <example>Піднесення до степеня</example> <example>Науковий ступінь</example> </rule> </rulegroup> <rule id="vchenyi_stupin" name="Вчений ступінь"> <pattern> <marker> <token inflected='yes' regexp='yes'>[ву]чений</token> </marker> <token inflected='yes' regexp="yes">ступінь|степінь</token> </pattern> <message>Правильно: <suggestion>науковий</suggestion></message> <example correction="науковий"><marker>вчений</marker> ступінь</example> </rule> <rulegroup id="graty_vs_hraty" name="Грати/ґрати"> <rule> <pattern> <token postag_regexp="yes" postag="prep.*"> <exception postag_regexp="yes" postag="adv.*"/> <exception>проти</exception> </token> <marker> <token inflected="yes" postag_regexp="yes" postag="noun:inanim.*">грати</token> </marker> </pattern> <message>Можливо, замість дієслова «грати» тут має бути іменник «ґрати»?</message> <suggestion><match no="2" regexp_match="(?iu)г([а-яіїєґ]+)" regexp_replace="ґ$1"/></suggestion> <example correction="ґрати">кинути за <marker>грати</marker>.</example> <example correction="ґратами">сидіти за <marker>гратами</marker>.</example> <example>щоб просто грати</example> <example>щоб добре грати</example> </rule> <rule> <pattern> <unify> <feature id="gender"/> <feature id="case"/> <token regexp="yes" inflected="yes">тюремний|залізний|дерев'яний|холодний|захисний|міцний|кований</token> <marker> <token inflected="yes" postag_regexp="yes" postag="noun:inanim.*">грати</token> </marker> </unify> </pattern> <message>Можливо, замість дієслова «грати» тут має бути іменник «ґрати»?</message> <suggestion><match no="2" regexp_match="(?iu)г([а-яіїєґ]+)" regexp_replace="ґ$1"/></suggestion> <example correction="ґратами">за залізними <marker>гратами</marker>.</example> <example>на такому рівні грати</example> </rule> </rulegroup> <rule id="postupok_vchynok" name="Поступок і вчинок"> <pattern> <token regexp="yes" inflected="yes" postag_regexp="yes" postag="adj:[mp]:.*">(не)?хороший|поганий|героїчний</token> <marker> <token regexp="yes">поступ(ок|ка|ку|ком|ки|ків|кам|ками|ках)</token> </marker> </pattern> <message>Правильно: <suggestion>вчинок</suggestion>.</message> <example correction="вчинок">поганий <marker>поступок</marker>.</example> </rule> <rulegroup id="doklad_vs_dopovid" name="Доклад і доповідь"> <rule> <pattern> <token inflected="yes">доклад <exception postag_regexp="yes" postag="verb.*"/> </token> </pattern> <message>Правильно: (коли йдеться про реферат чи виступ) <suggestion>доповідь</suggestion></message> <example correction="доповідь">Вона виступила з <marker>докладом</marker> на конференції.</example> <example>решту доклади своїми</example> <!-- TODO: <example correction="доповідь">про це свідчать доклади різних міжнародних правозахисних організацій</example> --> </rule> <rule> <pattern> <token postag_regexp="yes" postag="prep.*"/> <marker> <token inflected="yes">доклад</token> </marker> </pattern> <message>Правильно: (коли йдеться про реферат чи виступ) <suggestion>доповідь</suggestion></message> <example correction="доповідь">Ілюстрація до <marker>докладу</marker> на конференції.</example> <example>решту доклади своїми</example> </rule> </rulegroup> <rule id="nezalezhno_vin" name="Незалежно він"> <pattern> <token regexp="yes">(не)?залежно</token> <marker> <token>він</token> </marker> </pattern> <message>Можливо: <suggestion>від</suggestion>?</message> <example correction="від">і залежно <marker>він</marker> результату</example> </rule> <rulegroup id="pamiatnyk_chogo" name="Пам'ятник чого і чому"> <rule> <pattern> <token inflected="yes">пам'ятник</token> <marker> <token postag_regexp="yes" postag="noun:anim:.:v_rod.*prop:lname.*"> <exception postag_regexp="yes" postag="noun:anim:.:v_dav.*prop:lname.*"/> </token> </marker> </pattern> <message>Правильно: <suggestion><match no="2" postag_regexp="yes" postag="(noun:anim:.:)v_rod(.*prop:lname.*)" postag_replace="$1v_dav$2"/></suggestion></message> <example correction="Франкові|Франку">Пам'ятник <marker>Франка</marker></example> <example>пам'ятник Роналду</example> </rule> <rule> <pattern> <token inflected="yes">пам'ятник</token> <marker> <token postag_regexp="yes" postag="noun:anim:.:v_rod.*prop:fname.*"> <exception postag_regexp="yes" postag="noun:anim:.:v_dav.*prop:fname.*"/> </token> <token postag_regexp="yes" postag="noun:anim:.:v_rod.*prop:lname.*"> <exception postag_regexp="yes" postag="noun:anim:.:v_dav.*prop:lname.*"/> </token> </marker> </pattern> <message>Правильно: <suggestion><match no="2" postag_regexp="yes" postag="(noun:anim:.:)v_rod(.*prop:fname.*)" postag_replace="$1v_dav$2"/> <match no="3" postag_regexp="yes" postag="(noun:anim:.:)v_rod(.*prop:lname.*)" postag_replace="$1v_dav$2"/></suggestion></message> <example correction="Іванові Франкові|Іванові Франку|Івану Франкові|Івану Франку">Пам'ятник <marker>Івана Франка</marker></example> <example>пам'ятник Кріштіану Роналду</example> </rule> </rulegroup> <rule id="NEDILYA_VS_TYZHDEN" name="Неділя і тиждень"> <pattern> <!-- TODO: <token postag_regexp="yes" postag="num.*"> <exception inflected="yes">один</exception></token> --> <token regexp="yes">дві|три|чотири|п'ять|шість|сім|вісім|дев'ять|десять</token> <marker> <token inflected="yes">неділя</token> </marker> </pattern> <message>Правильно: <suggestion>тижні</suggestion></message> <example correction="тижні">Це зайняло нам дві <marker>неділі</marker></example> <example>Це зайняло нам два тижні.</example> <example>провів одну неділю без внучки</example> </rule> <rule id="KORYSNA_META" name="Корисна мета"> <pattern> <marker> <token inflected="yes">корисний</token> </marker> <token inflected="yes" regexp="yes">мета|міркування|мотив|інтерес|ціль</token> </pattern> <message>Правильно: <suggestion><match no="1" postag_regexp="yes" postag="(adj.*):comp." postag_replace="$1">корисливий</match></suggestion></message> <example correction="корисливою">використати ділянку з якоюсь <marker>корисною</marker> метою</example> </rule> <rulegroup id="VIROGIDNIST_VS_YMOVIRNIST" name="Вірогідність і ймовірність"> <rule> <pattern> <or> <token inflected="yes" regexp="yes">(не)?великий|(не)?високий|малий|низький|(най)?більший|(най)?вищий|(най)?менший|(най)?нижчий|гарантований</token> <token inflected="yes" regexp="yes">збільшувати|збільшити|підвищувати|підвищити</token> </or> <marker> <token inflected="yes">вірогідність</token> </marker> </pattern> <message>Правильно: <suggestion>ймовірність</suggestion></message> <example correction="ймовірність">Є висока <marker>вірогідність</marker> дощу.</example> <example>Є висока ймовірність дощу.</example> </rule> <rule> <pattern> <token>з</token> <marker> <token>вірогідністю</token> </marker> <token postag_regexp="yes" postag="num.*"/> </pattern> <message>Правильно: <suggestion>ймовірністю</suggestion></message> <example correction="ймовірністю">З <marker>вірогідністю</marker> 90%.</example> <example>Грається з вірогідністю.</example> </rule> <rule> <pattern> <token inflected="yes" regexp="yes">(най)?вірогідніший</token> </pattern> <message>Правильно: <suggestion>(най)імовірніший</suggestion></message> <example correction="(най)імовірніший">Це сценарій <marker>вірогіднішій</marker>.</example> </rule> <rule> <pattern> <token>найбільш</token> <marker> <token>вірогідно</token> </marker> </pattern> <message>Правильно: <suggestion>ймовірно</suggestion></message> <example correction="ймовірно">Це найбільш <marker>вірогідно</marker>.</example> </rule> </rulegroup> <rulegroup id="hiena_heena" name="Гієна та геєна"> <rule> <pattern> <token regexp="yes" inflected="yes">в?огненний|в?огняний|вічний|лютий|в|у</token> <marker> <token inflected="yes">гієна</token> </marker> </pattern> <message>Можливо: <suggestion>геєна</suggestion>?</message> <example correction="геєна">в люту <marker>гієну</marker>.</example> </rule> <rule> <pattern> <marker> <token inflected="yes">гієна</token> </marker> <token regexp="yes" inflected="yes">в?огненний|в?огняний|вічний|лютий</token> </pattern> <message>Можливо: <suggestion>геєна</suggestion>?</message> <example correction="геєна">в <marker>гієну</marker> люту.</example> </rule> <rule> <pattern> <token regexp="yes" inflected="yes">смердючий|голодний|дикий|підступний|виття|зграя|сміх|сміятися</token> <marker> <token inflected="yes">геєна</token> </marker> </pattern> <message>Можливо: <suggestion>гієна</suggestion>?</message> <example correction="гієна">сміх <marker>геєни</marker>.</example> </rule> <rule> <pattern> <marker> <token inflected="yes">геєна</token> </marker> <token regexp="yes" inflected="yes">смердючий|голодний|дикий|підступний|сміятися|вити</token> </pattern> <message>Можливо: <suggestion>гієна</suggestion>?</message> <example correction="гієна"><marker>геєна</marker> сміється.</example> </rule> </rulegroup> <rule id="vybraty_predstavnyka" name="Вибрати і обрати"> <pattern> <marker> <token inflected="yes" regexp="yes">виби?рати|вибираючи|виби?равши</token> </marker> <unify> <feature id="gender"/> <feature id="case"/> <token postag_regexp="yes" postag="adj:.:v_zna:ranim.*" min="0"/> <token inflected="yes" regexp="yes" postag_regexp="yes" postag="noun:.*v_zna.*">представник|президент|депутат</token> </unify> </pattern> <message>Правильно: <suggestion>обрати</suggestion>.</message> <suggestion>обирати</suggestion> <example correction="обрати|обирати"><marker>вибирали</marker> представників.</example> </rule> <!-- <rulegroup id="TON_VS_TONN" name="Тон/тонн" default="off"> <rule> <pattern> <token postag_regexp="yes" postag="num.*"/> <marker> <token>тон</token> </marker> </pattern> <message>Правильно: <suggestion>тонн</suggestion></message> <example correction="тонн">1600 <marker>тон</marker></example> <example correction="тонн">п'ять <marker>тон</marker></example> </rule> <rule> <pattern> - <token regexp="yes" inflected="yes">п'ять|шість|сім|вісім|дев'ять|нуль|десять|двадцять|тридцять|сорок|.*десят|дев'яносто|сто|двісті|триста|чотириста|п'ятсот|шістсот|сімсот|вісімсот|сотня|тисяча|мільйон|мільярд|тис.|млн|млрд|([0-9-]*[05-9]|[0-9-]+11) - <or> <token regexp="yes" inflected="yes">тис\.|млн|млрд</token> <token postag_regexp="yes" postag=".*num.*"> <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> <exception regexp="yes">один|перший</exception> </token> </or> <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 correction="тонн">п'ять <marker>тон</marker></example> <example correction="тонн">72-78 <marker>тон</marker></example> <example correction="тонн">кілька <marker>тон</marker></example> <example>лише один тон</example> <example>10 тонн</example> <example>10 тонів</example> </rule> </rulegroup> --> <rule id="VYSHIDNYI_VYHIDNYI" name="Висхідний і вихідний"> <pattern> <marker> <token inflected="yes">висхідний</token> </marker> <token inflected="yes" regexp="yes">позиція|положення|пункт|точка</token> </pattern> <message>Ви мали на увазі: <suggestion>вихідний</suggestion>?</message> <example correction="вихідний">Поверталися на <marker>висхідну</marker> позицію.</example> </rule> <rule id="HRYVNA_HRYVNIA" name="Гривна і гривня"> <antipattern> <token inflected="yes" regexp="yes" skip="-1">браслет|золотавий|плести|прикраса|прикрашати|прикасити|прикрашений|шийний|шия</token> <token inflected="yes">гривна <exception inflected="yes">гривня</exception> </token> </antipattern> <antipattern> <token inflected="yes" skip="-1">гривна <exception inflected="yes">гривня</exception> </token> <token inflected="yes" regexp="yes">браслет|плести|прикраса|прикрашати|прикасити|прикрашений|шийний|шия</token> </antipattern> <pattern> <marker> <token inflected="yes">гривна <exception inflected="yes">гривня</exception> </token> </marker> </pattern> <message>На позначення грошової одиниці вживаємо: <suggestion><match no="1" postag_regexp="yes" postag="noun:inanim:.*">гривня</match></suggestion></message> <example correction="гривень">Заробив 7 млн <marker>гривен</marker>.</example> <example>девальвація гривні</example> <example>На шиї він мав золоту гривну, на пальцях – золоті персні</example> <example>«гривна» — це давня нашийна прикраса.</example> </rule> <rulegroup id="BEZVISTI_VS_BEZVISTY" name="Безвісті/безвісти"> <rule> <pattern> <token regexp="yes">зник.*|пропа[вл].*</token> <marker> <token>безвісті</token> </marker> </pattern> <message>Правильно: <suggestion>безвісти</suggestion></message> <example correction="безвісти">зниклих <marker>безвісті</marker>.</example> <example correction="безвісти">пропали <marker>безвісті</marker>.</example> </rule> <rule> <pattern> <marker> <token>безвісті</token> </marker> <token regexp="yes">зник.*|пропа[вл].*</token> </pattern> <message>Правильно: <suggestion>безвісти</suggestion></message> <example correction="безвісти"><marker>безвісті</marker> зникли.</example> </rule> <rule> <pattern> <token regexp="yes">зник.*|пропа[вл].*</token> <marker> <token>без</token> <token regexp="yes">віст[іи]</token> </marker> </pattern> <message>Правильно: <suggestion>безвісти</suggestion></message> <example correction="безвісти">зниклих <marker>без вісті</marker>.</example> <example correction="безвісти">пропали <marker>без вісти</marker>.</example> </rule> <rule> <pattern> <marker> <token>без</token> <token regexp="yes">віст[іи]</token> </marker> <token regexp="yes">зник.*|пропа[вл].*</token> </pattern> <message>Правильно: <suggestion>безвісти</suggestion></message> <example correction="безвісти"><marker>без вісті</marker> зникли.</example> <example correction="безвісти"><marker>без вісти</marker> зникли.</example> </rule> </rulegroup> <rule id="bez_visty" name="Без вісти/безвісти"> <pattern> <token>без</token> <token>вісти</token> </pattern> <message>Правильно: <suggestion>безвісти</suggestion></message> <example correction="безвісти"><marker>без вісти</marker></example> </rule> <rule id="na_trebe" name="На треба"> <pattern> <token>на</token> <token>треба</token> </pattern> <message>Правильно: <suggestion>не треба</suggestion></message> <example correction="не треба">Агов, <marker>на треба</marker> цього!</example> </rule> <rule id="vytupaye" name="Витупає і виступає"> <pattern> <token regexp="yes">витупа(є|ють|ємо?)</token> </pattern> <message>Можливо, ви мали на увазі <suggestion><match no="1" regexp_match="(?iu)витупа(є|ють|ємо?)" regexp_replace="виступа$1"/></suggestion>?</message> <example correction="виступає">він <marker>витупає</marker> завтра.</example> </rule> <rulegroup id="chyselnyi_chyslennyi" name="Чисельний і численний"> <rule> <pattern> <marker> <token regexp="yes" inflected="yes">(не)?чисельний</token> </marker> <token regexp="yes" inflected="yes">асортимент|армія|верства|військо|ворог|гарнізон|глядач|громада|гурт|делегація|духовенство|заява|звернення|колектив|контингент|мітинг|нація|народ|організація|осередок|порушення|представництво|пікет|протест|прошарок|публікація|родина|сім'я|супротивник|товариство</token> </pattern> <message>Численний — який складається з великої кількості, чисельний — який стосується числа, кількості</message> <suggestion><match no="1" regexp_match="(не)?(чисельн)(.*)" regexp_replace="$1численн$3"/></suggestion> <example correction="численним">з <marker>чисельним</marker> військом</example> </rule> <rule> <pattern> <token regexp="yes">(най)?(більш|менш)е?|доволі|досить|дуже|настільки</token> <marker> <token inflected="yes" regexp="yes">(не)?чисельний</token> </marker> </pattern> <message>Численний — який складається з великої кількості, чисельний — який стосується числа, кількості</message> <suggestion><match no="2" regexp_match="(не)?(чисельн)(.*)" regexp_replace="$1численн$3"/></suggestion> <example correction="численним">стає більш <marker>чисельним</marker>.</example> </rule> <rule> <pattern> <marker> <token regexp="yes" inflected="yes">(не)?численний</token> </marker> <token regexp="yes" inflected="yes">вигляд|диференціювання|зріст|зростання|інтегрування|масштаб|метод|наростання|приріст|різниця|розв'язання|співвідношення|стан</token> </pattern> <message>Численний — який складається з великої кількості, чисельний — який стосується числа, кількості</message> <suggestion><match no="1" regexp_match="(не)?(численн)(.*)" regexp_replace="$1числов$3"/></suggestion> <suggestion><match no="1" regexp_match="(не)?(численн)(.*)" regexp_replace="$1чисельн$3"/></suggestion> <example correction="числовому|чисельному">і <marker>численному</marker> методу</example> </rule> <!-- only singular --> <rule> <pattern> <unify> <feature id="gender"/> <feature id="case"/> <marker> <token regexp="yes" inflected="yes">(не)?численний</token> </marker> <token regexp="yes" inflected="yes" postag_regexp="yes" postag="noun:.*?:[mnf].*">алгоритм|аналіз|експеримент|значення|критерій|масив|моделювання|опис|прогноз|розв'язок|розв'язання|ряд|спосіб|рішення|характеристика</token> </unify> </pattern> <message>Численний — який складається з великої кількості, чисельний — який стосується числа, кількості</message> <suggestion><match no="1" regexp_match="(не)?(численн)(.*)" regexp_replace="$1числов$3"/></suggestion> <suggestion><match no="1" regexp_match="(не)?(численн)(.*)" regexp_replace="$1чисельн$3"/></suggestion> <example correction="числовому|чисельному">і <marker>численному</marker> експерименті</example> <example>тестували на численних експериментах</example> <example>численні переваги</example> </rule> <!-- both ok: кількість, перевага, більшість, меншість --> </rulegroup> <rulegroup id="neporivniuvayi" name="Непорівнюваний"> <rule> <pattern> <token inflected="yes">непорівнюваний</token> </pattern> <message>Непорівнюваний має значення "що його не порівнюють" (в момент мовлення). В більшості випадків потрібне слово: <suggestion>непорівнянний</suggestion> "що його неможливо порівняти"</message> <example correction="непорівнянний">отакий <marker>непорівнюваний</marker> варіант</example> </rule> <rule> <pattern> <token inflected="yes">непорівнюваність</token> </pattern> <message>Непорівнюваність має значення "що його не порівнюють" (в момент мовлення). В більшості випадків потрібне слово: <suggestion>непорівнянність</suggestion> "неможливість порівняти"</message> <example correction="непорівнянність">отака <marker>непорівнюваність</marker></example> </rule> <rule> <pattern> <token inflected="yes">непояснюваний</token> </pattern> <message>Непояснюваний має значення "що його не пояснюють" (в момент мовлення). В більшості випадків потрібне слово: <suggestion>непоясненний</suggestion> "що його неможливо пояснити"</message> <example correction="непоясненний">отакий <marker>непояснюваний</marker> варіант</example> </rule> </rulegroup> <rule id="vidryvaty_dveri" name="Відривати двері"> <pattern> <marker> <token inflected="yes" regexp="yes">відривати(ся)?|відрити(ся)?|відритий</token> </marker> <token inflected="yes" regexp="yes">двері|вікно</token> </pattern> <message>Можливо: <suggestion><match no="1" regexp_match="(?iu)відри(.*)" regexp_replace="відкри$1"/></suggestion>?</message> <example correction="відкрив">він <marker>відрив</marker> двері</example> </rule> <rulegroup id="vika_viku" name="Віка і віку"> <rule> <pattern> <token postag_regexp="yes" postag="num.*"/> <marker> <token>віка</token> </marker> </pattern> <message>Родовий відмінок від «вік» є <suggestion>віку</suggestion></message> <example correction="віку">події ХХ <marker>віка</marker>.</example> <example>розглядала його віка, губи</example> </rule> <rule> <pattern> <token regexp="yes">[ву]сі|на|кінця|од|до|чверть|середин.*|дожив.*|[ву]корот.*</token> <marker> <token>віка</token> </marker> </pattern> <message>Родовий відмінок від «вік» є <suggestion>віку</suggestion></message> <example correction="віку">на всі <marker>віка</marker>.</example> <example>розглядала його віка, губи</example> </rule> <rule> <pattern> <marker> <token>віка</token> </marker> <token min="0">не</token> <token regexp="yes">збав.*|дожив.*</token> </pattern> <message>Родовий відмінок від «вік» є <suggestion>віку</suggestion></message> <example correction="віку">хочеш <marker>віка</marker> збавити.</example> <example>розглядала його віка, губи</example> </rule> </rulegroup> <rulegroup id="nezvazhayuchi_ne" name="Незважаючи не"> <rule> <pattern> <token>незважаючи</token> <token>не</token> </pattern> <message>Можливо, ви мали на увазі <suggestion>\1 на</suggestion></message> <example correction="незважаючи на">і <marker>незважаючи не</marker> це.</example> </rule> <rule> <pattern> <token>не</token> <marker> <token>зважаючи</token> <token>не</token> </marker> </pattern> <message>Можливо, ви мали на увазі <suggestion>\2 на</suggestion></message> <example correction="зважаючи на">і не <marker>зважаючи не</marker> це.</example> </rule> <rule> <antipattern> <token>зважаючи</token> <token>не</token> <token regexp="yes">лише|с?тільки</token> <token>на</token> </antipattern> <pattern> <token>зважаючи <exception scope="previous">не</exception> </token> <token>не</token> </pattern> <message>Можливо, ви мали на увазі <suggestion>\1 на</suggestion></message> <example correction="зважаючи на">і <marker>зважаючи не</marker> ситуацію</example> <example>зважаючи не лише на сучасні проблеми</example> </rule> </rulegroup> <rulegroup id="adres_adresa" name="Адреса і адрес"> <rule> <pattern> <token postag_regexp="yes" postag="adj:m:v_(naz|zna).*pron:pos"/> <marker> <token>адрес</token> </marker> </pattern> <message>Можливо, ви мали на увазі <suggestion>адреса</suggestion></message> <example correction="адреса">дав йому свій <marker>адрес</marker>.</example> <example>дав йому свою адресу</example> </rule> <!-- <rule> <pattern> <token regexp="yes">домашній|електронний|поштовий|зворотний|теперішній</token> <marker> <token>адрес</token> </marker> </pattern> <message>Можливо, ви мали на увазі <suggestion>адреса</suggestion></message> <example correction="адреса">дав йому домашній <marker>адрес</marker>.</example> <example>дав йому поштових адрес</example> </rule> --> <rule> <pattern> <unify> <feature id="gender"/> <feature id="case"/> <token postag_regexp="yes" postag="adj:m:(?!.*pron:pos).*"> <exception inflected="yes" regexp="yes">(при)?вітальний|(по|в)дячний</exception> </token> <marker> <token inflected="yes">адрес</token> </marker> </unify> </pattern> <message>Можливо, ви мали на увазі <suggestion>адреса</suggestion></message> <example correction="адреса">дав йому домашній <marker>адрес</marker>.</example> <example>на домашній <marker>адресі</marker>.</example> </rule> </rulegroup> <rulegroup id="na_vylit_vs_navylit" name="На виліт і навиліт"> <rule> <pattern> <token regexp="yes" inflected="yes">пройти|проходити|проби(ва)?ти|проши(ва)?ти|подати|подача|куля|поранення</token> <token postag_regexp="yes" postag="noun.*v_zna.*" min="0"/> <marker> <token>на</token> <token>виліт</token> </marker> </pattern> <message>Може ви мали на увазі <suggestion>навиліт</suggestion>?</message> <example correction="навиліт">куля пройшла <marker>на виліт</marker>.</example> </rule> <rule> <pattern> <token regexp="yes" inflected="yes">матч|гра|кандидат|претендент|квиток|дозвіл|обмеження|черга</token> <marker> <token>навиліт</token> </marker> </pattern> <message>Може ви мали на увазі <suggestion>на виліт</suggestion>?</message> <example correction="на виліт">той матч <marker>навиліт</marker>.</example> </rule> </rulegroup> <rulegroup id="pogodnyi_vs_pogidnyi" name="Погодний і погідний"> <rule> <pattern> <marker> <token inflected="yes">погідний</token> </marker> <token inflected="yes" regexp="yes">умова|чинник|явище|фактор|катаклізм|сюрприз|аномалія</token> </pattern> <message>Може ви мали на увазі <suggestion><match no="1" postag_regexp="yes" postag="adj.*">погодний</match></suggestion>?</message> <example correction="погодних">за таких <marker>погідних</marker> умов.</example> </rule> <rule> <pattern> <marker> <token inflected="yes">погодний</token> </marker> <token inflected="yes" regexp="yes">день|вечір|небо|обличчя</token> </pattern> <message>Може ви мали на увазі <suggestion><match no="1" postag_regexp="yes" postag="adj.*">погідний</match></suggestion>?</message> <example correction="погідний">мав <marker>погодний</marker> день.</example> </rule> </rulegroup> <!-- <rulegroup id="yih_vs_yiniy" name="Їх та їхній" default="off"> <rule> <pattern> <marker> <token>їх</token> </marker> <token inflected="yes" regexp="yes">організм|пам'ять|становище|замисел|сподівання|ресурс|потреба|майно|знайомство|хвиля|голос|тренер|родич</token> < життя ? > </pattern> <message>Якщо «їх» відповідає на питання «кого/чого», а не «чий», треба вживати <suggestion>їхній</suggestion>?</message> <example correction="їхній">на <marker>їх</marker> сподівання.</example> </rule> </rulegroup> --> <rulegroup id="pyvyd_vs_pryvid" name="Привід та привид"> <rule> <pattern> <token regexp="yes" inflected="yes">механічний|електричний|формальний|зайвий|да(ва)?ти|шукати|мати</token> <marker> <token>привид</token> </marker> </pattern> <message>Може ви мали на увазі <suggestion>привід</suggestion>?</message> <example correction="привід">механічний <marker>привид</marker>.</example> </rule> <rule> <pattern> <marker> <token>привид</token> </marker> <token regexp="yes">для|до</token> </pattern> <message>Може ви мали на увазі <suggestion>привід</suggestion>?</message> <example correction="привід">шукав <marker>привид</marker> для.</example> </rule> </rulegroup> <rule id="sprytni_napoi" name="Спритні напої"> <pattern> <token inflected="yes">спритний</token> <token inflected="yes">напій</token> </pattern> <message>Можливо ви мали на увазі: <suggestion><match no="1" regexp_match="(?iu)спритн(.*)" regexp_replace="спиртн$1"/> \2</suggestion></message> <example correction="спиртними напоями"><marker>спритними напоями</marker></example> </rule> <rule id="pokrashennya" name="Покрашення і покращення"> <pattern> <token inflected="yes">покрашення</token> </pattern> <message>Можливо ви мали на увазі: <suggestion><match no="1" regexp_match="(?iu)покраш(.*)" regexp_replace="покращ$1"/></suggestion></message> <example correction="покращенню"><marker>покрашенню</marker> вже сьогодні</example> </rule> <!-- TODO: досить складна логіка <rulegroup id="NE_Z_PRUKMETNYKAMY" name="Не з прикметниками" default="off"> <rule> <pattern> <token postag_regexp="yes" postag="adv.*" regexp="yes" >ні.*</token> <marker> <token postag_regexp="yes" postag="adj.*" regexp="yes" >не.*</token> </marker> </pattern> <message>Не з прикметником пишеться окремо</message> <example correction="">Нітрохи <marker>нецікава</marker> лекція.</example> </rule> </rulegroup> --> </category> <category id="LOGICAL_ERRORS" 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> </category> </rules>