Refactor loader and processor documentation; enhance index module with README

This commit is contained in:
Dmitry
2026-04-28 21:04:24 +03:00
parent 29e1ee26fb
commit 045fc41660
7 changed files with 104 additions and 55 deletions
+2 -1
View File
@@ -14,7 +14,8 @@ def prepared_terms(text: str):
def build_subject_index(text: str, top_n: int = 100) -> list[dict]:
"""Строит предметный указатель: топ-N лемм по частоте с позицией первого вхождения.
"""
Строит предметный указатель: топ-N лемм по частоте с позицией первого вхождения.
first_place.setdefault гарантирует, что запоминается именно первое вхождение —
prepared_terms обходит текст сверху вниз, поэтому первый же setdefault выигрывает.
+2 -1
View File
@@ -54,7 +54,8 @@ def download_with_urllib(url: str, timeout: float) -> str:
def download_html(url: str, retries: int = 3, timeout: float = 30.0) -> str:
"""Загружает HTML-страницу с retry-логикой.
"""
Загружает HTML-страницу с retry-логикой.
Порядок загрузчиков: curl → urllib (curl обходит часть защит consultant.ru).
На каждой итерации retry пробует оба; пауза 0.5 с между попытками.
+5 -2
View File
@@ -83,7 +83,8 @@ else:
@lru_cache(maxsize=100_000)
def parse_word(word: str):
"""Возвращает (лемма, тег) для слова. Кешируем, чтобы не прогонять одно и то же через модуль постоянно.
"""
Возвращает (лемма, тег) для слова. Кешируем, чтобы не прогонять одно и то же через модуль постоянно.
«ё» → «е» для единообразия леммы в словаре и при сравнении.
Если pymorphy3 не установлен, тег пустой, лемма = lower().
@@ -103,7 +104,9 @@ def parse_word(word: str):
@lru_cache(maxsize=10_000)
def _tag_parts(tag: str) -> frozenset[str]:
"""Разбивает строку тега pymorphy3 на множество граммем для быстрого поиска."""
"""
Разбивает строку тега pymorphy3 на множество граммем для быстрого поиска.
"""
return frozenset(re.split(r"[, ]+", tag))