Словарь ударений Козиева¶
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.