All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.languagetool.resource.ru.disambiguation.xml Maven / Gradle / Ivy

<?xml version="1.0" encoding="utf-8"?>
<!--
Russian Disambiguation Rules for LanguageTool (www.languagetool.org)
Copyright (C) 2009-2023 Yakov Reztsov
-->
<rules lang="ru"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:noNamespaceSchemaLocation="../../../../../../../../../languagetool-core/src/main/resources/org/languagetool/resource/disambiguation.xsd">

<!--  fast fix! -->
    <rule name="NN_Inanim_Neut" id="NN_Inanim_Neut">
        <pattern>
            <marker>
                <and>
                    <token postag="NN:Inanim:Neut" ></token>
                    <token postag="NN:Inanim:Neut:Sin:V" ></token>
                </and>
            </marker>
        </pattern>
        <disambig action="add" > 
            <wd pos="NN:Inanim:Neut:Sin:Nom" />
        </disambig>

    </rule>
        <rule name="NN_Inanim_Masc" id="NN_Inanim_Masc">
        <pattern>
            <marker>
                <and>
                    <token postag="NN:Inanim:Masc" ></token>
                    <token postag="NN:Inanim:Masc:Sin:V" ></token>
                </and>
            </marker>
        </pattern>
        <disambig action="add" > 
            <wd pos="NN:Inanim:Masc:Sin:Nom" />
        </disambig>

    </rule>
        <rule name="NN_Inanim_Fem" id="NN_Inanim_Fem">
        <pattern>
            <marker>
                <and>
                    <token postag="NN:Inanim:Fem" ></token>
                    <token postag="NN:Inanim:Fem:Sin:V" ></token>
                </and>
            </marker>
        </pattern>
        <disambig action="add" > 
            <wd pos="NN:Inanim:Fem:Sin:Nom" />
        </disambig>

    </rule>   
   
    <rule name="i_Co" id="i_Co">
        <pattern>
            <token>и</token>
            <marker>
                <token case_sensitive="yes">Ко</token>
            </marker>
        </pattern>
        <disambig action="remove" postag="PREP"></disambig>
    </rule>
    
    <rule name="V_levom" id="V_levom">
        <pattern>
            <token>в</token>
            <marker>
                <token postag="NN:.*|ADJ:.*" postag_regexp="yes" inflected="yes" >левый</token>
            </marker>
             <token postag="NN:.*|PNN:.*" postag_regexp="yes" ></token>
        </pattern>
        <disambig action="remove" postag="NN:.*" ></disambig>
    </rule>                 

    <!-- prepositions 
   R:   
   без, вместо, вокруг (prep & adv), для, до, из (изо), из-за, из-под, кроме,
   напротив (prep & adv), около, от, после (prep & adv), посреди (prep & adv),
   против, с*, со*, среди, у
   
   D: 
   к, ко, по*
   
   V:
   в*, за*, на*, по*, под*, сквозь, через; о*
   
   T:
   за*, между (prep & adv), над, перед, под*, с*
   
   P:
   в*, на*, о*, при; по*
   
    -->

    <!-- disambiguation for nouns' -->
    <rule name="NOUN_V" id="NOUN_V">
        <pattern>		   
            <!-- Здесь нет больниц, нам нужно поехать в ближайший город.  "Город" только NN:.*:.*:.*:V  -->
            <token regexp="yes" skip="1">в|на|сквозь|через<exception scope="next" postag="Num.*" postag_regexp="yes"></exception><exception scope="next" postag="NN:.*" postag_regexp="yes"></exception></token>
            <marker>
                <and>
                    <token postag="NN:.*:.*:.*:Nom" postag_regexp="yes"></token>
                    <token postag="NN:.*:.*:.*:V" postag_regexp="yes"><exception postag="NN:.*:.*:.*:P" postag_regexp="yes"></exception></token>
                </and>
            </marker>
        </pattern>
        <disambig action="remove" postag="NN:.*:.*:.*:Nom"></disambig>
    </rule>
    <rule name="NOUN_V2" id="NOUN_V2">
        <pattern>
            <token  skip="1">под<exception scope="next" postag="NN:.*" postag_regexp="yes"></exception></token>
            <marker>
                <and>
                    <token postag="NN:.*:.*:.*:Nom" postag_regexp="yes"></token>
                    <token postag="NN:.*:.*:.*:V" postag_regexp="yes"><exception postag="NN:.*:.*:.*:T" postag_regexp="yes"></exception></token>
                </and>
            </marker>
        </pattern>
        <disambig action="remove" postag="NN:.*:.*:.*:Nom"></disambig>
    </rule>
    <rule name="NOUN_V3" id="NOUN_V3">
        <pattern>	 
            <!-- Что за головная боль!    "Что за" - междометие -->
            <!-- Add exception for : "Что за + NN:.*:.*:.*:Nom" -->
            <!-- Однако дворец был возрождён за два года.  за + два + NN:.*:.*:.*:R" -->
            <token  negate="yes">что</token>
            <token  skip="1">за<exception scope="next" postag="NN:.*" postag_regexp="yes"></exception></token>
            <marker>
                <and>
                    <token postag="NN:.*:.*:.*:Nom" postag_regexp="yes"></token>
                    <token postag="NN:.*:.*:.*:V" postag_regexp="yes"><exception postag="NN:.*:.*:.*:T" postag_regexp="yes"></exception></token>
                </and>
            </marker>
        </pattern>
        <disambig action="remove" postag="NN:.*:.*:.*:Nom"></disambig>
    </rule>
    <rule name="NOUN_V4" id="NOUN_V4">
        <pattern>	 
            <!-- после отпуска -->

            <token  postag="PREP"></token>  <!-- после -->
            <marker>
                <and>
                    <token postag="NN:.*:.*:.*:Nom" postag_regexp="yes"></token>
                    <token postag="NN:.*:.*:.*:V" postag_regexp="yes"></token>
                </and>
            </marker>
        </pattern>
        <disambig action="remove" postag="NN:.*:.*:.*:Nom"></disambig>
    </rule>
    <rule name="NOUN_V6" id="NOUN_V6">
        <pattern>	 
            <!-- на этот вопрос -->
            <token>на</token>  
            <token regexp="yes">этот|тот|эту|ту|эти|те|это|то</token>  
            <marker>
                <and>
                    <token postag="NN:.*:.*:.*:Nom" postag_regexp="yes"></token>
                    <token postag="NN:.*:.*:.*:V" postag_regexp="yes"></token>
                </and>
            </marker>
        </pattern>
        <disambig action="remove" postag="NN:.*:.*:.*:Nom"></disambig>
    </rule>
    <!-- где телефон? где телефоны? где Оля? -->
    <!--
    <rule name="NOUN_V5" id="NOUN_V5">
        <pattern>	 
            <token skip="1">где </token>  
            <marker>
                <and>
                    <token postag="NN:.*:.*:.*:Nom" postag_regexp="yes"></token>
                    <token postag="NN:.*:.*:.*:V" postag_regexp="yes"></token>
                </and>
            </marker>
        </pattern>
        <disambig action="remove" postag="NN:.*:.*:.*:V"></disambig>
        <example type="ambiguous" inputform="телефон[телефон/NN:Inanim:Masc:Sin:Nom,телефон/NN:Inanim:Masc:Sin:V]" outputform="телефон[телефон/NN:Inanim:Masc:Sin:Nom]">Где <marker>телефон</marker>?</example>
        <example type="ambiguous" inputform="телефон[телефон/NN:Inanim:Masc:Sin:Nom,телефон/NN:Inanim:Masc:Sin:V]" outputform="телефон[телефон/NN:Inanim:Masc:Sin:Nom]">Где наш <marker>телефон</marker>?</example>
    </rule>
    --> 
    <rule name="NOUN_V7" id="NOUN_V7">
        <pattern>		   
            <!-- все время  "время" только NN:.*:.*:.*:V  -->
            <token regexp="yes" skip="1">всё|все|это|то</token>
            <marker>
                <and>
                    <token postag="NN:.*:.*:.*:Nom" postag_regexp="yes">время</token>
                    <token postag="NN:.*:.*:.*:V" postag_regexp="yes">время<exception postag="NN:.*:.*:.*:P" postag_regexp="yes"></exception></token>
                </and>
            </marker>
        </pattern>
        <disambig action="remove" postag="NN:.*:.*:.*:Nom"></disambig>
    </rule>
     <rule name="VB_VB_NOUN" id="VB_VB_NOUN">
        <pattern>		   
            <!-- постараюсь найти предмет  -->
            <token postag="VB:Fut:.*" postag_regexp="yes"><exception postag="VB:INF:.*" postag_regexp="yes"></exception></token>
            <token>найти</token>
            <marker>
                <and>
                    <token postag="NN:.*:.*:.*:Nom" postag_regexp="yes"></token>
                    <token postag="NN:.*:.*:.*:V" postag_regexp="yes"></token>
                </and>
            </marker>
        </pattern>
        <disambig action="remove" postag="NN:.*:.*:.*:Nom"></disambig>
    </rule>

    <rule name="NOUN_R" id="NOUN_R">
        <pattern>
            <!-- без  - родительный  -->
            <token skip="1" regexp="yes">без|безо|вместо|для|до|из|изо|из-за|из-под|кроме|около|от|против|среди|у<exception scope="next" postag="NN:.*" postag_regexp="yes"></exception></token>
            <marker>
                <and>
                    <token postag="NN:.*:.*:.*:V" postag_regexp="yes"></token>
                    <token postag="NN:.*:.*:.*:R" postag_regexp="yes"></token>
                </and>
            </marker>
        </pattern>
        <disambig action="remove" postag="NN:.*:.*:.*:V"></disambig>
    </rule>
    <rule name="NOUN_D" id="NOUN_D">
        <pattern>
            <token regexp="yes" skip="1">к|ко<exception scope="next" postag="NN:.*" postag_regexp="yes"></exception></token>
            <!-- по  - дательный, винительный, предложный -->
            <!-- к  - дательный  -->
            <marker>
                <and>
                    <token postag="NN:.*:.*:.*:P" postag_regexp="yes"></token>
                    <token postag="NN:.*:.*:.*:D" postag_regexp="yes"></token>
                </and>
            </marker>
        </pattern>
        <disambig action="remove" postag="NN:.*:.*:.*:P"></disambig>
    </rule>
    <rule name="NOUN_P" id="NOUN_P">
        <pattern>
            <!-- о  - винительный, предложный  -->
            <token regexp="yes" skip="1">о|при<exception scope="next" postag="NN:.*" postag_regexp="yes"></exception></token>
            <marker>
                <and>
                    <token postag="NN:.*:.*:.*:D" postag_regexp="yes"></token>
                    <token postag="NN:.*:.*:.*:P" postag_regexp="yes"><exception postag="NN:.*:.*:.*:V" postag_regexp="yes"></exception></token>
                </and>
            </marker>
        </pattern>
        <disambig action="remove" postag="NN:.*:.*:.*:(Nom|D|R|T)"></disambig>
    </rule>
    <rule name="NOUN_Letter" id="NOUN_Letter">
        <pattern>
            <marker>
                <token postag="NN:.*:.*" postag_regexp="yes" regexp="yes">[А-ЯЁ]</token>
            </marker>
            <token>.</token>
        </pattern>
        <disambig action="remove" postag="NN:.*:.*"></disambig>
    </rule>
    <rule name="NOUN_ABR_OS" id="NOUN_ABR_OS">
        <pattern>
            <marker>
                <and>
                    <token postag="NN:.*:.*:.*:.*" postag_regexp="yes"></token>
                    <token case_sensitive="yes" >ОС</token>
                </and>
            </marker>
        </pattern>
        <disambig action="remove" postag="NN:.*:.*:.*:.*"></disambig>
    </rule>
    <rule name="NOUN_ABR_VRU" id="NOUN_ABR_VRU">
        <pattern>
            <marker>
                <and>
                    <token postag="ABR:.*" postag_regexp="yes"></token>
                    <token case_sensitive="yes" >ВРУ</token>
                </and>
            </marker>
        </pattern>
        <disambig action="remove" postag="VB:Real:TRANS:IMPFV:Sin:P1"></disambig>
    </rule>     
    <rule name="INTERJECTION_OR_PREP_O" id="INTERJECTION_O">
        <pattern>
            <!-- о  -->
            <marker>
                <token>о</token>
            </marker>
            <token  negate="yes" regexp="yes">[.!,?]</token>
        </pattern>
        <disambig action="remove" postag="INTERJECTION"></disambig>
    </rule>

    <rule name="NOUN_NOT_NOM" id="NOUN_NOT_NOM">
        <antipattern> <!-- exception for: Что он был за человек? -->
            <token skip="-1">что</token>
            <token>за</token>
            <token postag="NN:.*:.*:.*:Nom" postag_regexp="yes"></token> 
        </antipattern>
        <pattern>	 
            <!-- Что за головная боль!    "Что за" - междометие -->
            <!-- Add exception for : "Что за + NN:.*:.*:Nom" -->
            <!-- Add exception for : "в невесты" -->
            <token  negate="yes">что</token>
            <token regexp="yes">за|без|вместо|для|до|из|из-за|изо|из-под|к|ко|кроме|на|над|о|около|от|перед|по|под|при|против|с|сквозь|со|среди|у|через</token>
            <marker>
                <and>
                    <token postag="NN:.*:.*:.*:Nom" postag_regexp="yes"></token>
                    <token negate_pos="yes" postag="NN:.*:.*:.*:Nom" postag_regexp="yes"><exception postag="SENT_END"></exception></token>
                </and>
            </marker>
        </pattern>
        <disambig action="remove" postag="NN:.*:.*:.*:Nom"></disambig>
    </rule>    
    <rule name="NOUN_NOT_NOM1" id="NOUN_NOT_NOM1">
        <antipattern>
            <token>что</token>
            <token>это</token>
            <token>за</token>
            <token postag="ADJ:.*" postag_regexp="yes"></token>
            <token postag="NN:.*:.*:.*:Nom" postag_regexp="yes"></token>
        </antipattern>
                
        <pattern>	 
            <!-- Что за головная боль!    "Что за" - междометие -->
            <!-- Add exception for : "Что за + NN:.*:.*:Nom" -->
            <!-- Add exception for : "в невесты" -->
            <!-- Add exception for : "за лучший фильм"  remove "за", must sync with rule "ADJ_V" !-->
            <token  negate="yes">что</token>
            <token regexp="yes">без|вместо|для|до|из|из-за|изо|из-под|к|ко|кроме|на|над|о|около|от|перед|по|под|при|против|с|сквозь|со|среди|у|через</token>
            <token postag="ADJ:.*" postag_regexp="yes"><exception postag="PNN:.*" postag_regexp="yes"></exception></token>
            <marker>
                <and>
                    <token postag="NN:.*:.*:.*:Nom" postag_regexp="yes"></token>
                    <token postag="NN:.*:.*:.*:.*" postag_regexp="yes"><exception postag="NN:.*:.*:.*:Nom" postag_regexp="yes"></exception></token>
                </and>
            </marker>
        </pattern>
        <disambig action="remove" postag="NN:.*:.*:.*:Nom"></disambig>
    </rule>    
    
    <!-- disambiguation for 2P and 2R -->
    <!-- второй родительный  -->
    <!--
    <rule name="NOUN_2R" id="NOUN_2R">
        <pattern>
            
            <token postag="NN:Inanim:Masc:Sin:2R"></token>
        </pattern>
        <disambig action="add" ><wd pos="NN:Inanim:Masc:Sin:R"></wd></disambig>
    </rule>
    -->
    <!-- второй предложный  -->
    <!--
    <rule name="NOUN_2P_Masc" id="NOUN_2P_Masc">
        <pattern>
            <token postag="NN:Inanim:Masc:Sin:2P"></token>
        </pattern>
        <disambig action="add" ><wd pos="NN:Inanim:Masc:Sin:P"></wd></disambig>
    </rule>
    -->
    <!-- второй предложный  -->
    <!--
    <rule name="NOUN_2P_Fem" id="NOUN_2P_Fem">
        <pattern>
            
            <token postag="NN:Inanim:Fem:Sin:2P"></token>
        </pattern>
        <disambig action="add" ><wd pos="NN:Inanim:Fem:Sin:P"></wd></disambig>
    </rule>
    -->
    <!-- **************************** --> 
    
    <!-- disambiguation for adj.' -->
    <rule name="ADJ_T" id="ADJ_T">
        <pattern>
            <!-- с  - родительный, винительный, творительный -->
            <!-- под (подо)  - винительный, творительный   -->
            <!-- TODO проливной is ADJ:.*:.*:V -->
            <!-- Я не хочу попасть под проливной дождь. -->
            <!-- Удаляем только неверный postag, остальные не трогаем.   -->
            <token regexp="yes">под|подо|над|перед</token>
            <marker>
                <and>
                    <token postag="ADJ:.*:.*:R" postag_regexp="yes"></token>
                    <token postag="ADJ:.*:.*:T" postag_regexp="yes"></token>
                </and>
            </marker>
        </pattern>
        <disambig action="remove" postag="ADJ:.*:.*:R"></disambig>
    </rule>
    <rule name="PT_T" id="PT_T">
        <pattern>
            <!-- с  - родительный, винительный, творительный -->
            <!-- под (подо)  - винительный, творительный   -->
            <!-- Удаляем только неверный postag, остальные не трогаем.   -->
            <token regexp="yes">под|подо|над|перед</token>
            <marker>
                <and>
                    <token postag="PT:.*:.*:R" postag_regexp="yes"></token>
                    <token postag="PT:.*:.*:T" postag_regexp="yes"></token>
                </and>
            </marker>
        </pattern>
        <disambig action="remove" postag="PT:.*:.*:R"></disambig>
    </rule>
    <rule name="ADJ_V" id="ADJ_V">
        <pattern>
            <!-- TODO improve за -->
            <!-- Что за странный парень! Should leave ADJ:.*:Nom -->
            <!-- Берёшь ли ты, Мэри, этого мужчину в законные мужья и клянёшься любить.   в законные is ADJ:PL:V  -->
            <!-- <token regexp="yes">в|за|на|под|сквозь|через</token> -->
            <token regexp="yes">в|на|под|сквозь|через</token>
            <marker>
                <and>
                    <token postag="ADJ:.*:.*:Nom" postag_regexp="yes"></token>
                    <token postag="ADJ:.*:.*:V" postag_regexp="yes"><exception postag="ADJ:.*:.*:P" postag_regexp="yes"></exception></token>
                </and>
            </marker>
        </pattern>
        <disambig action="remove" postag="ADJ:.*:.*:Nom"></disambig>
    </rule>
    <rule name="PT_V" id="PT_V">
        <pattern>
            <!-- TODO improve за -->
            
            <token regexp="yes">в|на|под|сквозь|через</token>
            <marker>
                <and>
                    <token postag="PT:.*:.*:Nom" postag_regexp="yes"></token>
                    <token postag="PT:.*:.*:V" postag_regexp="yes"><exception postag="PT:.*:.*:P" postag_regexp="yes"></exception></token>
                </and>
            </marker>
        </pattern>
      <disambig action="remove" postag="PT:.*:.*:Nom"></disambig>
    </rule>
    <rule name="ADJ_V2" id="ADJ_V2">
        <pattern>
            <!-- TODO милые should stay .*:Nom -->
            <!-- Что они за милые щеночки! -->
            <!-- <token regexp="yes">за|под</token> -->
            <token>под</token>
            <marker>
                <and>
                    <token postag="ADJ:.*:.*:Nom" postag_regexp="yes"></token>
                    <token postag="ADJ:.*:.*:V" postag_regexp="yes"><exception postag="ADJ:.*:.*:T" postag_regexp="yes"></exception></token>
                </and>
            </marker>
        </pattern>
        <disambig action="remove" postag="ADJ:.*:.*:Nom"></disambig>
    </rule>
    <rule name="PT_V2" id="PT_V2">
        <pattern>
            <token>под</token>
            <marker>
                <and>
                    <token postag="PT:.*:.*:Nom" postag_regexp="yes"></token>
                    <token postag="PT:.*:.*:V" postag_regexp="yes"><exception postag="PT:.*:.*:T" postag_regexp="yes"></exception></token>
                </and>
            </marker>
        </pattern>
       <disambig action="remove" postag="PT:.*:.*:Nom"></disambig>
    </rule>
    <!-- где наша Оля? -->
    <!-- Где наш телефон? -->
    <!--
     <rule name="ADJ_V5" id="ADJ_V5">
        <pattern>
            <token>где</token>
            <marker>
                <and>
                    <token postag="ADJ:.*:.*:Nom" postag_regexp="yes"></token>
                    <token postag="ADJ:.*:.*:V" postag_regexp="yes"></token>
                </and>
            </marker>
        </pattern>
        <disambig action="remove" postag="ADJ:.*:.*:V"></disambig>
        <example type="ambiguous" inputform="наш[наш/ADJ:MPR:Masc:Nom,наш/ADJ:MPR:Masc:V]" outputform="наш[наш/ADJ:MPR:Masc:Nom]">Где <marker>наш</marker> телефон?</example>
    </rule>
    <rule name="PT_V5" id="PT_V5">
        <pattern>
            <token>где</token>
            <marker>
                <and>
                    <token postag="PT:.*:.*:Nom" postag_regexp="yes"></token>
                    <token postag="PT:.*:.*:V" postag_regexp="yes"></token>
                </and>
            </marker>
        </pattern>
       <disambig action="remove" postag="PT:.*:.*:V"></disambig>
    </rule>
    -->
    <rule name="ADJ_R" id="ADJ_R">
        <pattern>
            <token regexp="yes">без|безо|вместо|для|до|из|изо|из-за|из-под|кроме|около|от|против|среди|у</token>
            <marker>
                <and>
                    <token postag="ADJ:.*:.*:D" postag_regexp="yes"></token>
                    <token postag="ADJ:.*:.*:R" postag_regexp="yes"></token>
                </and>
            </marker>
        </pattern>
        <disambig action="remove" postag="ADJ:.*:.*:D"></disambig>
    </rule>
    <rule name="PT_R" id="PT_R">
        <pattern>
            <token regexp="yes">без|безо|вместо|для|до|из|изо|из-за|из-под|кроме|около|от|против|среди|у</token>
            <marker>
                <and>
                    <token postag="PT:.*:.*:D" postag_regexp="yes"></token>
                    <token postag="PT:.*:.*:R" postag_regexp="yes"></token>
                </and>
            </marker>
        </pattern>
        <disambig action="remove" postag="PT:.*:.*:D"></disambig>
    </rule>
    <rule name="ADJ_D" id="ADJ_D">
        <pattern>
            <token regexp="yes">к|ко</token>
            <marker>
                <and>
                    <token postag="ADJ:.*:.*:P" postag_regexp="yes"></token>
                    <token postag="ADJ:.*:.*:D" postag_regexp="yes"><exception postag="ADJ:.*:.*:V" postag_regexp="yes"></exception></token>
                </and>
            </marker>
        </pattern>
        <disambig action="remove" postag="ADJ:.*:.*:P"></disambig>
    </rule>
    <rule name="PT_D" id="PT_D">
        <pattern>
            <token regexp="yes">к|ко</token>
            <marker>
                <and>
                    <token postag="PT:.*:.*:P" postag_regexp="yes"></token>
                    <token postag="PT:.*:.*:D" postag_regexp="yes"><exception postag="PT:.*:.*:V" postag_regexp="yes"></exception></token>
                </and>
            </marker>
        </pattern>
        <disambig action="remove" postag="PT:.*:.*:P"></disambig>
    </rule>
    <rule name="ADJ_P" id="ADJ_P">
        <pattern>
            <token regexp="yes">о|при</token>
            <marker>
                <and>
                    <token postag="ADJ:.*:.*:D" postag_regexp="yes"></token>
                    <token postag="ADJ:.*:.*:P" postag_regexp="yes"><exception postag="ADJ:.*:.*:V" postag_regexp="yes"></exception></token>
                </and>
            </marker>
        </pattern>
        <disambig action="remove" postag="ADJ:.*:.*:D"></disambig>
    </rule>
    <rule name="PT_P" id="PT_P">
        <pattern>
            <token regexp="yes">о|при</token>
            <marker>
                <and>
                    <token postag="PT:.*:.*:D" postag_regexp="yes"></token>
                    <token postag="PT:.*:.*:P" postag_regexp="yes"><exception postag="PT:.*:.*:V" postag_regexp="yes"></exception></token>
                </and>
            </marker>
        </pattern>
        <disambig action="remove" postag="PT:.*:.*:D"></disambig>
    </rule>
     <rule name="ADJ_P2_NOUN" id="ADJ_P2_NOUN">
        <pattern>
            <token>на</token>
            <marker>
                <and>
                    <token postag="ADJ:.*:.*:V" postag_regexp="yes"></token>
                    <token postag="ADJ:.*:.*:P" postag_regexp="yes"></token>
                </and>
            </marker>
            <token postag="NN:.*:.*:.*:P" postag_regexp="yes"></token>
        </pattern>
        <disambig action="remove" postag="ADJ:.*:.*:V" ></disambig>
    </rule>
    <rule name="PT_P2_NOUN" id="PT_P2_NOUN">
        <pattern>
            <token>на</token>
            <marker>
                <and>
                    <token postag="PT:.*:.*:V" postag_regexp="yes"></token>
                    <token postag="PT:.*:.*:P" postag_regexp="yes"></token>
                </and>
            </marker>
            <token postag="NN:.*:.*:.*:P" postag_regexp="yes"></token>
        </pattern>
        <disambig action="remove" postag="PT:.*:.*:V" ></disambig>
    </rule>
    <!-- To do -->
    <rule name="ADV_OB1" id="ADV_OB1">
        <pattern>
            <token>в</token>
            <marker>
                <token regexp="yes">дальнейшем|диковинку|заключение|меру|насмешку|обнимку|обтяжку|обхват|общем|отместку|рассрочку|розницу|складчину|старину|тиши</token>
            </marker>
        </pattern>
        <disambig><match no="2" postag="ADV"></match></disambig>
    </rule>
    <rule name="ADV_OB2" id="ADV_OB2">
        <pattern>
            <token>без</token>
            <marker>
                <token regexp="yes">ведома|оглядки|просвета|разбору|толку|спросу|удержки|умолку|устали</token>
            </marker>
        </pattern>
        <disambig><match no="2" postag="ADV"></match></disambig>
    </rule>
    <rule name="ADV_OB3" id="ADV_OB3">
        <pattern>
            <token>с</token>
            <marker>
                <token regexp="yes">ведома|виду|маху|разбегу|толку|размаху</token>
            </marker>
        </pattern>
        <disambig><match no="2" postag="ADV"></match></disambig>
    </rule>
    <rule name="ADV_OB4" id="ADV_OB4">
        <pattern>
            <token>до</token>
            <marker>
                <token regexp="yes">востребования|зарезу|крайности|неузнаваемости|отвала|отказа|свидания|упаду</token>
            </marker>
        </pattern>
        <disambig><match no="2" postag="ADV"></match></disambig>
    </rule>
    <rule name="ADV_OB5" id="ADV_OB5">
        <pattern>
            <token>на</token>
            <marker>
                <token regexp="yes">бегу|боковую|вес|весу|вид|виду|время|выбор|глаз|грех|диво|днях|дому|дыбы|зависть|излёте|измор|износ|исходе|корточках|корточки|лад|лету|манер|миг|мировую|отлично</token>
            </marker>
        </pattern>
        <disambig><match no="2" postag="ADV"></match></disambig>
    </rule>
    <rule name="ADV_OB6" id="ADV_OB6">
        <pattern>
            <token>на</token>
            <marker>
                <token regexp="yes">ощупь|плаву|поруки|прицел|редкость|рысях|скаку|славу|совесть|страже|ура|ходу|цыпочках|четвереньках|излёте|измор|износ|исходе|корточках|корточки|лад|лету|манер|миг|мировую|отлично</token>
            </marker>
        </pattern>
        <disambig><match no="2" postag="ADV"></match></disambig>
    </rule>

    <rule name="ADV_PARTICLE" id="ADV_PARTICLE">
        <pattern>  
            <marker>
                <token regexp="yes">еще|ещё</token>
            </marker>
            <token>не</token>
        </pattern>
        <disambig action="remove" postag="PARTICLE"></disambig>
    </rule>

    <!-- disambiguation for prounouns' -->
    <rule name="Nee_nejo" id="Nee_nejo">
        <pattern>
            <marker>
                <token>нее</token>
            </marker>
        </pattern>
        <disambig action="add"><wd lemma="она" pos="PNN:Fem:R:P3">нее</wd></disambig>
    </rule>
    <rule name="Nee_nejo_V" id="Nee_nejo_V">
        <pattern>
            <marker>
                <token>нее</token>
            </marker>
        </pattern>
        <disambig action="add"><wd lemma="она" pos="PNN:Fem:V:P3">нее</wd></disambig>
    </rule>
    <rule name="PNN_on" id="PNN_on">
        <pattern>
            <marker>
                <token>он</token>
            </marker>
        </pattern>
        <disambig action="remove"><wd lemma="он" pos="PNN:Sin:Nom:P3">он</wd></disambig>
    </rule>
    <rule name="PNN_ona" id="PNN_ona">
        <pattern>
            <marker>
                <token>она</token>
            </marker>
        </pattern>
        <disambig action="remove"><wd lemma="она" pos="PNN:Sin:Nom:P3">она</wd></disambig>
    </rule>
    <rule name="PNN_ono" id="PNN_ono">
        <pattern>
            <marker>
                <token>оно</token>
            </marker>
        </pattern>
        <disambig action="remove"><wd lemma="оно" pos="PNN:Sin:Nom:P3">оно</wd></disambig>
    </rule>
    <rule name="ABR_with_dot" id="ABR_with_dot">
        <pattern case_sensitive="yes">
            <marker>
                <token regexp="yes">англ|бульв|вв|г|га|гл|гос|грн|д|дм|долл|доп|др|е|ед|зам|Зам|им|инд|исп|к|кав|кап|кв|кг|кл|км|кол|комн|коп|куб|л|лиц|лл|м|макс|мг|мин|мл|н|нач|нем|неуд|ном|о|обл|обр|общ|ок|ост|отл|п|пер|Пер|перераб|пл|пос|пр|пром|просп|Просп|проф|Проф|р|Рис|рус|с|сб|св|сов|соц|соч|спец|ср|стр|т|тел|Тел|тех|тов|тт|туп|тыс|уд|ул|уч|физ|х|хор|ч|чел|шт|э|экз</token>
            </marker>
            <token>.</token> 
        </pattern>
        <disambig action="add" ><wd pos="ABR"></wd></disambig>
    </rule>
    <rule name="ABR_without_dot" id="ABR_without_dot">
        <pattern case_sensitive="yes">
            <marker>
                <token regexp="yes">т|тел|Тел</token>
            </marker>
            <token>:</token> 
        </pattern>
        <disambig action="add" ><wd pos="ABR"></wd></disambig>
    </rule>
     <!-- double -->
    <rule id="NumD_D_tag" name="NumD_D tag">
      <pattern>
        <token regexp="yes">\d*[234]<exception regexp="yes">\d*12|\d*13|\d*14</exception></token>
      </pattern>
      <disambig postag="NumD_D"/>
      <example type="ambiguous" inputform="73[73]" outputform="73[73/NumD_D]"><marker>73</marker> процента</example>
    </rule>
    <!-- singular -->
    <rule id="NumD_S_tag" name="NumD_S tag"> 
      <pattern>
        <token regexp="yes">\d*[1]<exception regexp="yes">\d*[1][1]</exception></token>
      </pattern>
      <disambig postag="NumD_S"/>  
      <example type="ambiguous" inputform="71[71]" outputform="71[71/NumD_S]"><marker>71</marker> процент</example>
    </rule> 
     <!-- plural -->
    <rule id="NumD_P_tag" name="NumD_P tag"> 
      <pattern>
        <token regexp="yes">\d*[567890]|\d*[1][1234]</token>
      </pattern>
      <disambig postag="NumD_P"/> 
      <example type="ambiguous" inputform="75[75]" outputform="75[75/NumD_P]">
          <marker>75</marker> процентов</example>
      <example type="ambiguous" inputform="11[11]" outputform="11[11/NumD_P]">
          <marker>11</marker> процентов</example>
      <example type="ambiguous" inputform="12[12]" outputform="12[12/NumD_P]">
          <marker>12</marker> процентов</example>
    </rule>
    <rulegroup id="VERB-KA" name="VERB-KA">
        <rule>
            <pattern>
                <token regexp="yes">([А-ЯЁа-яё]+)-ка</token>
            </pattern>
            <filter class="org.languagetool.rules.ru.NoDisambiguationRussianPartialPosTagFilter"
                    args="no:1 regexp:([А-ЯЁа-яё]+)-ка postag_regexp:VB:IMP:TRANS:PFV:Sin:P2"/><!-- The filter is case-sensitive -->
            <disambig action="add"><wd pos="VB:IMP:TRANS:PFV:Sin:P2"/></disambig>
            <example type="ambiguous" inputform="дай-ка[дай-ка]" outputform="дай-ка[дай-ка/VB:IMP:TRANS:PFV:Sin:P2]">Ваня, <marker>дай-ка</marker> мне этот молоток.</example>
        </rule>
        <rule>
            <pattern>
                <token regexp="yes" postag="VB:IMP:TRANS:PFV:Sin:P2" >([А-ЯЁа-яё]+)-ка</token>
            </pattern>
            <disambig action="ignore_spelling"></disambig>
        </rule>
        <rule>
            <pattern>
                <token regexp="yes">([А-ЯЁа-яё]+)-ка</token>
            </pattern>
            <filter class="org.languagetool.rules.ru.NoDisambiguationRussianPartialPosTagFilter"
                    args="no:1 regexp:([А-ЯЁа-яё]+)-ка postag_regexp:VB:IMP:TRANS:IMPFV:Sin:P2"/><!-- The filter is case-sensitive -->
            <disambig action="add"><wd pos="VB:IMP:TRANS:IMPFV:Sin:P2"/></disambig>
            <example type="ambiguous" inputform="пой-ка[пой-ка]" outputform="пой-ка[пой-ка/VB:IMP:TRANS:IMPFV:Sin:P2]">Ваня, <marker>пой-ка</marker> эту песню!</example>
        </rule>
        <rule>
            <pattern>
                <token regexp="yes" postag="VB:IMP:TRANS:IMPFV:Sin:P2">([А-ЯЁа-яё]+)-ка</token>
            </pattern>
          <disambig action="ignore_spelling"></disambig>
        </rule>
        <!-- *******  VB:IMP:INTR:IMPFV:Sin:P2-->
        <rule>
            <pattern>
                <token regexp="yes">([А-ЯЁа-яё]+)-ка</token>
            </pattern>
            <filter class="org.languagetool.rules.ru.NoDisambiguationRussianPartialPosTagFilter"
                    args="no:1 regexp:([А-ЯЁа-яё]+)-ка postag_regexp:VB:IMP:INTR:IMPFV:Sin:P2"/><!-- The filter is case-sensitive -->
            <disambig action="ignore_spelling"></disambig>
        </rule>
        <rule>
            <pattern>
                <token regexp="yes">([А-ЯЁа-яё]+)-ка</token>
            </pattern>
            <filter class="org.languagetool.rules.ru.NoDisambiguationRussianPartialPosTagFilter"
                    args="no:1 regexp:([А-ЯЁа-яё]+)-ка postag_regexp:VB:IMP:INTR:IMPFV:Sin:P2"/><!-- The filter is case-sensitive -->
            <disambig action="add"><wd pos="VB:IMP:INTR:IMPFV:Sin:P2"/></disambig>
            <example type="ambiguous" inputform="прыгай-ка[прыгай-ка]" outputform="прыгай-ка[прыгай-ка/VB:IMP:INTR:IMPFV:Sin:P2]">Ваня, <marker>прыгай-ка</marker> сюда быстрее!</example>
        </rule>
         <!-- *******  VB:IMP:INTR:PFV:Sin:P2-->
        <rule>
            <pattern>
                <token regexp="yes">([А-ЯЁа-яё]+)-ка</token>
            </pattern>
            <filter class="org.languagetool.rules.ru.NoDisambiguationRussianPartialPosTagFilter"
                    args="no:1 regexp:([А-ЯЁа-яё]+)-ка postag_regexp:VB:IMP:INTR:PFV:Sin:P2"/><!-- The filter is case-sensitive -->
            <disambig action="ignore_spelling"></disambig>
        </rule>
        <rule>
            <pattern>
                <token regexp="yes">([А-ЯЁа-яё]+)-ка</token>
            </pattern>
            <filter class="org.languagetool.rules.ru.NoDisambiguationRussianPartialPosTagFilter"
                    args="no:1 regexp:([А-ЯЁа-яё]+)-ка postag_regexp:VB:IMP:INTR:PFV:Sin:P2"/><!-- The filter is case-sensitive -->
            <disambig action="add"><wd pos="VB:IMP:INTR:PFV:Sin:P2"/></disambig>
        </rule>
    </rulegroup>
    <rulegroup id="Word-TO" name="Word-TO">
        <rule>
            <pattern>
                <token regexp="yes">([А-ЯЁа-яё]+)-то</token>
            </pattern>
            <filter class="org.languagetool.rules.ru.NoDisambiguationRussianPartialPosTagFilter"
                    args="no:1 regexp:([А-ЯЁа-яё]+)-то postag_regexp:(NN|ADJ|VB|PT_Short):.*|ADV"/><!-- The filter is case-sensitive -->
            <disambig action="ignore_spelling"></disambig>
        </rule>

    </rulegroup>
    <rulegroup id="Word-zade" name="Word-zade">
        <rule>
            <pattern>
                <token regexp="yes">([А-ЯЁа-яё]+)-заде</token>
            </pattern>
            <filter class="org.languagetool.rules.ru.NoDisambiguationRussianPartialPosTagFilter"
                    args="no:1 regexp:([А-ЯЁа-яё]+)-заде postag_regexp:NN:.*"/><!-- The filter is case-sensitive -->
            <disambig action="ignore_spelling"></disambig>
        </rule>
        <rule>
            <pattern>
                <token regexp="yes">([А-ЯЁа-яё]+)-паша</token>
            </pattern>
            <filter class="org.languagetool.rules.ru.NoDisambiguationRussianPartialPosTagFilter"
                    args="no:1 regexp:([А-ЯЁа-яё]+)-паша postag_regexp:NN:.*"/><!-- The filter is case-sensitive -->
            <disambig action="ignore_spelling"></disambig>
        </rule>
        <rule>
            <pattern>
                <token regexp="yes">([А-ЯЁа-яё]+)-беи</token>
            </pattern>
            <filter class="org.languagetool.rules.ru.NoDisambiguationRussianPartialPosTagFilter"
                    args="no:1 regexp:([А-ЯЁа-яё]+)-беи postag_regexp:NN:.*"/><!-- The filter is case-sensitive -->
            <disambig action="ignore_spelling"></disambig>
        </rule>
        <rule>
            <pattern>
                <token regexp="yes">([А-ЯЁа-яё]+)-оглы</token>
            </pattern>
            <filter class="org.languagetool.rules.ru.NoDisambiguationRussianPartialPosTagFilter"
                    args="no:1 regexp:([А-ЯЁа-яё]+)-оглы postag_regexp:NN:.*"/><!-- The filter is case-sensitive -->
            <disambig action="ignore_spelling"></disambig>
        </rule>
    </rulegroup>
    
    <rulegroup id="pol-Word" name="pol-Word">
        <rule>
            <pattern>
                <token regexp="yes">[Пп]ол-([АаЕеЁёИиОоУуЭэЮюЯялЛ][а-яё]+)</token>
            </pattern>
            <filter class="org.languagetool.rules.ru.NoDisambiguationRussianPartialPosTagFilter"
                    args="no:1 regexp:[Пп]ол-([АаЕеЁёИиОоУуЭэЮюЯялЛ][а-яё]+) postag_regexp:NN:.*:R"/><!-- The filter is case-sensitive -->
            <disambig action="ignore_spelling"></disambig>
        </rule>
    </rulegroup>
    <!-- обер-, унтер-, лейб-, штаб-, вице-, экс-, -->
    <rulegroup id="pol1-Word" name="pol1-Word">
        <rule>
            <pattern>
                <token regexp="yes">[Оо]бер-([а-яё]+)</token>
            </pattern>
            <filter class="org.languagetool.rules.ru.NoDisambiguationRussianPartialPosTagFilter"
                    args="no:1 regexp:[Оо]бер-([а-яё]+) postag_regexp:NN:.*"/><!-- The filter is case-sensitive -->
            <disambig action="ignore_spelling"></disambig>
        </rule>
    </rulegroup>
   <rulegroup id="pol5-Word" name="pol5-Word">
        <rule>
            <pattern>
                <token regexp="yes">[Уу]нтер-([а-яё]+)</token>
            </pattern>
            <filter class="org.languagetool.rules.ru.NoDisambiguationRussianPartialPosTagFilter"
                    args="no:1 regexp:[Уу]нтер-([а-яё]+) postag_regexp:NN:.*"/><!-- The filter is case-sensitive -->
            <disambig action="ignore_spelling"></disambig>
        </rule>
    </rulegroup>
    <rulegroup id="pol6-Word" name="pol6-Word">
        <rule>
            <pattern>
                <token regexp="yes">[Лл]ейб-([а-яё]+)</token>
            </pattern>
            <filter class="org.languagetool.rules.ru.NoDisambiguationRussianPartialPosTagFilter"
                    args="no:1 regexp:[Лл]ейб-([а-яё]+) postag_regexp:NN:.*"/><!-- The filter is case-sensitive -->
            <disambig action="ignore_spelling"></disambig>
        </rule>
    </rulegroup>
    <rulegroup id="pol2-Word" name="pol2-Word">
        <rule>
            <pattern>
                <token regexp="yes">[Шш]таб-([а-яё]+)</token>
            </pattern>
            <filter class="org.languagetool.rules.ru.NoDisambiguationRussianPartialPosTagFilter"
                    args="no:1 regexp:[Шш]таб-([а-яё]+) postag_regexp:NN:.*"/><!-- The filter is case-sensitive -->
            <disambig action="ignore_spelling"></disambig>
        </rule>
    </rulegroup>
    <rulegroup id="pol3-Word" name="pol3-Word">
        <rule>
            <pattern>
                <token regexp="yes">[Вв]ице-([а-яё]+)</token>
            </pattern>
            <filter class="org.languagetool.rules.ru.NoDisambiguationRussianPartialPosTagFilter"
                    args="no:1 regexp:[Вв]ице-([а-яё]+) postag_regexp:NN:.*"/><!-- The filter is case-sensitive -->
            <disambig action="ignore_spelling"></disambig>
        </rule>
    </rulegroup>
    <rulegroup id="pol4-Word" name="pol4-Word">
        <rule>
            <pattern>
                <token regexp="yes">[Ээ]кс-([а-яё]+)</token>
            </pattern>
            <filter class="org.languagetool.rules.ru.NoDisambiguationRussianPartialPosTagFilter"
                    args="no:1 regexp:[Ээ]кс-([а-яё]+) postag_regexp:NN:.*"/><!-- The filter is case-sensitive -->
            <disambig action="ignore_spelling"></disambig>
        </rule>
    </rulegroup>
   
    <rule name="VERB_NOUN1" id="VERB_NOUN">
        <pattern>		   
            <!-- По какому случаю Вы так нарядились?   "случаю" только NN:Inanim:Masc:Sin:D, а не VB:Real:TRANS:IMPFV:Sin:P1 -->
            <token regexp="yes" >какой|какому|такой|такому|сякой|сякому</token>
            <marker>
                <and>
                    <token postag="NN:.*:.*:.*:.*" postag_regexp="yes"></token>
                    <token postag="VB:.*:.*:.*:.*" postag_regexp="yes"></token>
                </and>
            </marker>
        </pattern>
        <disambig action="remove" postag="VB:.*:.*:.*:.*"></disambig>
    </rule>
    <rule name="ADJ_Fam" id="ADJ_Fam">
        <pattern>		   
            <!-- Мария Готова или Мария готова пойти. -->
            <!-- TO DO: make inverse rule   -->
            <token postag="NN:Name:.*:.*:.*" postag_regexp="yes"></token>
            <marker>
                <and>
                    <token postag="NN:Fam:.*:.*:.*" postag_regexp="yes" regexp="yes" case_sensitive="yes">[А-ЯЁ][а-яё]*</token>
                    <token postag="VB:.*:.*:.*:.*|ADJ:.*:.*" postag_regexp="yes" regexp="yes" case_sensitive="yes">[А-ЯЁ][а-яё]*</token>
                </and>
            </marker>
        </pattern>
        <disambig action="remove" postag="VB:.*:.*:.*:.*|ADJ:.*:.*"></disambig>
    </rule>
    <rule name="NN_or_NN_Fam" id="NN_or_NN_Fam">
        <pattern>	<!-- TODO need improve, need add to exception geo names, etc. -->	   
            <token><exception  postag="SENT_START"   /></token>
            <marker>
                <and>
                    <token postag="NN:Fam:.*:.*:.*" postag_regexp="yes" regexp="yes" case_sensitive="yes">[А-ЯЁ][а-яё]*</token>
                    <token postag="NN:(Anim|Inanim):.*:.*:.*" postag_regexp="yes" >
                        <exception regexp="yes" inflected="yes">америка|танга|заказчик|остров|основа|штат|иловайск|клиент|весы|родина|ростов</exception>
                    </token>
                </and>
            </marker>
        </pattern>
        <disambig action="remove" postag="NN:(Anim|Inanim):.*:.*:.*"></disambig>
    </rule>
    <rule name="NN_or_NN_Fam2" id="NN_or_NN_Fam2">
        <pattern>	<!-- TODO need improve, need add to exception geo names, etc. -->	   
            <token>
                <exception  postag="SENT_START" />
                <exception>.</exception>  
                <exception  postag="NN:(Name|Patr):.*:.*:.*" postag_regexp="yes" />
            </token>
            <marker>
                <and>
                    <token postag="NN:Fam:.*:.*:.*" postag_regexp="yes" regexp="yes" case_sensitive="yes">[а-яё][а-яё]*</token>
                    <token postag="NN:(Anim|Inanim):.*:.*:.*" postag_regexp="yes" >
                        <exception regexp="yes" inflected="yes">америка|танга|заказчик|остров|основа|штат|иловайск|клиент|весы|родина|ростов</exception>
                    </token>
                </and>
            </marker>
            <token><exception  postag="NN:(Name|Patr):.*:.*:.*" postag_regexp="yes" /></token>
        </pattern>
        <disambig action="remove" postag="NN:Fam:.*:.*:.*"></disambig>
    </rule>
     
  <rulegroup id="po-ADJ" name="po-ADJ">  <!-- по-мышиному -->
        <rule>
            <pattern>
                <token regexp="yes">[Пп]о-([а-яё]+)<exception regexp="yes">по-крайней|по-крайнему|по-полной|по-меньшей|по-большей</exception></token> 
            </pattern>
            <filter class="org.languagetool.rules.ru.NoDisambiguationRussianPartialPosTagFilter"
                    args="no:1 regexp:[Пп]о-([а-яё]+) postag_regexp:ADJ:Posit:(.*:D|PL:V) "/><!-- The filter is case-sensitive -->
            <disambig action="ignore_spelling"></disambig>
        </rule>
    </rulegroup>
       
</rules>




© 2015 - 2025 Weber Informatics LLC | Privacy Policy