Частотность использования слов: Интегрум: как сравнить частотность слов?

Частотный словарь русского языка






   

 








Мой Морфер


  • Основные результаты
    • 300 наиболее часто встречающихся словоформ
    • Статистика корпуса текстов
    • Динамика роста размера словаря
  • Детали реализации на C++
    • Требования к программному и аппаратному обеспечению
    • Производительность
    • Переносимость
    • Скачать
  • Ссылки

Сентябрь 2002

У меня давно было желание провести статистическое исследование
достаточно представительной выборки русских слов, чтобы найти
среди них самые часто употребимые, самые длинные, самые средние. ..
в общем, все самые-самые.

И вот, когда у меня в руках оказался диск «Библиотека в кармане»
(выпуск 4), я понял, что моя мечта близка к осуществлению.
Написание программы заняло совсем немного времени, и теперь я
с удовольствием представляю вам результаты этого эксперимента.

Основные результаты

Было просканировано около 1,5Гб (более полумиллиона печатных
страниц) русских текстов различной тематики:
классика, детективы, фантастика, специальная литература,
словари и энциклопедии. Общая длина всех текстов составила более
двухсот миллионов слов. (Точнее, словоформ. Здесь и далее
речь будет идти только о словоформах.)
Среди этих двухсот миллионов уникальными оказались всего лишь
чуть более двух миллионов словоформ, причём 47% из них
встретились только один раз. (Любители точных цифр найдут их
в результатах одного из прогонов ниже.)

Наиболее часто употребимыми оказались, как и следовало ожидать,
служебные слова – союзы, предлоги, частицы и местоимения.
А именно (первые два десятка):
и, в, не, на, что, я, с, он, а, как, но, его, к, это,
все, по, из, у, она, за, от…

См. также: 300 наиболее часто употребимых словоформ.

Интересно отметить высокую частотность однобуквенных сокращений:

  • ппункт, тому подобное;
  • ггосподин, грамм, город;
  • мметр, мадам, месье, мост и т.п.

Однако, наиболее часто «одинокие» буквы встречаются как инициалы.

Статистика корпуса текстов

Вот статистика одного из прогонов. Точнее было бы назвать эти
числа статистикой диска «Библиотека в кармане», так как от одного прогона
к другому меняется только время, остальные числа остаются те же.
(Правда, я добавил к этому диску несколько своих файлов, что
в общем-то, неважно.) Итак:



Всего просканировано:
  - Байт: 1. 513.487.254
  - Файлов: 3.676
  - Словоформ: 205.448.447 
  - Из них уникальных: 2.133.715

Динамика роста размера словаря

На следующем графике показана динамика роста размера словаря.
В качестве единицы «времени» (горизонтальной оси) выбран миллион слов
входного текста. По вертикальной оси отложен размер словаря в словах.


Те же самые данные, представленные в виде приращения числа незнакомых слов
на каждый миллион слов входного текста (производная первого графика):


Как видно, после примерно 60 млн. слов устанавливается относительно ровное
приращение в несколько тысяч слов на миллион, продолжающееся до конца графика.
Ярковыраженный всплеск в области 32 млн. соответствует периоду прохождения словарей
(из которых самые большие – Даля и Мюллера).

Проведя линейную аппроксимацию по области за 60 млн. слов,
получаем показанную на первом графике формулу для оценки размера
словаря в зависимости от объёма проиндексированных текстов.
Полученное число необходимо умножить на средний размер одной словарной статьи.
Он может быть оценен как средняя длина слова + размер служебной информации,
зависящий от формата хранения данных.

Средняя длина слова по результатам измерений на материале диска «Библиотека в кармане»
составила 5.36282 буквы. При этом не учитывались слова длиной более 40 букв.

Детали реализации на C++

Следующая информация будет более интересна программистам, нежели
лингвистам.

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

Вот краткое описание функциональности программы и её возможностей.
Программа просматривает указанный каталог, его подкаталоги и
архивы RAR в поисках текстовых файлов (*. txt). Все найденные
файлы пословно анализируются, составляется словарь уникальных
словоформ со счётчиками появлений в тексте каждой словоформы.
Программа «понимает» две кодировки русского текста,
DOS-866 и Windows-1251. Пока программа безразлична к морфологии,
формально «кодировкой» считается и латиница, так что для выбора
кодировки предусмотрены три ключа (-dos, -win
и -lat).
Конечно же, число поддерживаемых кодировок может быть легко расширено.

