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

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

There is a newer version: 6.5
Show newest version
<?xml version="1.0" encoding="utf-8"?>
<!--
Russian Disambiguation Rules for LanguageTool (www.languagetool.org)
Copyright (C) 2009-2012 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">
    <!-- 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></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><match no="2" postag="NN:.*:.*:V" postag_regexp="yes"></match></disambig>
    </rule>
    <rule name="NOUN_V2" id="NOUN_V2">
        <pattern>
            <token  skip="1">под</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><match no="2" postag="NN:.*:.*:V" postag_regexp="yes"></match></disambig>
    </rule>
    <rule name="NOUN_V3" id="NOUN_V3">
        <pattern>	 
            <!-- Что за головная боль! -->
            <!-- Add exception for : "Что за + NN:.*:.*:Nom" -->
            <!-- Однако дворец был возрождён за два года.  за + два + NN:.*:.*:R" -->
            <token  negate="yes">что</token>
            <token  skip="1">за</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>
  <!--  <disambig><match no="2" postag="NN:.*:.*:V" postag_regexp="yes"></match></disambig>  -->
    </rule>
    <rule name="NOUN_R" id="NOUN_R">
        <pattern>
            <!-- без  - родительный  -->
            <token skip="1" regexp="yes">без|безо|вместо|для|до|из|изо|из-за|из-под|кроме|около|от|против|среди|у</token>
            <marker>
                <and>
                    <token postag="NN:.*:.*:V" postag_regexp="yes"></token>
                    <token postag="NN:.*:.*:R" postag_regexp="yes"></token>
                </and>
            </marker>
        </pattern>
        <disambig><match no="2" postag="NN:.*:.*:R" postag_regexp="yes"></match></disambig>
    </rule>
    <rule name="NOUN_D" id="NOUN_D">
        <pattern>
            <token regexp="yes" skip="1">к|ко</token>
            <!-- по  - дательный, винительный, предложный -->
            <!-- к  - дательный  -->
            <marker>
                <and>
                    <token postag="NN:.*:.*:P" postag_regexp="yes"></token>
                    <token postag="NN:.*:.*:D" postag_regexp="yes"></token>
                </and>
            </marker>
        </pattern>
        <disambig><match no="2" postag="NN:.*:.*:D" postag_regexp="yes"></match></disambig>
    </rule>
    <rule name="NOUN_P" id="NOUN_P">
        <pattern>
            <!-- о  - винительный, предложный  -->
            <token regexp="yes" skip="1">о|при</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>
    <!-- disambiguation for adj.' -->
    <rule name="ADJ_T" id="ADJ_T">
        <pattern>
            <!-- с  - родительный, винительный, творительный -->
            <!-- под (подо)  - винительный, творительный   -->
            <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><match no="2" postag="ADJ:.*:T" postag_regexp="yes"></match></disambig>
    </rule>
    <rule name="ADJ_T1" id="ADJ_T1">
        <pattern>
            <!-- под  - винительный, творительный   -->
            <!-- TODO проливной is ADJ:.*:V -->
            <!-- Я не хочу попасть под проливной дождь. -->
            <!-- Удаляем только неверный postag, остальные не трогаем.   -->
            <token>под</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="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><match no="2" postag="ADJ:.*:V" postag_regexp="yes"></match></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><match no="2" postag="ADJ:.*:V" postag_regexp="yes"></match></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><match no="2" postag="ADJ:.*:R" postag_regexp="yes"></match></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><match no="2" postag="ADJ:.*:D" postag_regexp="yes"></match></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><match no="2" postag="ADJ:.*:P" postag_regexp="yes"></match></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>

    <!-- 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>
    <!-- fast fix for words with PosTag=NNN (Names) only, but it is not names -->
    
    <rule name="Name_fix1" id="Name_fix1">
        <pattern>
            <marker>
                <token regexp="yes">аввы|авеню|автономов|автономы|айс|анхом|ариан|арианами|ариев|арсин|арт|архимедов|ат|аурелия|бен|валин|валина|гея|геям|геи|геями|данов|деи|ден|диско|зарин|зоманом|иваси|иже|калиф|калифа|каратэ|кларисс|коста|косты|лобби|медиа|мисс|миссис|нереид|оглы|роксаланами|роксоланы|роялти|сарин|сити|спагетти|суперЭВМ|троян|троянами|фастам|фасты|франц|фрау|эдипов|януарий</token>
            </marker>
        </pattern>
        <disambig   postag="NN" />
    </rule>
    <rule name="three" id="three">
        <pattern>
            <marker>
                <token>трём</token>
            </marker>
        </pattern>
      <disambig action="add"><wd lemma="три" pos="Num">трём</wd></disambig>
    </rule>

    <!--end fast fix -->
<rule name="besprovodnoj" id="besprovodnoj">
        <pattern>
            <marker>
                <token>беспроводной</token>
            </marker>
        </pattern>
      <disambig action="add"><wd lemma="беспроводный" pos="ADJ:Masc:Nom">беспроводной</wd></disambig>
    </rule>
</rules>




© 2015 - 2025 Weber Informatics LLC | Privacy Policy