Перейти к содержанию

Словарь ударений Козиева

ruts.datasets.StressDict

Описание

Модуль для работы со словарем ударений Ильи Козиева (all_accents): 1 680 535 словоформ с позицией основного ударения. Данные Википедии и Викисловаря дополнены формами по таблицам словоизменения грамматического словаря автора в предположении, что ударение при склонении и спряжении не сдвигается, поэтому у форм с подвижным ударением (реки́ - ре́ки, воды́ - во́ды) записан один из вариантов, омографы (за́мок - замо́к) даны одной строкой, а буква ё везде заменена на е.

Словарь распространяется под лицензией CC0 и загружается из репозитория автора по закрепленному коммиту (10.6 МБ, файл 77 МБ) с проверкой контрольной суммы SHA-256. Файл читается один раз на процесс и индексируется целиком в памяти без разбора строк: поиск словоформы идет двоичным поиском по отсортированному файлу, поэтому загрузка занимает доли секунды, а словарь - около 100 МБ памяти.

Словарь используется классом VerseStats и функциями расстановки ударений word_stress и accentuate: они поправляют известные ошибки словаря, восстанавливают ударение по букве ё и подгоняют его под метр.

Параметры

Параметр Тип По умолчанию Описание
data_dir str DEFAULT_DATA_DIR.joinpath("dicts") Путь к директории со словарем

Методы

download

Выполняет загрузку словаря из сети и извлечение файла. Загруженный архив сверяется с контрольной суммой SHA-256; поврежденный или подмененный файл удаляется с ошибкой DownloadError, чтобы повторная загрузка не пропускалась. Если архив уже есть, а файл словаря нет, архив извлекается заново.

Параметры:

Параметр Тип По умолчанию Описание
force bool - Загрузить словарь, даже если он уже загружен

Пример

from ruts.datasets import StressDict

sd = StressDict()
sd.download()
sd.info["license"]
# 'CC0-1.0'

lookup

Возвращает номер ударного слога словоформы, считая с нуля (слоги считаются по гласным), None для словоформы вне словаря или без указанного ударения. Словоформа приводится к нижнему регистру, ё заменяется на е, как в словаре.

Параметры:

Параметр Тип По умолчанию Описание
word str - Словоформа

Пример

sd.lookup("корова"), sd.lookup("ёжик"), sd.lookup("котоведение")
# (1, 0, None)
"корова" in sd, len(sd)
# (True, 1680535)

get_records

Возвращает генератор записей словаря в порядке файла (алфавитном): словоформа и номер ударного слога.

Параметры:

Параметр Тип По умолчанию Описание
limit int None Количество записей

Пример

for record in sd.get_records(limit=2):
    print(record)
# {'word': '-де', 'stress': 0}
# {'word': '-ка', 'stress': 0}

get_texts

Возвращает генератор словоформ словаря с тем же параметром, что get_records.