Несколько замечаний по сути проведённых оптимизаций.

  • Выбрана оптимальная структура словаря, исходя из требований
    быстрого поиска и вставки. Кандидатов, по сути, не так уж много,
    а именно std::map (двоичное дерево) и
    hash_map (список с хэш-таблицей).
    Класс hash_map пока не является частью
    стандартной библиотеки C++, но присутствует во многих её
    реализациях. В частности, я пытался применить
    hash_map из Visual C++ . Net и SGI STL
    (www.sgi.com/Technology/STL).
    SGI STL мне так и не удалось заставить работать с VC.
    К тому же, моя собственная реализация hash_map
    для данного приложения оказалась гораздо более эффективной (более чем в 2 раза),
    чем та, что поставляется с VC7, поэтому я остановил свой выбор на ней.
  • Использование строк фиксированного размера (класс
    FixedString <size_t>) для представления слов
    в словаре позволило существенно снизить требования к памяти.
    Если недостатка свободной оперативной памяти нет, то с точки зрения
    производительности предпочтительнее
    использование std::string.
    Программа имеет ключи для выбора структуры словаря (map или hash_map) и представления слов в нем (string или FixedString),
    что позволяет варьировать производительность програмы и её требования
    к памяти на этапе выполнения.
  • Вызов streambuf::sbumpc () вместо обычного
    istream::get () ещё немного повысил
    производительность.
    istream::get в VC реализована не очень эффективно.

Исходный текст программы может стать хорошим обучающим примером
для тех, кто изучает программирование на C++ (не для новичков).

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

Требования к программному и аппаратному обеспечению

Windows 95 и выше. Процессор класса Pentium.


Необходимый объём оперативной памяти зависит от объёма
анализируемых текстов. Для диска «Библиотека в кармане»
необходимо 128 мегабайт (умеренное использование файла подкачки),
рекомендуется 256М.

Производительность

Время индексирования всего диска вместе с распаковкой архивов
на различных компьютерах:

КомпьютерОСВремя, средняя скорость
до оптимизациипосле
PII-350/128W2K Pro52 мин, 65000 слов/с 
PII-350/196W2K Pro43 мин, 79000 слов/с21 мин, 163000 слов/с
PIII-750/256NT426 мин, 133000 слов/с 
PIII-1100/240XP24 мин, 135000 слов/с10 мин, 342000 слов/с

Достижению такой высокой производительности во многом способствовало
использование хэшированного ассоциативного массива (см. hash_map.h)
для представления словаря.

Переносимость

Проверено на Visual C++ 6.0, Visual C++ .NET, Borland C++ 5.5.

В связи с неполной поддержкой исключений в VC6.0 некоторые
ошибки диагностируются как «Unknown error».
Этих проблем нет у VC.NET и BC5.5.

Модули dirrec.cpp (рекурсивный просмотр подкаталогов)
и unrar.cpp (распаковка RAR-архивов) используют WINAPI,
поэтому потребуют переписывания при их переносе на не-Windows
платформу.

Скачать

Вот и собственно программа:

statsbin.zip (195K) –
исполняемые файлы (stats.exe и unrar.dll)

statssrc.zip (15K) –
исходный код на C++


  • Ссылки на другие частотные словари русского языка в Сети

  • Частотный словарь диска «Библиотека в кармане» был использован в программе «Рифмовник»
    Николая Кецариса для отсеивания малоупотребимых форм, сгенерированных на основе словаря Зализняка.

Please enable JavaScript to view the comments powered by Disqus.




 







© Сергей Слепов, 2003 — 2022.


Для чего нужны частотные словари и почему одни слова важнее других? — Нож

Заглонитель и турмы

Попробуйте прочитать такой текст на русском языке:

Заглонитель Ланс Оливер чуть не погиб в результате наплочения турма. Он ехал ласкунно на лошади покровнательно от Мэнсфилда (Австралия) и увидел вахню турмов, в которой было кастожно 15 животных. Столенно, ничего бы и не случилось, если бы собака Оливера не начала порочить на вахню.

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

Цитируется по: Р. М. Фрумкина. Психолингвистика. М., 2001

Вы встретили множество незнакомых слов, но нет сомнений, что вы в целом поняли, о чем здесь говорится, и даже можете пересказать содержание. А сконструирован этот текст очень простым способом: взят нормальный текст, но сохранены в нем только самые частотные слова, а все редкие заменены вымышленными. Вот оригинал этой истории:

Скотовод Ланс Оливер чуть не погиб в результате нападения кенгуру. Он ехал верхом на лошади неподалеку от Мэнсфилда (Австралия) и увидел стадо кенгуру, в котором было примерно 15 животных. Возможно, ничего бы и не случилось, если бы собака Оливера не начала лаять на стадо.

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

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

