Сайт активно развивается. Статьи, схемы и интерактивные модели могут содержать неточности. Если заметили ошибку — пожалуйста, напишите через виджет обратной связи внизу справа. Будем очень благодарны за каждую находку.

Математика Начальный

Закон Ципфа: посчитать слова — и проверить, закон ли это вообще

Во всяком достаточно длинном тексте на любом языке второе по частоте слово встречается вдвое реже первого, третье — втрое реже. Это считается законом. Но случайный набор букв с пробелами даёт ту же кривую — и вот это школьник может проверить сам, за один вечер.

Длительность
2–3 часа с обработкой
Бюджет
0 ₽
Возраст
12–99 лет
Сложность
Начальный
Форма для результатов
#закон Ципфа #частота слов #степенной закон #лингвистика #статистика #Мандельброт #Шеннон #контрольный опыт #методика

Схема носит иллюстративный характер и может содержать упрощения. Если вы заметили неточность — воспользуйтесь кнопкой обратной связи.

Что утверждает закон

Возьмите достаточно длинный текст. Посчитайте, сколько раз встречается каждое слово. Расставьте слова по убыванию частоты и пронумеруйте: самое частое — номер один, следующее — номер два.

Ципф заметил, что частота слова примерно обратно пропорциональна его номеру.

Второе слово встречается вдвое реже первого. Десятое — вдесятеро реже. Сотое — в сто раз реже.

Если отложить по обеим осям логарифмы — номер и частоту, — точки лягут почти на прямую.

Работает это в русском, английском, китайском; в романе, в газете, в переписке; и даже в текстах на давно мёртвых языках. Настолько повсеместно, что это назвали законом.


Опыт 1: посчитать

Что нужно: текст подлиннее и способ считать. Годится книга из открытого доступа, а считать можно вручную или программой.

Вручную

Возьмите страницу-другую. Выпишите каждое слово, ставя палочку при повторе. Хватит и первых двадцати самых частых — закономерность видна уже на них.

Скучно, но полезно: считая руками, вы своими глазами увидите, насколько неравномерно распределены слова. Несколько служебных слов занимают заметную долю всего текста.

Программой

Пятнадцать строк на Python:

import re, collections
text = open('book.txt', encoding='utf-8').read().lower()
words = re.findall(r'[а-яё]+', text)
freq = collections.Counter(words)
for rank, (word, n) in enumerate(freq.most_common(30), 1):
    print(f'{rank:3} {word:15} {n:6}')
print('всего слов:', len(words), '| различных:', len(freq))

Что построить. График: по горизонтали — номер слова, по вертикали — частота, обе оси логарифмические. В любой таблице это делается галочкой «логарифмическая шкала».

Ожидание: точки лягут примерно на прямую с наклоном около −1.


Опыт 2: контроль — вот ради чего всё затевалось

Здесь начинается настоящая работа, и большинство рассказов о законе Ципфа до неё не доходит.

Задайте себе вопрос: а что, собственно, доказывает эта прямая?

Проверим. Сделаем текст, в котором нет ни языка, ни смысла, ни какого-либо закона: просто случайные буквы, изредка пробел.

import random, re, collections
alphabet = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя'
chars = []
for _ in range(300000):
    chars.append(' ' if random.random() < 0.18 else random.choice(alphabet))
words = re.findall(r'[а-яё]+', ''.join(chars))
freq = collections.Counter(words)
for rank, (word, n) in enumerate(freq.most_common(30), 1):
    print(f'{rank:3} {word:15} {n:6}')

Постройте по этим числам такой же график и положите рядом с первым.

Вы увидите такую же прямую.

Это не ошибка и не подвох. Это установленный результат: Джордж Миллер указал на него ещё в 1957 году, а Вэньтянь Ли в 1992-м разобрал строго. Название его статьи не оставляет места для толкований: «Случайные тексты дают распределение частот слов, похожее на закон Ципфа».


Что из этого следует

Вывод, к которому вы пришли своими руками, стоит сформулировать точно, потому что его легко утащить в обе крайности.

Неверно: «Закон Ципфа — ерунда, язык тут ни при чём».

Неверно и обратное: «Прямая на графике доказывает глубокое свойство языка».

Верно: сам факт прямой линии доказывает меньше, чем кажется. Прямую даёт и механизм, в котором нет ничего языкового: длинные «слова» при случайном наборе просто реже выпадают, и этого достаточно.

Значит, объяснять надо не наличие прямой, а что именно в настоящем тексте от неё отличается: точный наклон, отклонения на концах, поведение при росте объёма.

