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

Частотный словарь Ляшевской и Шарова

ruts.datasets.FreqDict

Описание

Модуль для работы с частотным словарем современного русского языка О. Н. Ляшевской и С. А. Шарова (Freq2011): 52 138 лемм современного подкорпуса НКРЯ (1950-2007, 92 млн словоупотреблений) с частотой ipm, диапазоном R (число сегментов корпуса из 100, в которых встретилась лемма), коэффициентом Жуйана D, числом текстов и частью речи в разметке MyStem (s, v, a, adv, s.PROP для имен собственных).

Словарь загружается с сайта dict.ruslang.ru (только HTTP, 493 КБ). Лицензия не указана, авторы просят ссылаться на первоисточник:

Цитирование

Ляшевская О. Н., Шаров С. А. Частотный словарь современного русского языка (на материалах Национального корпуса русского языка). М.: Азбуковник, 2009.

Для поиска леммы с несколькими частями речи (а - союз, частица, междометие) склеиваются: ipm суммируется, R, D и число текстов берутся максимальные; лемма приводится к нижнему регистру, ё заменяется на е, как в словаре. Разобранный словарь кэшируется по пути к файлу и читается один раз на процесс, поэтому создавать FreqDict() для каждого текста не накладно. Словарь используется классом LexicalStats.

Параметры

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

Атрибуты

Атрибут Тип Описание
entries dict[str, Entry] Справочник статей по нормализованной лемме
min_ipm float Минимальная частота в словаре (0.4)

Статья Entry - именованный кортеж с полями lemma, pos (кортеж частей речи), ipm, range, dispersion, docs.

Методы

download

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

Параметры:

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

Пример

from ruts.datasets import FreqDict

fd = FreqDict()
fd.download()
fd.info["citation"]
# 'Ляшевская О. Н., Шаров С. А. Частотный словарь современного русского языка (на материалах Национального корпуса русского языка). М.: Азбуковник, 2009.'

lookup

Возвращает статью словаря по лемме в любом регистре, с ё или без, None для леммы вне словаря.

Параметры:

Параметр Тип По умолчанию Описание
lemma str - Лемма

Пример

fd.lookup("кот")
# Entry(lemma='кот', pos=('s',), ipm=40.3, range=98, dispersion=90, docs=947)
fd.lookup("Ещё")
# Entry(lemma='еще', pos=('adv', 'part'), ipm=2409.4, range=100, dispersion=97, docs=22654)

ipm

Возвращает частоту леммы на миллион словоупотреблений, 0 для леммы вне словаря.

Пример

fd.ipm("котёнок"), fd.ipm("котоведение")
# (14.5, 0.0)
"кот" in fd, len(fd)
# (True, 51682)

get_records

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

Параметры:

Параметр Тип По умолчанию Описание
pos str None Часть речи в разметке MyStem
min_ipm float None Минимальная частота
limit int None Количество записей

Пример

for record in fd.get_records(pos="s", min_ipm=2700, limit=2):
    print(record)
# {'lemma': 'год', 'pos': 's', 'ipm': 3727.5, 'range': 100, 'dispersion': 94, 'docs': 29477}
# {'lemma': 'человек', 'pos': 's', 'ipm': 2723.0, 'range': 100, 'dispersion': 97, 'docs': 20423}

get_texts

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