«и», «в», «не», «на»: частотный словарь

Представьте себе, что вы изучаете русский язык и хотите узнать: сколько слов надо выучить, чтобы понимать 20 % текста на этом языке? Ну или не понимать, а хотя бы опознавать 20 % слов в тексте.

Очевидно, что полезно сперва учить частотные слова, а потом уже редкие: знать слово «собака» куда важнее, чем «самец» или «всадник», и уж тем более, чем «вольвокс» или «рейсфедер».

А если довести эту идею до логического завершения, получится очень простой способ учить язык: надо взять частотный словарь, в котором слова отсортированы по употребительности, и заучивать его сверху вниз.

Самый популярный частотный словарь для русского языка в 2009 году создали Ольга Ляшевская и Сергей Шаров. Он свободно доступен на сайте Института русского языка им. В. В. Виноградова. Первое по частотности русское слово — это слово «и», за ним следуют «в», «не», «на», «я» и т. д. — вот и будем запоминать их подряд по этому списку:

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

Представьте себе, что вы изучаете русский язык и хотите узнать: сколько слов надо выучить, чтобы понимать 20 % текста на этом языке?

В нем 20 слов, а значит, 20 % от них — это 4 слова. А теперь присмотритесь внимательно: оказывается, выучив первые 14 слов из частотного словаря, мы и узнаем в этом тексте 4 слова — «что», «и», «на» и «этом». Желанный результат достигнут: 20 % текста поняты (хотя до смысла, конечно, еще очень далеко).

В частотном словаре каждому слову приписано число, которое показывает, сколько раз это слово встретится, если мы возьмем текст длиной 1 миллион слов. Слово «и» мы в таком тексте увидим примерно 35 802 раза, слово «в» — 31 374 раза и т. д. Если сложить частоты первых 14 слов, то окажется, что они покроют 188 072 слова из миллиона — то есть почти те самые 20 %, к которым мы стремились. Чтобы выйти за 200 000, к ним надо добавить еще три слова («к», «но» и «они»). А чтобы понять 10 % текста, достаточно и вовсе 4 слов.

Вот полные списки слов, которых хватит, чтобы понять 10 %, 20 %, 30 % и 40 % текста на русском языке:

Видно, что на первые 10 % у иностранца уйдет совсем мало усилий. На следующие 10 % понадобится еще 13 слов; чтобы достигнуть 30-процентного понимания, придется добавить 29 слов, а чтобы добраться до 40 % — 86 слов. Чем дальше мы идем по частотному списку, тем менее полезно нам каждое следующее слово:

Иначе говоря, в любом языке есть совсем немного высокочастотных слов и много низкочастотных. Например, 1 раз на миллион слов, согласно словарю Ляшевской и Шарова, встретится 1478 слов; среди них — «резвость», «увильнуть», «боезапас», «сызнова», «картографирование». Ясно, что это совсем не то, что надо учить в первую очередь.

Слова, города и всё на свете: закон Ципфа

Частоты слов подчиняются простой математической закономерности, которую в середине XX века открыл американец Джордж Кингсли Ципф (1902–1950).

Источник

Он сформулировал такую зависимость, которая получила название «закон Ципфа»: частотность слова обратно пропорциональна номеру слова в частотном списке. Например, если первое слово имеет частотность 60 000, то у второго слова будет частотность 60 000 / 2 = 30 000, у третьего — 60 000 / 3 = 20 000 и т. д. В реальном языке всё не получается так красиво: например, русский частотный словарь укладывался бы в закон Ципфа гораздо лучше, если бы у слова «и» частотность была не 35 802, а как раз около 60 000, тем не менее даже это приближение неплохо работает. Если изобразить распределение частот для первых 200 русских слов на графике, видно, что оно имеет форму гиперболы.

Закон Ципфа — один из редких примеров закона, который был открыт на материале языка, а потом нашел применение во множестве других областей.

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

Например, в Берлине 3,5 млн жителей; во втором по величине городе Германии — Гамбурге — примерно в два раза меньше: 1,8 млн. В шестом городе страны — Штутгарте — примерно в шесть раз меньше: 600 тысяч, и т. д. Видно, что на этих данных закон Ципфа работает превосходно.

Когда пытаются понять, написан ли какой-то текст на человеческом языке или нет, одна из первых проверок, которые стоит сделать, — посмотреть, подчиняется ли текст закону Ципфа.

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

Зачем нужны частоты

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

