textmachine/backend/internal/lang/data/target-ru.txt

237 lines
12 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Target-language (ru) readability checker DATA (pair-14 data-out): the wordlists and DETECTION patterns the
# TARGET-GENERAL checkers/sanitizer run on ANY →ru output (regardless of source pair). Engine/target data —
# a no-langpack →ru book (the ja→ru golden) still runs these — so it is embedded here, not a book pack; the
# checker/sanitizer ALGORITHMS stay generic Go. `category<TAB>value`; value VERBATIM (a regex or a literal);
# lines are grouped by category IN ORDER (order matters for the sanitizer preamble preview). Add a target =
# add data/target-<tgt>.txt to the go:embed manifest (the target registry DERIVES from the file name).
#
# word_script: the target's WORD ALPHABET — the Unicode letter script the lexical checkers tokenize words on
# (whole-word wordlist match, broken-word/yofikation scan, latin-residue detection). The engine resolves the
# NAME to a Unicode range; it never branches on a language. `cyrillic` is the range for ru (unicode.Cyrillic).
word_script cyrillic
#
# broken-word: a Russian word ending in this suffix is a mangled infinitive (no valid word ends in «-йть»).
broken_suffix йть
# speech-verb attribution: the verbs that make a chevron-quoted line SPOKEN dialogue rather than a
# thought. The dialogue-dash MIXING rule counts a chevron line only when its attribution carries one of
# these, i.e. the DEFAULT for an unrecognised attribution is "not a style clash" — precision over recall,
# the gate's stated bias. The inverse list (thought verbs) was tried first and proved unbounded: a live
# 2-chapter run immediately produced «понимал» and «размышлял», which no enumeration of thought verbs
# would have covered, while the speech-verb side is small and closed. Lower-cased, substring match.
speech_verb сказал
speech_verb сказала
speech_verb ответил
speech_verb ответила
speech_verb спросил
speech_verb спросила
speech_verb крикнул
speech_verb крикнула
speech_verb воскликнул
speech_verb воскликнула
speech_verb прошептал
speech_verb прошептала
speech_verb пробормотал
speech_verb пробормотала
speech_verb проговорил
speech_verb проговорила
speech_verb продолжил
speech_verb продолжила
speech_verb добавил
speech_verb добавила
speech_verb возразил
speech_verb возразила
speech_verb позвал
speech_verb позвала
speech_verb объявил
speech_verb объявила
speech_verb произнёс
speech_verb произнес
speech_verb произнесла
# inner-speech VETO markers: a qualifier that makes a line inner speech even when its attribution verb
# is a speech verb — «пробормотал ПРО СЕБЯ» is a thought, not a spoken turn. Checked after speech_verb,
# so the pair (verb + veto) reproduces the writer's actual intent instead of the verb alone. Found by the
# 26.07 live verification: it was the single flag surviving on the real 10-chapter export.
inner_marker про себя
inner_marker мысленно
inner_marker в мыслях
inner_marker себе под нос
inner_marker в уме
# yofikator homograph whitelist: е-spellings that are DISTINCT words from their ё-counterpart (все≠всё,
# небо≠нёбо, берет≠берёт …), so the inconsistency rule must NOT flag «все»+«всё» as one word two ways.
yo_homograph все
yo_homograph всех
yo_homograph всем
yo_homograph всеми
yo_homograph небо
yo_homograph небом
yo_homograph узнаем
yo_homograph узнаете
yo_homograph узнает
yo_homograph падеж
yo_homograph падежа
yo_homograph совершенный
yo_homograph совершенное
yo_homograph совершенная
yo_homograph совершенно
yo_homograph совершенны
yo_homograph чем
yo_homograph тем
yo_homograph тема
yo_homograph теме
yo_homograph темы
yo_homograph берет
yo_homograph берете
yo_homograph берета
yo_homograph осел
yo_homograph осла
yo_homograph ослы
yo_homograph ослов
yo_homograph мел
yo_homograph мела
yo_homograph лен
yo_homograph лена
yo_homograph нес
yo_homograph несем
yo_homograph несет
yo_homograph вел
yo_homograph ведет
yo_homograph ведем
# magnitude_stem: Russian magnitude WORD stem → base-10 exponent, for the number-magnitude gate (a stem
# covers [base, base+2] since an unseen multiplier can lift it two orders). `magnitude_stem<TAB>stem<TAB>exp`.
magnitude_stem тысяч 3
magnitude_stem миллион 6
magnitude_stem миллиард 9
magnitude_stem триллион 12
# sanitizer DETECTION patterns (pair-14 data-out). The sanitizer is isRuTarget-gated, so these are
# ru-target data; the strip/detect ALGORITHM stays in sanitizer.go. `sanitizer_preamble` is ORDERED
# (detectLeadingPreamble returns the FIRST match's preview). Values VERBATIM (regexes).
sanitizer_preamble (?is)^\s*(?:вот|представляю|привожу|держите)\s+[^\n:]{0,40}?(?:отредактированн|исправленн|улучшенн)[а-яё]+\s+(?:перевод|текст|вариант)[а-яё]*[^\n:]{0,120}?:
sanitizer_preamble (?is)^\s*(?:отредактированн|исправленн|улучшенн)[а-яё]+\s+(?:перевод|текст|вариант)[а-яё]*[^\n:]{0,120}?:
sanitizer_preamble (?is)^\s*(?:вот\s+)?перевод\s+(?:фрагмента|текста|отрывка|главы|черновика)\s*:
sanitizer_preamble (?is)^\s*ниже\s+(?:привед[её]н|представлен|дан|след)[а-яё]*\s+[^\n:]{0,40}?(?:перевод|отредактированн|текст)[а-яё]*[^\n:]{0,20}?:
sanitizer_trailing_note (?i)^[*_>\s-]{0,4}(?:(?:примечани[ея]|заметк[аи]|комментари[йяю]|пояснени[ея]|сноск[аи])\s*:|(?:примечани[ея]|заметк[аи]|комментари[йяю])\s+(?:переводчик|редактор)[а-яё]*|прим\.\s*(?:перев|ред)\.?)
sanitizer_edit_meta (?im)^[*_>\s-]{0,4}(?:(?:внесённ|внесен)[а-яё]+\s+правк|основн[а-яё]+\s+правк[а-яё]*(?:\s+для\s+справк[а-яё]+|\s*:)|что\s+(?:было\s+)?(?:изменен|исправлен)|список\s+(?:правок|изменений)|список\s+внесённых)
sanitizer_invalid_sign (?i)(?:^|\P{L})[ъь][а-яё]|[ъь][ъь]
# --- pack-19 voice flagger (T/V + attributed-reply checks) -----------------------------------------
# The T/V distinction is a fact about the TARGET language, so it lives here: a target that ships no
# tv_informal/tv_formal rows runs the whole voice flagger inert, with no Go edit. Surfaces are matched
# as WHOLE WORDS on the normalized output, lower-cased; only PRONOUNS and possessives are listed —
# verb agreement is morphology and belongs to the ru-target layer, not to a $0 flagger.
tv_informal ты
tv_informal тебя
tv_informal тебе
tv_informal тобой
tv_informal тобою
tv_informal твой
tv_informal твоя
tv_informal твоё
tv_informal твое
tv_informal твои
tv_informal твоего
tv_informal твоей
tv_informal твоих
tv_informal твоим
tv_informal твою
tv_formal вы
tv_formal вас
tv_formal вам
tv_formal вами
tv_formal ваш
tv_formal ваша
tv_formal ваше
tv_formal ваши
tv_formal вашего
tv_formal вашей
tv_formal ваших
tv_formal вашим
tv_formal вашу
# tv_plural_veto: Russian «вы» is ALSO plural-you, so a reply addressing several people legitimately
# mixes «ты» and «вы» («Ты иди, а вы оба ждите»). A reply carrying one of these markers is not counted
# as a T/V contradiction — the same veto shape inner_marker has over speech_verb, and for the same
# precision-over-recall reason: a miss here is silence on a real clash, not noise on good prose.
tv_plural_veto оба
tv_plural_veto обе
tv_plural_veto вдвоём
tv_plural_veto втроём
tv_plural_veto все вы
tv_plural_veto вы все
tv_plural_veto господа
tv_plural_veto каждый из вас
# self_ref_generic: the PLAIN first-person surfaces. They are the evidence that a character referred to
# herself at all — the check is «she said "я" where her profile says "ваша служанка"», i.e. the measured
# flattening class (research/15 §Пробы, marker 奴婢), never «she said "я"» on its own.
self_ref_generic я
self_ref_generic меня
self_ref_generic мне
self_ref_generic мной
self_ref_generic мною
# reply segmentation: how this target sets direct speech. reply_dash opens a dash-marked turn at line
# start; reply_open/reply_close bound a quoted turn. Data, not a Go literal, so a target with other
# conventions (ja 「」) states its own without touching the segmentation algorithm.
reply_dash —
reply_open «
reply_close »
# translit-interjection blocklist (04-unhappy §9): JP/EN fillers that must be TRANSLATED/adapted, not
# transliterated into the target. Only surfaces that are NOT ordinary target words are listed (ара/уму were
# removed as high-FP collisions). The blocklist is TARGET data now (was a Go literal); the whole-word,
# case-insensitive matching ALGORITHM stays generic. D20.4: only the exact hyphenated reduplications listed
# fire — a generic «X-X» rule was rejected as too false-positive-prone. Extend per corpus finding.
translit_interjection ара-ара
translit_interjection маа
translit_interjection хмф
translit_interjection нани
translit_interjection ауч
translit_interjection упс
translit_interjection кья
translit_interjection десу
# decl_suffix: the productive Russian inflectional endings the decl-aware post-check stems a word by
# (bank-quality §3, primitive C). It lets dstFormPresent accept a term rendered in an oblique case
# («Фан Юаню» for «Фан Юань») WITHOUT the seed listing every form, closing the measured decl-142/142-null
# false-miss noise. TARGET data — the suffix set is ru-specific; the stemmer ALGORITHM (strip the longest
# listed ending that leaves a stem ≥ min length) stays generic Go and a target with no decl_suffix rows
# gets no stemming (inert). It is a FLAGGER aid, biased to ACCEPT declensions; it never gates. Ordered
# longest-first in code, so listing order here is free.
decl_suffix ами
decl_suffix ями
decl_suffix ого
decl_suffix его
decl_suffix ому
decl_suffix ему
decl_suffix ыми
decl_suffix ими
decl_suffix ах
decl_suffix ях
decl_suffix ов
decl_suffix ев
decl_suffix ом
decl_suffix ём
decl_suffix ем
decl_suffix ой
decl_suffix ей
decl_suffix ый
decl_suffix ий
decl_suffix ая
decl_suffix яя
decl_suffix ое
decl_suffix ее
decl_suffix ым
decl_suffix им
decl_suffix ых
decl_suffix их
decl_suffix ую
decl_suffix юю
decl_suffix а
decl_suffix я
decl_suffix у
decl_suffix ю
decl_suffix е
decl_suffix ы
decl_suffix и
decl_suffix о
# NB (fix-pack §а, D39.71): the bare SOFT SIGN «ь» is deliberately NOT a decl_suffix. It would close the
# Palladius soft-sign case («Фан Юаню»~«Фан Юань» via the stem «юан»), but that strip is byte-identical in
# shape to a HARMFUL collision — «Синь»/«Линь» (top zh surnames) collapse onto «син»/«лин», the stems of the
# common words «синий»/«линия», which fires a spurious Bank.SpoilerLeaks false-positive (the noise direction).
# «юань»→«юан» and «синь»→«син» are the same 4-rune-soft-sign→3-rune-stem shape, so no min-stem rule separates
# them. The soft-sign nominative gap needs seed decl-form enumeration or an anchor-gated match, not this global
# suffix — see the fix-pack report §а ping.