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

Закон Ципфа

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
)

Результат:

ruts