Красные слова с тремя звездочками занимают в частотном словаре места с 1-го по 2500-е, слова с двумя звездочками — с 2501-го по 5000-е, а слова с одной звездочкой — с 5001-го по 7500-е. Черные слова располагаются ниже 7500-го места. Для пользователя это имеет очень простые следствия. Если ты ищешь в словаре слово и видишь при нем три звездочки, выучи его обязательно: оно наверняка попадется еще много раз. Если при слове только одна звездочка, это достаточно полезное слово, но часто не пригодится. И, наконец, черные слова — совсем редкие; их стоит заучивать, только если стремишься выучить язык на продвинутом уровне, но если не получится, то ничего страшного. Можно прекрасно говорить по-английски, не зная, что thatch значит «соломенная крыша», а crescent — «полумесяц»; без слов restriction «ограничение» и allegedly «якобы» тоже можно прожить, а вот слова animal «животное» и play «играть» точно надо знать.

Еще одна важная область, в которой применяется частотный анализ, — это автоматическая обработка текста (natural language processing). Например, для проверки орфографии и исправления опечаток очень важно понимать, какие слова редкие, а какие — частотные. Предположим, что пользователь напечатал такую английскую фразу:

I am looking at teh black dog.

Мы прекрасно понимаем, что в ней содержится опечатка: вместо teh должно быть написано the. Но ведь teh могло легко получиться и из чего-нибудь другого: что если пользователь хотел ввести ten, но случайно попал в букву h вместо n? Или, может быть, он хотел напечатать tech, но пропустил букву c? Почему же мы всё-таки полагаем, что имелось в виду слово the, в котором переставились две буквы? Можно, конечно, долго рассуждать о том, что с ten и с tech получится неправильное предложение (например, ten black dog — плохое сочетание слов, а должно быть ten black dogs), но это знание трудно формализовать и вложить в компьютер. Но можно поступить проще: заглянем в частотный словарь, и он сообщит нам, что the — самое популярное английское слово, так что вероятность того, что пользователь хотел напечатать именно его, особенно велика. Эта стратегия — всегда исправляй опечатку на самое частотное из похожих слов — может показаться примитивной, но она неплохо работает.

В 2007 году директор по исследованиям компании Google Питер Норвиг за несколько часов, проведе–нных в самолете (даже без интернета!), написал программу для исправления опечаток, которая занимает всего 22 строки кода на языке Python и в первую очередь опирается на частотность.

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

на основе одного миллиарда слов корпуса COCA

Частота слов: на основе одного миллиарда слов корпуса COCA

Обзор
Использование данных
Формат файла/столбцы
Преобразовать TXT > Excel
Часто задаваемые вопросы

КОКА
iWeb

Сравните с другими списками слов
Сравните iWeb/COCA

испанский
португальский

English-Corpora. org
Полнотекстовые данные
Сочетается
N-грамм
слово и фраза
Академическая лексика

Бесплатные данные (5000)
Данные о покупке
Данные о покупке (iWeb)

iWeb (выпущен
в 2018 году) содержит около 14 миллиардов слов текста из чрезвычайно широкого диапазона
веб-сайтов. iWeb — одна из трех корпораций Интернета, насчитывающих 10 миллиардов
слова размером или больше, и это единственный такой корпус с тщательно исправленными
списки слов. iWeb примерно в 25 раз больше, чем COCA (другой основной источник
для данных о частоте слов), и есть некоторые
важные различия между списком iWeb и списком на основе COCA.

Когда
вы покупаете данные , вы получаете два
разные файлы: лемматизированный список (внизу слева) и список «словоформ» (внизу справа).
список словоформ насчитывает примерно
97 000 словоформ.

Объяснение столбцов для обоих типов данных находится в
загружаемый образец
(который содержит каждое десятое слово в лемматизированном списке из 60 000 слов).

лемматизированный Словоформы
ранг лемма

PoS

