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

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

StressDict(data_dir=DEFAULT_DATASET_DIR)

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

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

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

Исключения:

  • SourceTypeError - data_dir, который не строка и не Path.
from ruts.datasets import StressDict

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

Параметры

Параметр Тип По умолчанию Описание
data_dir str / Path DEFAULT_DATASET_DIR Путь к директории со словарем; по умолчанию dicts в DEFAULT_DATA_DIR

Атрибуты

Атрибут Тип Описание
info dict[str, str] Наименование словаря и справочная информация о нем

Методы

download(force=False) загружает словарь из сети и извлекает файл; если архив есть, а файла словаря нет, архив извлекается заново. Архив сверяется с контрольной суммой SHA-256, поврежденный или подмененный файл удаляется.

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

Файл, который не удалось загрузить или который не прошел проверку контрольной суммы, дает DownloadError, архив, который не удалось извлечь, - DataFileError.

check_data() проверяет, что файл словаря на месте, и возвращает True; незагруженный словарь дает DatasetNotFoundError с командами загрузки, как и поиск по нему.

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

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

Словоформа, которая не строка, дает SourceTypeError.

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

get_records(limit=None) возвращает генератор записей словаря в порядке файла (алфавитном): словоформа и номер ударного слога; get_texts с тем же параметром - генератор словоформ.

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

limit, который не целое неотрицательное число, дает ParameterError.

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