Частотный словарь Ляшевской и Шарова¶
FreqDict(data_dir=DEFAULT_DATASET_DIR)
Частотный словарь современного русского языка О. Н. Ляшевской и С. А. Шарова (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 и как эталонный корпус в keyness (объем корпуса словаря - CORPUS_SIZE, 92 млн словоупотреблений).
Исключения:
SourceTypeError-data_dir, который не строка и неPath.
from ruts.datasets import FreqDict
fd = FreqDict()
fd.download()
fd.info["citation"]
'Ляшевская О. Н., Шаров С. А. Частотный словарь современного русского языка (на материалах Национального корпуса русского языка). М.: Азбуковник, 2009.'
Параметры¶
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
data_dir |
str / Path |
DEFAULT_DATASET_DIR |
Путь к директории со словарем; по умолчанию dicts в DEFAULT_DATA_DIR |
Атрибуты¶
| Атрибут | Тип | Описание |
|---|---|---|
entries |
dict[str, Entry] |
Справочник статей по нормализованной лемме |
min_ipm |
float |
Минимальная частота в словаре (0.4) |
word_ipm |
dict[str, float] |
Частоты по статье, к которой приводится словоформа без части речи, - эталон keyness |
info |
dict[str, str] |
Наименование словаря и справочная информация о нем |
Entry(lemma, pos, ipm, range, dispersion, docs)
Статья словаря: именованный кортеж.
| Поле | Тип | Описание |
|---|---|---|
lemma |
str |
Лемма |
pos |
tuple[str, ...] |
Части речи леммы в разметке MyStem |
ipm |
float |
Частота на миллион словоупотреблений, сумма по частям речи |
range |
int |
Число сегментов корпуса из 100, в которых встретилась лемма |
dispersion |
int |
Коэффициент Жуйана D |
docs |
int |
Число текстов, в которых встретилась лемма |
Методы¶
download(force=False) загружает словарь из сети и извлекает файл. Загруженный архив сверяется с контрольной суммой SHA-256 (файл на сайте не менялся с 2013 года); поврежденный или подмененный файл удаляется с ошибкой DownloadError, чтобы повторная загрузка не пропускалась. Если архив уже есть, а файла словаря нет, архив извлекается заново.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
force |
bool |
False |
Загрузить словарь, даже если он уже загружен |
Файл, который не удалось загрузить, тоже дает DownloadError, архив, который не удалось извлечь, - DataFileError.
check_data() проверяет, что файл словаря на месте, и возвращает True; незагруженный словарь дает DatasetNotFoundError с командами загрузки, как и обращение к статьям и частотам.
lookup(lemma) возвращает статью словаря по лемме в любом регистре, с ё или без, None для леммы вне словаря; ipm(lemma) - частоту леммы на миллион словоупотреблений, 0 для леммы вне словаря.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
lemma |
str |
- | Лемма |
Лемма, которая не строка, дает SourceTypeError.
fd.lookup("кот")
fd.lookup("Ещё")
fd.ipm("котёнок"), fd.ipm("котоведение")
"кот" in fd, len(fd)
Entry(lemma='кот', pos=('s',), ipm=40.3, range=98, dispersion=90, docs=947)
Entry(lemma='еще', pos=('adv', 'part'), ipm=2409.4, range=100, dispersion=97, docs=22654)
(14.5, 0.0)
(True, 51682)
get_records(pos=None, min_ipm=None, limit=None) возвращает генератор записей словаря в порядке файла (алфавитном) с фильтрацией по части речи и минимальной частоте; get_texts с теми же параметрами - генератор лемм.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
pos |
str |
None |
Часть речи в разметке MyStem |
min_ipm |
float |
None |
Минимальная частота |
limit |
int |
None |
Количество записей |
Неизвестная часть речи и limit, который не целое неотрицательное число, дают ParameterError.
for record in fd.get_records(pos="s", min_ipm=2700, limit=2):
print(record)
list(fd.get_texts(pos="s", min_ipm=2700, limit=2))
{'lemma': 'год', 'pos': 's', 'ipm': 3727.5, 'range': 100, 'dispersion': 94, 'docs': 29477}
{'lemma': 'человек', 'pos': 's', 'ipm': 2723.0, 'range': 100, 'dispersion': 97, 'docs': 20423}
['год', 'человек']