from ..tokenizer_exceptions import BASE_EXCEPTIONS from ...symbols import ORTH, NORM from ...util import update_exc _exc = {} _abbrev_exc = [ # Weekdays abbreviations {ORTH: "пн", NORM: "понедельник"}, {ORTH: "вт", NORM: "вторник"}, {ORTH: "ср", NORM: "среда"}, {ORTH: "чт", NORM: "четверг"}, {ORTH: "чтв", NORM: "четверг"}, {ORTH: "пт", NORM: "пятница"}, {ORTH: "сб", NORM: "суббота"}, {ORTH: "сбт", NORM: "суббота"}, {ORTH: "вс", NORM: "воскресенье"}, {ORTH: "вскр", NORM: "воскресенье"}, {ORTH: "воскр", NORM: "воскресенье"}, # Months abbreviations {ORTH: "янв", NORM: "январь"}, {ORTH: "фев", NORM: "февраль"}, {ORTH: "февр", NORM: "февраль"}, {ORTH: "мар", NORM: "март"}, # {ORTH: "март", NORM: "март"}, {ORTH: "мрт", NORM: "март"}, {ORTH: "апр", NORM: "апрель"}, # {ORTH: "май", NORM: "май"}, {ORTH: "июн", NORM: "июнь"}, # {ORTH: "июнь", NORM: "июнь"}, {ORTH: "июл", NORM: "июль"}, # {ORTH: "июль", NORM: "июль"}, {ORTH: "авг", NORM: "август"}, {ORTH: "сен", NORM: "сентябрь"}, {ORTH: "сент", NORM: "сентябрь"}, {ORTH: "окт", NORM: "октябрь"}, {ORTH: "октб", NORM: "октябрь"}, {ORTH: "ноя", NORM: "ноябрь"}, {ORTH: "нояб", NORM: "ноябрь"}, {ORTH: "нбр", NORM: "ноябрь"}, {ORTH: "дек", NORM: "декабрь"}, ] for abbrev_desc in _abbrev_exc: abbrev = abbrev_desc[ORTH] for orth in (abbrev, abbrev.capitalize(), abbrev.upper()): _exc[orth] = [{ORTH: orth, NORM: abbrev_desc[NORM]}] _exc[orth + "."] = [{ORTH: orth + ".", NORM: abbrev_desc[NORM]}] for abbr in [ # Year slang abbreviations {ORTH: "2к15", NORM: "2015"}, {ORTH: "2к16", NORM: "2016"}, {ORTH: "2к17", NORM: "2017"}, {ORTH: "2к18", NORM: "2018"}, {ORTH: "2к19", NORM: "2019"}, {ORTH: "2к20", NORM: "2020"}, {ORTH: "2к21", NORM: "2021"}, {ORTH: "2к22", NORM: "2022"}, {ORTH: "2к23", NORM: "2023"}, {ORTH: "2к24", NORM: "2024"}, {ORTH: "2к25", NORM: "2025"}, ]: _exc[abbr[ORTH]] = [abbr] for abbr in [ # Profession and academic titles abbreviations {ORTH: "ак.", NORM: "академик"}, {ORTH: "акад.", NORM: "академик"}, {ORTH: "д-р архитектуры", NORM: "доктор архитектуры"}, {ORTH: "д-р биол. наук", NORM: "доктор биологических наук"}, {ORTH: "д-р ветеринар. наук", NORM: "доктор ветеринарных наук"}, {ORTH: "д-р воен. наук", NORM: "доктор военных наук"}, {ORTH: "д-р геогр. наук", NORM: "доктор географических наук"}, {ORTH: "д-р геол.-минерал. наук", NORM: "доктор геолого-минералогических наук"}, {ORTH: "д-р искусствоведения", NORM: "доктор искусствоведения"}, {ORTH: "д-р ист. наук", NORM: "доктор исторических наук"}, {ORTH: "д-р культурологии", NORM: "доктор культурологии"}, {ORTH: "д-р мед. наук", NORM: "доктор медицинских наук"}, {ORTH: "д-р пед. наук", NORM: "доктор педагогических наук"}, {ORTH: "д-р полит. наук", NORM: "доктор политических наук"}, {ORTH: "д-р психол. наук", NORM: "доктор психологических наук"}, {ORTH: "д-р с.-х. наук", NORM: "доктор сельскохозяйственных наук"}, {ORTH: "д-р социол. наук", NORM: "доктор социологических наук"}, {ORTH: "д-р техн. наук", NORM: "доктор технических наук"}, {ORTH: "д-р фармацевт. наук", NORM: "доктор фармацевтических наук"}, {ORTH: "д-р физ.-мат. наук", NORM: "доктор физико-математических наук"}, {ORTH: "д-р филол. наук", NORM: "доктор филологических наук"}, {ORTH: "д-р филос. наук", NORM: "доктор философских наук"}, {ORTH: "д-р хим. наук", NORM: "доктор химических наук"}, {ORTH: "д-р экон. наук", NORM: "доктор экономических наук"}, {ORTH: "д-р юрид. наук", NORM: "доктор юридических наук"}, {ORTH: "д-р", NORM: "доктор"}, {ORTH: "д.б.н.", NORM: "доктор биологических наук"}, {ORTH: "д.г.-м.н.", NORM: "доктор геолого-минералогических наук"}, {ORTH: "д.г.н.", NORM: "доктор географических наук"}, {ORTH: "д.и.н.", NORM: "доктор исторических наук"}, {ORTH: "д.иск.", NORM: "доктор искусствоведения"}, {ORTH: "д.м.н.", NORM: "доктор медицинских наук"}, {ORTH: "д.п.н.", NORM: "доктор психологических наук"}, {ORTH: "д.пед.н.", NORM: "доктор педагогических наук"}, {ORTH: "д.полит.н.", NORM: "доктор политических наук"}, {ORTH: "д.с.-х.н.", NORM: "доктор сельскохозяйственных наук"}, {ORTH: "д.социол.н.", NORM: "доктор социологических наук"}, {ORTH: "д.т.н.", NORM: "доктор технических наук"}, {ORTH: "д.т.н", NORM: "доктор технических наук"}, {ORTH: "д.ф.-м.н.", NORM: "доктор физико-математических наук"}, {ORTH: "д.ф.н.", NORM: "доктор филологических наук"}, {ORTH: "д.филос.н.", NORM: "доктор философских наук"}, {ORTH: "д.фил.н.", NORM: "доктор филологических наук"}, {ORTH: "д.х.н.", NORM: "доктор химических наук"}, {ORTH: "д.э.н.", NORM: "доктор экономических наук"}, {ORTH: "д.э.н", NORM: "доктор экономических наук"}, {ORTH: "д.ю.н.", NORM: "доктор юридических наук"}, {ORTH: "доц.", NORM: "доцент"}, {ORTH: "и.о.", NORM: "исполняющий обязанности"}, {ORTH: "к.б.н.", NORM: "кандидат биологических наук"}, {ORTH: "к.воен.н.", NORM: "кандидат военных наук"}, {ORTH: "к.г.-м.н.", NORM: "кандидат геолого-минералогических наук"}, {ORTH: "к.г.н.", NORM: "кандидат географических наук"}, {ORTH: "к.геогр.н", NORM: "кандидат географических наук"}, {ORTH: "к.геогр.наук", NORM: "кандидат географических наук"}, {ORTH: "к.и.н.", NORM: "кандидат исторических наук"}, {ORTH: "к.иск.", NORM: "кандидат искусствоведения"}, {ORTH: "к.м.н.", NORM: "кандидат медицинских наук"}, {ORTH: "к.п.н.", NORM: "кандидат психологических наук"}, {ORTH: "к.псх.н.", NORM: "кандидат психологических наук"}, {ORTH: "к.пед.н.", NORM: "кандидат педагогических наук"}, {ORTH: "канд.пед.наук", NORM: "кандидат педагогических наук"}, {ORTH: "к.полит.н.", NORM: "кандидат политических наук"}, {ORTH: "к.с.-х.н.", NORM: "кандидат сельскохозяйственных наук"}, {ORTH: "к.социол.н.", NORM: "кандидат социологических наук"}, {ORTH: "к.с.н.", NORM: "кандидат социологических наук"}, {ORTH: "к.т.н.", NORM: "кандидат технических наук"}, {ORTH: "к.ф.-м.н.", NORM: "кандидат физико-математических наук"}, {ORTH: "к.ф.н.", NORM: "кандидат филологических наук"}, {ORTH: "к.фил.н.", NORM: "кандидат филологических наук"}, {ORTH: "к.филол.н", NORM: "кандидат филологических наук"}, {ORTH: "к.фарм.наук", NORM: "кандидат фармакологических наук"}, {ORTH: "к.фарм.н.", NORM: "кандидат фармакологических наук"}, {ORTH: "к.фарм.н", NORM: "кандидат фармакологических наук"}, {ORTH: "к.филос.наук", NORM: "кандидат философских наук"}, {ORTH: "к.филос.н.", NORM: "кандидат философских наук"}, {ORTH: "к.филос.н", NORM: "кандидат философских наук"}, {ORTH: "к.х.н.", NORM: "кандидат химических наук"}, {ORTH: "к.х.н", NORM: "кандидат химических наук"}, {ORTH: "к.э.н.", NORM: "кандидат экономических наук"}, {ORTH: "к.э.н", NORM: "кандидат экономических наук"}, {ORTH: "к.ю.н.", NORM: "кандидат юридических наук"}, {ORTH: "к.ю.н", NORM: "кандидат юридических наук"}, {ORTH: "канд. архитектуры", NORM: "кандидат архитектуры"}, {ORTH: "канд. биол. наук", NORM: "кандидат биологических наук"}, {ORTH: "канд. ветеринар. наук", NORM: "кандидат ветеринарных наук"}, {ORTH: "канд. воен. наук", NORM: "кандидат военных наук"}, {ORTH: "канд. геогр. наук", NORM: "кандидат географических наук"}, {ORTH: "канд. геол.-минерал. наук", NORM: "кандидат геолого-минералогических наук"}, {ORTH: "канд. искусствоведения", NORM: "кандидат искусствоведения"}, {ORTH: "канд. ист. наук", NORM: "кандидат исторических наук"}, {ORTH: "к.ист.н.", NORM: "кандидат исторических наук"}, {ORTH: "канд. культурологии", NORM: "кандидат культурологии"}, {ORTH: "канд. мед. наук", NORM: "кандидат медицинских наук"}, {ORTH: "канд. пед. наук", NORM: "кандидат педагогических наук"}, {ORTH: "канд. полит. наук", NORM: "кандидат политических наук"}, {ORTH: "канд. психол. наук", NORM: "кандидат психологических наук"}, {ORTH: "канд. с.-х. наук", NORM: "кандидат сельскохозяйственных наук"}, {ORTH: "канд. социол. наук", NORM: "кандидат социологических наук"}, {ORTH: "к.соц.наук", NORM: "кандидат социологических наук"}, {ORTH: "к.соц.н.", NORM: "кандидат социологических наук"}, {ORTH: "к.соц.н", NORM: "кандидат социологических наук"}, {ORTH: "канд. техн. наук", NORM: "кандидат технических наук"}, {ORTH: "канд. фармацевт. наук", NORM: "кандидат фармацевтических наук"}, {ORTH: "канд. физ.-мат. наук", NORM: "кандидат физико-математических наук"}, {ORTH: "канд. филол. наук", NORM: "кандидат филологических наук"}, {ORTH: "канд. филос. наук", NORM: "кандидат философских наук"}, {ORTH: "канд. хим. наук", NORM: "кандидат химических наук"}, {ORTH: "канд. экон. наук", NORM: "кандидат экономических наук"}, {ORTH: "канд. юрид. наук", NORM: "кандидат юридических наук"}, {ORTH: "в.н.с.", NORM: "ведущий научный сотрудник"}, {ORTH: "мл. науч. сотр.", NORM: "младший научный сотрудник"}, {ORTH: "м.н.с.", NORM: "младший научный сотрудник"}, {ORTH: "проф.", NORM: "профессор"}, {ORTH: "профессор.кафедры", NORM: "профессор кафедры"}, {ORTH: "ст. науч. сотр.", NORM: "старший научный сотрудник"}, {ORTH: "чл.-к.", NORM: "член корреспондент"}, {ORTH: "чл.-корр.", NORM: "член-корреспондент"}, {ORTH: "чл.-кор.", NORM: "член-корреспондент"}, {ORTH: "дир.", NORM: "директор"}, {ORTH: "зам. дир.", NORM: "заместитель директора"}, {ORTH: "зав. каф.", NORM: "заведующий кафедрой"}, {ORTH: "зав.кафедрой", NORM: "заведующий кафедрой"}, {ORTH: "зав. кафедрой", NORM: "заведующий кафедрой"}, {ORTH: "асп.", NORM: "аспирант"}, {ORTH: "гл. науч. сотр.", NORM: "главный научный сотрудник"}, {ORTH: "вед. науч. сотр.", NORM: "ведущий научный сотрудник"}, {ORTH: "науч. сотр.", NORM: "научный сотрудник"}, {ORTH: "к.м.с.", NORM: "кандидат в мастера спорта"}, ]: _exc[abbr[ORTH]] = [abbr] for abbr in [ # Literary phrases abbreviations {ORTH: "и т.д.", NORM: "и так далее"}, {ORTH: "и т.п.", NORM: "и тому подобное"}, {ORTH: "т.д.", NORM: "так далее"}, {ORTH: "т.п.", NORM: "тому подобное"}, {ORTH: "т.е.", NORM: "то есть"}, {ORTH: "т.к.", NORM: "так как"}, {ORTH: "в т.ч.", NORM: "в том числе"}, {ORTH: "и пр.", NORM: "и прочие"}, {ORTH: "и др.", NORM: "и другие"}, {ORTH: "т.н.", NORM: "так называемый"}, ]: _exc[abbr[ORTH]] = [abbr] for abbr in [ # Appeal to a person abbreviations {ORTH: "г-н", NORM: "господин"}, {ORTH: "г-да", NORM: "господа"}, {ORTH: "г-жа", NORM: "госпожа"}, {ORTH: "тов.", NORM: "товарищ"}, ]: _exc[abbr[ORTH]] = [abbr] for abbr in [ # Time periods abbreviations {ORTH: "до н.э.", NORM: "до нашей эры"}, {ORTH: "по н.в.", NORM: "по настоящее время"}, {ORTH: "в н.в.", NORM: "в настоящее время"}, {ORTH: "наст.", NORM: "настоящий"}, {ORTH: "наст. время", NORM: "настоящее время"}, {ORTH: "г.г.", NORM: "годы"}, {ORTH: "гг.", NORM: "годы"}, {ORTH: "т.г.", NORM: "текущий год"}, ]: _exc[abbr[ORTH]] = [abbr] for abbr in [ # Address forming elements abbreviations {ORTH: "респ.", NORM: "республика"}, {ORTH: "обл.", NORM: "область"}, {ORTH: "г.ф.з.", NORM: "город федерального значения"}, {ORTH: "а.обл.", NORM: "автономная область"}, {ORTH: "а.окр.", NORM: "автономный округ"}, {ORTH: "м.р-н", NORM: "муниципальный район"}, {ORTH: "г.о.", NORM: "городской округ"}, {ORTH: "г.п.", NORM: "городское поселение"}, {ORTH: "с.п.", NORM: "сельское поселение"}, {ORTH: "вн.р-н", NORM: "внутригородской район"}, {ORTH: "вн.тер.г.", NORM: "внутригородская территория города"}, {ORTH: "пос.", NORM: "поселение"}, {ORTH: "р-н", NORM: "район"}, {ORTH: "с/с", NORM: "сельсовет"}, {ORTH: "г.", NORM: "город"}, {ORTH: "п.г.т.", NORM: "поселок городского типа"}, {ORTH: "пгт.", NORM: "поселок городского типа"}, {ORTH: "р.п.", NORM: "рабочий поселок"}, {ORTH: "рп.", NORM: "рабочий поселок"}, {ORTH: "кп.", NORM: "курортный поселок"}, {ORTH: "гп.", NORM: "городской поселок"}, {ORTH: "п.", NORM: "поселок"}, {ORTH: "в-ки", NORM: "выселки"}, {ORTH: "г-к", NORM: "городок"}, {ORTH: "з-ка", NORM: "заимка"}, {ORTH: "п-к", NORM: "починок"}, {ORTH: "киш.", NORM: "кишлак"}, {ORTH: "п. ст. ", NORM: "поселок станция"}, {ORTH: "п. ж/д ст. ", NORM: "поселок при железнодорожной станции"}, {ORTH: "ж/д бл-ст", NORM: "железнодорожный блокпост"}, {ORTH: "ж/д б-ка", NORM: "железнодорожная будка"}, {ORTH: "ж/д в-ка", NORM: "железнодорожная ветка"}, {ORTH: "ж/д к-ма", NORM: "железнодорожная казарма"}, {ORTH: "ж/д к-т", NORM: "железнодорожный комбинат"}, {ORTH: "ж/д пл-ма", NORM: "железнодорожная платформа"}, {ORTH: "ж/д пл-ка", NORM: "железнодорожная площадка"}, {ORTH: "ж/д п.п.", NORM: "железнодорожный путевой пост"}, {ORTH: "ж/д о.п.", NORM: "железнодорожный остановочный пункт"}, {ORTH: "ж/д рзд.", NORM: "железнодорожный разъезд"}, {ORTH: "ж/д ст. ", NORM: "железнодорожная станция"}, {ORTH: "м-ко", NORM: "местечко"}, {ORTH: "д.", NORM: "деревня"}, {ORTH: "с.", NORM: "село"}, {ORTH: "сл.", NORM: "слобода"}, {ORTH: "ст. ", NORM: "станция"}, {ORTH: "ст-ца", NORM: "станица"}, {ORTH: "у.", NORM: "улус"}, {ORTH: "х.", NORM: "хутор"}, {ORTH: "рзд.", NORM: "разъезд"}, {ORTH: "зим.", NORM: "зимовье"}, {ORTH: "б-г", NORM: "берег"}, {ORTH: "ж/р", NORM: "жилой район"}, {ORTH: "кв-л", NORM: "квартал"}, {ORTH: "мкр.", NORM: "микрорайон"}, {ORTH: "ост-в", NORM: "остров"}, {ORTH: "платф.", NORM: "платформа"}, {ORTH: "п/р", NORM: "промышленный район"}, {ORTH: "р-н", NORM: "район"}, {ORTH: "тер.", NORM: "территория"}, { ORTH: "тер. СНО", NORM: "территория садоводческих некоммерческих объединений граждан", }, { ORTH: "тер. ОНО", NORM: "территория огороднических некоммерческих объединений граждан", }, {ORTH: "тер. ДНО", NORM: "территория дачных некоммерческих объединений граждан"}, {ORTH: "тер. СНТ", NORM: "территория садоводческих некоммерческих товариществ"}, {ORTH: "тер. ОНТ", NORM: "территория огороднических некоммерческих товариществ"}, {ORTH: "тер. ДНТ", NORM: "территория дачных некоммерческих товариществ"}, {ORTH: "тер. СПК", NORM: "территория садоводческих потребительских кооперативов"}, {ORTH: "тер. ОПК", NORM: "территория огороднических потребительских кооперативов"}, {ORTH: "тер. ДПК", NORM: "территория дачных потребительских кооперативов"}, {ORTH: "тер. СНП", NORM: "территория садоводческих некоммерческих партнерств"}, {ORTH: "тер. ОНП", NORM: "территория огороднических некоммерческих партнерств"}, {ORTH: "тер. ДНП", NORM: "территория дачных некоммерческих партнерств"}, {ORTH: "тер. ТСН", NORM: "территория товарищества собственников недвижимости"}, {ORTH: "тер. ГСК", NORM: "территория гаражно-строительного кооператива"}, {ORTH: "ус.", NORM: "усадьба"}, {ORTH: "тер.ф.х.", NORM: "территория фермерского хозяйства"}, {ORTH: "ю.", NORM: "юрты"}, {ORTH: "ал.", NORM: "аллея"}, {ORTH: "б-р", NORM: "бульвар"}, {ORTH: "взв.", NORM: "взвоз"}, {ORTH: "взд.", NORM: "въезд"}, {ORTH: "дор.", NORM: "дорога"}, {ORTH: "ззд.", NORM: "заезд"}, {ORTH: "км", NORM: "километр"}, {ORTH: "к-цо", NORM: "кольцо"}, {ORTH: "лн.", NORM: "линия"}, {ORTH: "мгстр.", NORM: "магистраль"}, {ORTH: "наб.", NORM: "набережная"}, {ORTH: "пер-д", NORM: "переезд"}, {ORTH: "пер.", NORM: "переулок"}, {ORTH: "пл-ка", NORM: "площадка"}, {ORTH: "пл.", NORM: "площадь"}, {ORTH: "пр-д", NORM: "проезд"}, {ORTH: "пр-к", NORM: "просек"}, {ORTH: "пр-ка", NORM: "просека"}, {ORTH: "пр-лок", NORM: "проселок"}, {ORTH: "пр-кт", NORM: "проспект"}, {ORTH: "проул.", NORM: "проулок"}, {ORTH: "рзд.", NORM: "разъезд"}, {ORTH: "ряд", NORM: "ряд(ы)"}, {ORTH: "с-р", NORM: "сквер"}, {ORTH: "с-к", NORM: "спуск"}, {ORTH: "сзд.", NORM: "съезд"}, {ORTH: "туп.", NORM: "тупик"}, {ORTH: "ул.", NORM: "улица"}, {ORTH: "ш.", NORM: "шоссе"}, {ORTH: "влд.", NORM: "владение"}, {ORTH: "г-ж", NORM: "гараж"}, {ORTH: "д.", NORM: "дом"}, {ORTH: "двлд.", NORM: "домовладение"}, {ORTH: "зд.", NORM: "здание"}, {ORTH: "з/у", NORM: "земельный участок"}, {ORTH: "кв.", NORM: "квартира"}, {ORTH: "ком.", NORM: "комната"}, {ORTH: "подв.", NORM: "подвал"}, {ORTH: "кот.", NORM: "котельная"}, {ORTH: "п-б", NORM: "погреб"}, {ORTH: "к.", NORM: "корпус"}, {ORTH: "ОНС", NORM: "объект незавершенного строительства"}, {ORTH: "оф.", NORM: "офис"}, {ORTH: "пав.", NORM: "павильон"}, {ORTH: "помещ.", NORM: "помещение"}, {ORTH: "раб.уч.", NORM: "рабочий участок"}, {ORTH: "скл.", NORM: "склад"}, {ORTH: "coop.", NORM: "сооружение"}, {ORTH: "стр.", NORM: "строение"}, {ORTH: "торг.зал", NORM: "торговый зал"}, {ORTH: "а/п", NORM: "аэропорт"}, {ORTH: "им.", NORM: "имени"}, ]: _exc[abbr[ORTH]] = [abbr] for abbr in [ # Others abbreviations {ORTH: "тыс.руб.", NORM: "тысяч рублей"}, {ORTH: "тыс.", NORM: "тысяч"}, {ORTH: "руб.", NORM: "рубль"}, {ORTH: "долл.", NORM: "доллар"}, {ORTH: "прим.", NORM: "примечание"}, {ORTH: "прим.ред.", NORM: "примечание редакции"}, {ORTH: "см. также", NORM: "смотри также"}, {ORTH: "кв.м.", NORM: "квадрантный метр"}, {ORTH: "м2", NORM: "квадрантный метр"}, {ORTH: "б/у", NORM: "бывший в употреблении"}, {ORTH: "сокр.", NORM: "сокращение"}, {ORTH: "чел.", NORM: "человек"}, {ORTH: "б.п.", NORM: "базисный пункт"}, ]: _exc[abbr[ORTH]] = [abbr] TOKENIZER_EXCEPTIONS = update_exc(BASE_EXCEPTIONS, _exc)