Закон Ципфа¶
ruts.visualizers.zipf()
Описание¶
Построение графика Закона Ципфа (Zipf's law) на основе справочника частотности слов.
Определение
Зако́н Ци́пфа («ранг-частота») - эмпирическая закономерность распределения частоты слов естественного языка: если все слова языка (или просто достаточно длинного текста) упорядочить по убыванию частоты их использования, то частота n-го слова в таком списке окажется приблизительно обратно пропорциональной его порядковому номеру n (так называемому рангу этого слова, см. шкала порядка). Например, второе по используемости слово встречается примерно в два раза реже, чем первое, третье - в три раза реже, чем первое, и так далее.
Параметры¶
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
counter |
Counter | - |
Справочник частотности слов |
num_words |
int | None |
Количество самых частотных слов |
num_labels |
int | 10 |
Количество слов, отображаемых на графике |
log |
bool | True |
Использовать логарифмическую шкалу |
show_theory |
bool | False |
Отображать график теоретического Закону Ципфа |
alpha |
float | 1.5 |
Коэффициент α теоретического Закона Ципфа |
Пример использования¶
Рассмотрим работу визуализатора на примере 100 текстов из набора данных SovChLit.
Пример
Код:
# Загрузка библиотек
from collections import Counter
from nltk.corpus import stopwords
from ruts import WordsExtractor
from ruts.datasets import SovChLit
from ruts.visualizers import zipf
# Подготовка данных
sc = SovChLit()
texts = [text for text in sc.get_texts(limit=100)]
text = "\n".join(texts)
# Подсчет частотности слов
we = WordsExtractor(use_lexemes=True, stopwords=stopwords.words("russian"), filter_nums=True)
tokens_with_count = Counter(we.extract(text))
# Построение графика
zipf(tokens_with_count, num_words=100, num_labels=10, log=False, show_theory=True, alpha=1.1)
Результат:
