neutral rationale for ru-only default, document --all-languages

This commit is contained in:
Andrew Pimenov 2026-08-16 19:51:46 +03:00
parent 1c0f6928bf
commit 8fc99b8959
4 changed files with 20 additions and 16 deletions

View file

@ -117,11 +117,12 @@ report/apply/digest --source <url> → source.parse_playlist_url() → (user_id,
3. An alphabet heuristic on the title/artist (Cyrillic vs Latin, `unicodedata`).
4. Otherwise — `UNKNOWN` → a separate "Undetermined" playlist.
- **Lyric analysis (`lyrics.py`, `analyze.py`)**: only Russian-language tracks are analyzed. The
reason is signal validity, not cost — on a foreign-language track the meaning arrives through
the music and the vocal delivery, not through parsed words, so an LLM reading the literal text
would add a signal the listener never perceives. Text fetching and analysis are **two separate
commands** on purpose: the fetch is network-bound against the deprecated `track_supplement`,
- **Lyric analysis (`lyrics.py`, `analyze.py`)**: by default only Russian-language tracks are
analyzed — the prompt and the narrative fields (`summary`/`resonance`/`key_line`) are written
in Russian and were validated against a Russian-lyrics pilot run; quality on other languages is
unverified. `sort_ym lyrics --all-languages` lifts the filter and fetches/analyzes every track
with available lyrics regardless of detected language (`lyrics.ru_lyric_track_ids(...,
all_languages=True)`). Text fetching and analysis are **two separate commands** on purpose: the fetch is network-bound against the deprecated `track_supplement`,
the analysis is a multi-hour local GPU job, and a prompt or model change must be re-runnable
without touching Yandex again. `analyze` and `digest` construct no `Client` at all.

View file

@ -118,11 +118,12 @@ report/apply/digest --source <url> → source.parse_playlist_url() → (user_id,
3. Эвристика по алфавиту названия/исполнителя (кириллица vs латиница, `unicodedata`).
4. Иначе — `UNKNOWN` → отдельный плейлист «Не определено».
- **Разбор текстов (`lyrics.py`, `analyze.py`)**: разбираются только русскоязычные треки.
Причина — валидность сигнала, не стоимость: на иноязычном треке смысл передаётся музыкой и
подачей вокала, а не разобранными словами, поэтому LLM, читающая буквальный текст, добавит
сигнал, который слушатель при прослушивании не считывает. Загрузка текста и анализ — это
**две отдельные команды** намеренно: загрузка привязана к сети и устаревшему `track_supplement`,
- **Разбор текстов (`lyrics.py`, `analyze.py`)**: по умолчанию разбираются только русскоязычные
треки — промпт и нарративные поля (`summary`/`resonance`/`key_line`) написаны на русском и
проверены на пилотном прогоне по русской лирике; качество на других языках не проверялось.
`sort_ym lyrics --all-languages` снимает фильтр и загружает/разбирает все треки с доступным
текстом независимо от определённого языка (`lyrics.ru_lyric_track_ids(...,
all_languages=True)`). Загрузка текста и анализ — это **две отдельные команды** намеренно: загрузка привязана к сети и устаревшему `track_supplement`,
анализ — это многочасовая работа локального GPU, а смена prompt или модели должна быть
переиспользуема без нового обращения к Яндексу. `analyze` и `digest` вообще не создают `Client`.

View file

@ -175,9 +175,10 @@ song is about and why it might resonate.
.venv\Scripts\python -m sort_ym digest # out/lyrics_digest.md + an aggregate block in out/digest.md
```
Only Russian-language tracks are analyzed. On a foreign-language track the meaning is carried by
the music and the vocal delivery rather than by parsed words, so a literal reading of the text
would add a signal the listener never actually perceives.
By default only Russian-language tracks are analyzed — the prompt and the narrative fields
(`summary`/`resonance`/`key_line`) are written in Russian and were validated on a Russian-lyrics
pilot run; quality on other languages is unverified. Pass `--all-languages` to `lyrics` to fetch
and analyze every track with available lyrics regardless of detected language.
Requirements: Ollama running locally with the model named in `config.toml` under `[ollama]`
(`ollama list` to check). No internet is used — `analyze` never talks to Yandex.

View file

@ -176,9 +176,10 @@ $ python -m sort_ym digest
.venv\Scripts\python -m sort_ym digest # out/lyrics_digest.md + агрегат в out/digest.md
```
Разбираются только русскоязычные треки. На иноязычном треке смысл передаётся музыкой и подачей
вокала, а не разобранными словами, поэтому буквальное чтение текста добавило бы сигнал, которого
слушатель при прослушивании не считывает.
По умолчанию разбираются только русскоязычные треки — промпт и нарративные поля
(`summary`/`resonance`/`key_line`) написаны на русском и проверены на пилотном прогоне по
русской лирике; качество на других языках не проверялось. Флаг `--all-languages` у `lyrics`
снимает фильтр и загружает/разбирает все треки с доступным текстом независимо от языка.
Что нужно: запущенная локально Ollama с моделью из `config.toml`, блок `[ollama]` (проверить —
`ollama list`). Интернет не используется: `analyze` не обращается к Яндексу вообще.