Это общий приём, и он ценнее самого закона Ципфа: прежде чем объяснять закономерность, проверьте, не получается ли она сама собой. Контрольный опыт — то, чем измерение отличается от впечатления.


Опыт 3: где настоящий текст всё-таки отличается

Если первые два опыта получились, беритесь за этот — здесь начинается разница.

Растёт ли словарь. Возьмите первую тысячу слов текста и посчитайте, сколько среди них различных. Потом первые две тысячи, четыре, восемь. Постройте: различных слов в зависимости от прочитанных.

У настоящего текста словарь растёт всё медленнее: автор пользуется ограниченным набором слов, и новые появляются всё реже. У случайного текста новые «слова» лезут без конца — комбинаций букв бесконечно много.

Наклон. Померьте наклон прямой у обоих. У настоящего текста он обычно близок к −1. У случайного зависит от того, какую вероятность пробела вы задали, — попробуйте 0,10 и 0,25 и посмотрите, как наклон поедет.

Концы кривой. Присмотритесь к самым частым и к самым редким словам. У настоящего текста точки на концах отходят от прямой сильнее. Именно эти отклонения и есть то, что требует объяснения.


Остриё науки

Почему закон держится — не выяснено. Объяснений предлагалось много, и ни одно не принято окончательно.

Сам Ципф объяснял его принципом наименьшего усилия: говорящему выгодно обходиться немногими словами, слушающему — чтобы слов было много и они были точны; равновесие двух давлений и даёт такое распределение. Красиво, но проверить трудно, а случайный набор букв, у которого никаких усилий нет вовсе, даёт похожую картину.

Предлагали также накопление преимущества (частое слово чаще попадается и потому чаще употребляется дальше) и оптимальное кодирование — здесь работал Бенуа Мандельброт, ещё до того, как занялся фракталами; его обобщение закона носит два имени. Степенные законы — общая нить между частотой слов и фрактальной геометрией: и там и там нет выделенного масштаба.

Современный разбор Стивена Пьянтадози (2014) показывает, что каждое объяснение что-нибудь да не объясняет, а разные тексты и разные языки дают систематически разные отклонения.

Открытым остаётся не «есть ли закон», а «что он означает». Это разные вопросы, и путать их не стоит.

И ещё одно. Похожие степенные распределения находят далеко за пределами языка: размеры городов, доходы, ссылки между страницами, размеры лавин. Общее ли это явление или совпадение внешне похожих кривых с разными причинами — тоже открытый вопрос.


Что записать в отчёт

ЧтоНастоящий текстСлучайный текст
Всего слов
Различных слов
Частота слова № 1
Частота слова № 10
Частота слова № 100
Наклон прямой
Растёт ли словарь без конца

Главный вывод записывайте одной фразой: удалось ли отличить настоящий текст от случайного — и по какому именно признаку. Если не удалось ни по одному, так и напишите: это честный и осмысленный результат.


Читать дальше

Теория информации Шеннона: сколько информации несёт буква и почему нельзя сжать дальше → Фракталы в природе: степенные законы и величины, у которых нет одного масштаба → Закон Бенфорда: ещё одна закономерность в числах, которая кажется невозможной → Множество Мандельброта: чем ещё занимался человек, обобщивший закон Ципфа

Что почитать

Книги

  • Джордж Кингсли Ципф. Human Behavior and the Principle of Least Effort (1949) Книга, в которой закон получил имя и объяснение через «принцип наименьшего усилия». Объяснение с тех пор оспаривается, наблюдение — нет.
  • Бенуа Мандельброт. Фрактальная геометрия природы (1982) есть на русском Мандельброт занимался частотой слов ещё до фракталов и предложил обобщение закона Ципфа. Степенные законы — общая нить между тем и другим.

Статьи

  • Li W.. Random texts exhibit Zipf's-law-like word frequency distribution (1992) — IEEE Transactions on Information Theory doi:10.1109/18.165464 Заголовок говорит всё: случайный текст даёт распределение, похожее на закон Ципфа. Это и есть контрольный опыт, который вы поставите.
  • Piantadosi S. T.. Zipf's word frequency law in natural language: A critical review and future directions (2014) — Psychonomic Bulletin & Review doi:10.3758/s13423-014-0585-6 Современный разбор: какие объяснения предлагались, что каждое из них не объясняет и почему вопрос до сих пор открыт.
Обратная связь
Тип обращения
Ваша оценка
Сообщение
Подтверждение
Загрузка...

без персональных данных