lemFreq диапазон диапазон10 колпачки
11610 корзина против 40995 0,04 0,01 0,01
11611 тумблер против 40981 0,04 0,01 0,08
11612 двуязычный и 40979 0,03 0,01 0,2
11613 акваланг п 40974 0,02 0,01 0,15
11614 графит п 40961 0,02 0,01 0,26
11615 лекция против 40957 0,04 0,01 0,03
11616 сейсморазведка и 40932 0,02 0,01 0,14
11617 ферма против 40921 0,03 0,01 0,05
11618 таверна п 40918 0,03 0,01 0,41
11619 орбитальный и 40916 0,02 0,01 0,14
11620 безумие п 40897 0,16 0,01 0,18
лемРанг лемма PoS словоформа словоЧастота
11610 корзина против затрудненный 21110
11610 корзина против корзина 14194
11610 корзина против мешающий 5198
11610 корзина против корзины 493
11611 тумблер в тумблер 30472
11611 тумблер против переключено 4302
11611 тумблер против переключает 3355
11611 тумблер против переключение 2852
11612 двуязычный и двуязычный 39468
11612 двуязычный и двуязычный 1511
11613 акваланг п акваланг 40974
11614 графит п графит 40961
11615 лекция против лекций 13409
11615 лекция против лекция 11695
11615 лекция против чтение лекций 10749
11615 лекция против лекций 5104
11616 сейсморазведка и сейсморазведка 40932
11617 ферма против обработано 20092
11617 ферма против сельское хозяйство 11587
11617 ферма против ферма 7772
11617 ферма против ферм 1470
11618 таверна п таверна 34616
11618 таверна п таверн 6302
11619 орбитальный и орбитальный 40916
11620 безумие п безумие 40025
11620 безумие п безумие 872

на основе одного миллиарда слов корпуса COCA

При покупке слова
частотные данные, вы покупаете доступ к нескольким различным
наборы данных (все включено по той же цене). Образцы ниже
содержат каждую десятую запись, а образцы доступны в обоих
Формат Excel (XLSX) и текстовый (TXT) (дополнительная информация о преобразовании
TXT в Excel).

Теперь вы можете
скачать лучшие 5000 записей для каждого списка слов
(каждое слово от 1 до 5000, а не только каждое десятое слово). если ты
повторно разместить список в сети, вы должны четко
указывать
www.wordfrequency.info как источник
данные. Автоматические запросы выполняются каждую ночь, чтобы найти
копии данных, которые не следуют этим
методические рекомендации. Вы будете вынуждены удалить эти
копии с вашего сайта, и вы будете добавлены в
«Зал позора». Пожалуйста, соблюдайте эти рекомендации
— Благодарность.

  Список частот Текст Эксель Топ 5000 Пояснение
1 Топ
60 000 «лемм» (см. ниже)
ТХТ XLSX Скачать
  • Возможно, большинство
    полезно для изучающих язык, где им, вероятно, все равно
    об отдельной частотности отдельных словоформ, напр.
    решить,
    решает, решил
    .
  • Показывает частоту (необработанную частоту и
    частота на миллион слов) в каждом из восьми основных
    жанры: блоги, другие веб-сайты, ТВ/фильмы, (более формальные) разговорные,
    художественная литература, журнал, газета и академический. 906:50

  • Показывает диапазон (какой процент из почти 500 000 текстов
    лемма) и дисперсия (более сложная мера
    показывая, насколько «равномерно» слово распределено по корпусу).
2 Топ
60 000 лемм + 90 005 подкатегорий

ТХТ XLSX Скачать

 

  • Расширение
    №1. Распространяется отдельным файлом из-за количества
    подкатегории, для тех, кому это не нужно
    деталь.
  • Частота в 96 различных подкатегориях
    правильные основные жанры, такие как Magazine-Sports,
    Газета-Финансы, Академическая-Медицинская, Интернет-Обзоры, Блоги-Личные,
    или телекомедии
  • Возможно, наиболее полезно для учителей или студентов
    определенный домен английского языка, например, юридический или медицинский
    Английский 906:50
3 Топ
60 000 лемм + словоформы (100 000+ форм)
ТХТ XLSX Скачать

 

  • Показывает частоту каждой словоформы для каждого из
    60 000 лучших лемм, где словоформа встречается в
    Всего не менее пяти раз.
  • Например, 5950 токенов из компенсируют ; 2922
    с компенсацией , 902 с компенсацией , 505
    компенсирует
    .
  • Возможно, наиболее полезно для вычислительной обработки
    Английский.
4 Топ
~220 000 словоформ
ТХТ XLSX Скачать

 

  • Все словоформы, встречающиеся не менее 20 раз в
    корпуса, как минимум в пяти разных текстах (странное
    имя, которое встречается только в 1 или 2 из 500 000 текстов
    не будет включен)
  • Слова встречаются без леммы или части речи
  • Показывает диапазон — сколько из почти 500 000
    тексты слово встречается
  • Показывает, какой процент времени слово
    с заглавной буквы, что часто дает представление о том,
    слово — имя собственное. 906:50

  • Показывает частоту в каждом из восьми основных жанров
    показано выше в № 1.

Леммы выше
означает, что все различные словоформы сгруппированы вместе.

This entry was posted in Популярное