Частотный словарь Ляшевской и Шарова¶
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.