Статистика языка

Раз­ви­тие компью­те­ров при­вело к созда­нию больших собра­ний оциф­ро­ван­ных тек­стов на раз­ных язы­ках — так назы­ва­емых линг­ви­сти­че­ских корпу­сов. Эти корпуса можно обра­ба­ты­вать мето­дами матема­ти­че­ской ста­ти­стики. Матема­ти­че­ские модели, порой неожи­данно про­стые, но эффек­тив­ные, поз­во­ляют компью­тер­ным линг­ви­стам пред­ложить чело­ве­че­ству и кон­крет­ному поль­зо­ва­телю реше­ние задач, свя­зан­ных с авто­ма­ти­че­ской обра­бот­кой есте­ствен­ного языка: рас­по­зна­ва­ние речи, опре­де­ле­ние языка тек­ста и машин­ный пере­вод, клас­сифи­кация тек­стов по темам, извле­че­ние зна­ний из тек­ста, выде­ле­ние клю­че­вых слов, ана­лиз тональ­но­сти тек­ста (т. е. выяс­не­ние, содержится ли в нём положи­тель­ная или отрица­тель­ная оценка), обна­руже­ние спама, созда­ние чат-ботов и т. д.

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

Опре­де­ле­ние языка тек­ста. Предпо­ложим, что компью­тер полу­чил зада­ние опре­де­лить, на каком языке напи­сан такой текст:

При все че матема­ти­ката е строга наука,
тя има и есте­ти­ческа страна.

Эта болгар­ская фраза озна­чает «При том, что матема­тика — строгая наука, она имеет и эсте­ти­че­скую сто­рону». Компью­тер не вла­деет язы­ками, но у него есть спи­сок язы­ков, к одному из кото­рых надо отне­сти этот текст. Будем счи­тать, что круг кан­ди­да­тов не слиш­ком широк: английский, бело­рус­ский, болгар­ский, немец­кий, рус­ский, укра­ин­ский, фран­цуз­ский языки.

Самая про­стая идея, кото­рая при­хо­дит в голову, — опре­де­лять язык по алфа­виту. В нашем слу­чае это кирил­лица, поэтому сразу можно отбро­сить английский, немец­кий и фран­цуз­ский языки. Но этот метод не решит задачу пол­но­стью, напри­мер, он плохо справ­ля­ется с рус­ским и болгар­ским язы­ками: болгар­ский алфа­вит — часть рус­ского (в болгар­ском нет букв Ё, Ы, Э), так что любой болгар­ский текст можно при­нять за рус­ский. Соот­ноше­ние рус­ского и укра­ин­ского алфа­ви­тов слож­нее, ни один не явля­ется частью другого: в укра­ин­ском нет буквы Ъ, зато есть буквы для обо­зна­че­ния глас­ных зву­ков Є, І, Ї и соглас­ного Ґ. Но все буквы дан­ной фразы в нём при­сут­ствуют. В бело­рус­ском нет И (вме­сто неё исполь­зу­ется буква І), поэтому он не под­хо­дит. Итак, алфа­вит­ный под­ход с зада­чей не справ­ля­ется: оста­лось три языка-кан­ди­дата.

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

На частот­ность букв обра­тили внима­ние ещё в докомпью­тер­ную эпоху. Напри­мер, в телеграф­ной азбуке Морзе, воз­никшей в пер­вой поло­вине XIX века, наи­бо­лее часто исполь­зу­емым бук­вам ста­вили в соот­вет­ствие более корот­кие соче­та­ния точек и тире. Так, самые частые в английском языке буквы E и T коди­руются одно­сим­вольно — точ­кой и тире соот­вет­ственно. Эти буквы можно встре­тить и в начале верх­него ряда стан­дарт­ной английской рас­кладки кла­ви­а­туры, уна­сле­до­ван­ной от пишущих маши­нок, — QWERTY. А в немец­кой рас­кладке при­выч­ный глазу ряд заме­нён на QWERTZ — буква Y в немец­ком языке встре­ча­ется суще­ственно реже, чем Z, и сослана на перифе­рию. Ещё один при­мер: в крип­тографии про­стые шифры на основе замены букв утра­тили зна­че­ние после того, как были изу­чены частот­ные харак­те­ри­стики язы­ков. Есте­ственно, в XIX веке под­счёты частот­но­сти выпол­ня­лись вруч­ную. Теперь же, с появ­ле­нием линг­ви­сти­че­ских корпу­сов, частоты букв или слов можно посчи­тать на компью­тере, при­чём эти дан­ные будут более точ­ными, объек­тив­ными.

Если усло­виться, что рус­ский алфа­вит состоит из 33 букв и про­бела, то окажется, что самый частый сим­вол — это про­бел (14,46%), дальше сле­дуют глас­ные О (9,42%), Е (7,33%), И (6,72%), А (6,52%) и соглас­ные Н (5,83%), Т (5,56%). А реже всего встре­чаются буквы Ф (0,27%), Ъ (0,03%) и Ё (0,01%). Конечно, в каж­дом кон­крет­ном тек­сте частоты могут отли­чаться от при­ве­дён­ных, но эти откло­не­ния будут несуще­ствен­ными.

Статистика языка // Математическая составляющая

А вот в болгар­ском языке частоты букв будут другими. Пер­выми после про­бела идут те же четыре глас­ные, что и в рус­ском, но в обрат­ном порядке: А, И, Е, О. Буква Ъ в рус­ском языке — ред­кость, а в болгар­ском упо­треб­ля­ется в разы чаще: она обо­зна­чает осо­бый глас­ный звук типа крат­кого «а» и встре­ча­ется даже в самом слове българ­ски. Послед­ней по частот­но­сти бук­вой явля­ется Ь. Всё это пока­зы­вает, что частот­ность букв действи­тельно явля­ется инди­ви­ду­аль­ной харак­те­ри­сти­кой языка.

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

Зная частот­но­сти букв для каж­дого из трёх язы­ков-пре­тен­ден­тов, можно найти веро­ят­ность появ­ле­ния всей фразы:

Полу­ча­ется, что веро­ят­ность слу­чай­ного появ­ле­ния этой фразы в болгар­ском языке в 300 раз больше, чем в рус­ском, и в 300,000 раз больше, чем в укра­ин­ском. Если о про­ис­хож­де­нии фразы нет апри­ор­ной информации, то языки-кан­ди­даты счи­таются рав­но­прав­ными. Это поз­во­ляет срав­ни­вать веро­ят­но­сти появ­ле­ния фразы в раз­ных язы­ках, пред­ста­вив их более при­вычно, в процен­тах:

болгар­ский — 99,65%, рус­ский — 0,3497%, укра­ин­ский — 0,0003%.

Сле­до­ва­тельно, выбрав вари­ант с мак­сималь­ной веро­ят­но­стью, в дан­ном при­мере полу­чим пра­виль­ный ответ: фраза напи­сана по-болгар­ски. Любопытно, что такой про­стой алго­ритм неплохо сра­бо­тал даже на тек­сте небольшой длины. Но так бывает не все­гда. Напри­мер, для назва­ния этой книги Матема­ти­че­ская состав­ляющая полу­ча­ется неожи­дан­ный результат:

болгар­ский — 51,55%, рус­ский — 40,75%, укра­ин­ский — 7,7%.

Симпа­тия этого алго­ритма к болгар­скому языку объяс­нима и носит общий харак­тер: в нём меньше букв, чем в рус­ском или укра­ин­ском язы­ках, а зна­чит, частот­ность отдель­ной буквы будет в сред­нем чуть больше. Поэтому большин­ство нестан­дарт­ных тек­стов алго­ритм сочтёт болгар­скими.

Точ­ность опре­де­ле­ния языка тек­ста можно повы­сить, если рас­смат­ри­вать не частоты букв по отдель­но­сти, а частоты ком­би­наций сим­во­лов неко­то­рой длины. Дело в том, что, в отли­чие от при­ме­нён­ной выше про­стейшей модели, буквы в реаль­ном тек­сте не неза­ви­симы: на самом деле каж­дая буква зави­сит от пред­ше­ствующих, по край­ней мере — от преды­дущей. Так, по пра­ви­лам рус­ского языка после Ъ могут идти только буквы Е, Ё, Ю или Я. В болгар­ском после Ъ можно встре­тить и букву Л, при­чём это в 10 раз веро­ят­нее, чем встреча с Е, Ю и Я, вме­сте взя­тыми. А в укра­ин­ском И почти не исполь­зу­ется после про­бела — зна­чит, наша пер­вая фраза со сло­вами има и едва ли может быть укра­ин­ской.

Эту идею ака­демик Андрей Андре­евич Мар­ков (1856—1922) вопло­тил в матема­ти­че­ской модели, кото­рая в его честь полу­чила назва­ние «цепь Мар­кова». Он изу­чил рас­пре­де­ле­ние глас­ных и соглас­ных в после­до­ва­тель­но­сти из 20,000 букв в романе «Евге­ний Онегин» (пер­вая глава и начало вто­рой). Основ­ной вывод гла­сил: «Мы видим, что веро­ят­ность букве быть глас­ной зна­чи­тельно изме­ня­ется, в зави­симо­сти от того, пред­ше­ствует ей глас­ная или соглас­ная». Под­счёты А. А. Мар­кова пока­зали, что общая доля глас­ных — 43,2%, но веро­ят­ность встре­тить глас­ную после глас­ной уменьша­ется до 12,8%, а после соглас­ной — воз­рас­тает до 66,3%.

Статистика языка // Математическая составляющая

Полу­ча­ется, что в реаль­ном тек­сте имеем дело не с веро­ят­но­стями неза­ви­симых слу­чай­ных событий, а с услов­ными веро­ят­но­стями после­до­ва­тельно про­ис­хо­дящих событий. В мар­ков­ской модели будущее зави­сит от насто­ящего, а вот прошлое можно не ана­ли­зи­ро­вать: его вли­я­ние заложено в насто­ящем. Житейский при­мер: пред­ска­зы­вая погоду на зав­тра, можно ори­ен­ти­ро­ваться на сего­дняш­нюю. Зим­няя гроза — ред­кое явле­ние, так что если сегодня гроза, то зав­траш­ний день может ока­заться и сол­неч­ным, и дожд­ли­вым, но вряд ли выпа­дет снег. С дру­гой сто­роны, если сегодня идёт снег, то уви­деть зав­тра грозу — мало­ве­ро­ятно.

Мар­ков­ские цепи как матема­ти­че­ский инструмент можно исполь­зо­вать для ана­лиза рас­пре­де­ле­ния не только глас­ных и соглас­ных в дан­ном языке, но и для всех пар букв алфа­вита. Зави­симость буквы от пред­ше­ствующей заме­тить несложно. Напри­мер, в рус­ском языке среди пар, начи­нающихся с буквы З, наи­бо­лее веро­ятны соче­та­ния ЗА (29,67%), ЗН (10,18%), З⎵ (про­бел после З; 8,36%), а после буквы А те же сим­волы А, Н, ⎵  дают совсем другие результаты: АА (0,03%), АН (9,56%), А⎵ (20,36%).

Для реше­ния задачи опре­де­ле­ния языка тек­ста можно срав­ни­вать частот­ные харак­те­ри­стики пар из оди­на­ко­вых сим­во­лов в раз­ных язы­ках. Напри­мер, тройки лиде­ров среди пар, начи­нающихся с буквы З: в рус­ских текстах — ЗА, ЗН, З⎵; в укра­ин­ских — ЗА, З⎵, ЗН; в болгар­ских — ЗА, ЗИ, ЗВ.

Зная частоты все­возмож­ных пар, можно в каж­дом из язы­ков-кан­ди­да­тов найти веро­ят­ность в мар­ков­ской модели сло­во­со­че­та­ния Матема­ти­че­ская состав­ляющая, кото­рое рас­смат­ри­ва­ется как после­до­ва­тель­ность пар: ⎵ М (буква М явля­ется нача­лом слова), МА, АТ, ТЕ, ЕМ и т. д. Веро­ят­ность всего сло­во­со­че­та­ния нахо­дится как про­из­ве­де­ние веро­ят­но­стей этих пар. Результаты (округ­лён­ные) дают ответ на вопрос, где могла появиться такая книга:

болгар­ский — 0,06%, рус­ский — 99,94%, укра­ин­ский — 0,00003%.

А для фразы, с кото­рой начался разго­вор (При все че матема­ти­ката…), степень уве­рен­но­сти у мар­ков­ской модели почти абсо­лют­ная: веро­ят­ность, что фраза напи­сана по‐­болгар­ски, равна 99,99991%!

Частот­ность после­до­ва­тель­но­стей из двух (а лучше даже трёх) букв — очень точ­ная харак­те­ри­стика языка. При­ве­дён­ный метод — основа всех при­ме­ня­емых опре­де­ли­те­лей языка, самый извест­ный — модуль в Google Translate. Полу­ча­ется, что для реше­ния этой линг­ви­сти­че­ской задачи не тре­бу­ется зна­ние язы­ков, рабо­тает чистая ста­ти­стика.

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

Предпо­ложим, что поль­зо­ва­тель ввёл фразу:

Его руква немного болит,

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

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

Вот све­де­ния о часто­тах наших четырёх слов в корпусе: его — 46,643,493, руква — 50, немного — 3,475,296, болит — 203,993. По при­ня­той дого­во­рён­но­сти алго­ритм решает, что в слове руква допущена опе­чатка.

На вто­ром этапе опре­де­лим набор слов, одно из кото­рых, возможно, хотел вве­сти поль­зо­ва­тель. Оче­видно, что эти слова должны быть похожими, близ­кими в каком-то смысле к слову руква: вряд ли чело­век хотел напе­ча­тать локоть, а полу­чи­лась руква.

Для изме­ре­ния бли­зо­сти слов в линг­ви­стике обычно исполь­зу­ется рас­сто­я­ние Даме­рау —Левен­штейна (назван­ное в честь аме­ри­кан­ского линг­ви­ста и рос­сийского матема­тика). Это рас­сто­я­ние равно минималь­ному числу «шагов», необ­хо­димых для пре­враще­ния одного слова в другое. Такими шагами являются типо­вые, стан­дарт­ные ошибки при наборе тек­ста: замена одной буквы на другую, добав­ле­ние или уда­ле­ние буквы, пере­ста­новка сосед­них букв.

Напри­мер, рас­сто­я­ние между сло­вами собака и кошка равно 3: замена с на к (полу­чится кобака); замена б на ш (кошака); уда­ле­ние пер­вой а (кошка). Есть и дру­гой путь длины 3: собака → соака → сошка → кошка. Но осуще­ствить пре­враще­ние меньше чем за 3 шага не удастся.

Такое рас­сто­я­ние между сло­вами обла­дает всеми при­выч­ными свойствами рас­сто­я­ния между точ­ками на плос­ко­сти: неот­рица­тель­ность, симмет­рич­ность (рас­сто­я­ние от собака до кошка равно рас­сто­я­нию от кошка до собака), спра­вед­ливо нера­вен­ство тре­уголь­ника (см. «Далё­кое близ­кое»). Теперь можно форма­ли­зо­вать ощуще­ние, что слово руква легко полу­ча­ется из слова рука, но не из слова локоть: рас­сто­я­ние Даме­рау —Левен­штейна от рука до руква равно 1, а от локоть до руква  — 5.

Опе­ча­ток в одном слове обычно немного, чаще всего одна. Най­дём в сло­варе все слова, кото­рые отстоят от подо­зри­тель­ного слова руква на рас­сто­я­ние 1. Слов-кан­ди­да­тов не так много: рука (уда­ле­ние в), рукав (пере­ста­новка а и в), буква (замена р на б) и рукава (добав­ле­ние а). На этом можно оста­но­виться и пред­ложить поль­зо­ва­телю спи­сок кан­ди­да­тов — пусть выби­рает сам. Именно так рабо­тает, напри­мер, про­верка орфографии в Microsoft Word.

Но компью­тер может пойти дальше и попро­бо­вать испра­вить опе­чатку, т. е. выбрать самого веро­ят­ного кан­ди­дата и пред­ложить его поль­зо­ва­телю (так поступает Google Docs), а может и сам под­ста­вить его в пред­ложе­ние (так обычно рабо­тают модули в смарт­фо­нах, «помогающие» наби­рать текст). Этот выбор един­ствен­ного кан­ди­дата — сле­дующий этап алго­ритма, кото­рый можно реа­ли­зо­вы­вать по-раз­ному.

Про­стейшее, но неплохо рабо­тающее реше­ние — выбрать самое частот­ное слово. Частоты слов-кан­ди­да­тов в корпусе таковы: рука — 350,883, рукава — 126,817, буква — 107,262, рукав — 66,094. Как видно, в при­мере Его руква немного болит такой авто­ма­ти­че­ский выбор совпа­дает с чело­ве­че­ским.

А вот во фра­зах

Здесь напи­сана непра­виль­ная руква    и    У меня руква порвался

про­стейшее реше­ние — заме­нить руква на рука — будет оши­боч­ным. Чтобы алго­ритм рабо­тал более «разумно», надо каким-то обра­зом учи­ты­вать слова в кон­тек­сте фразы. И здесь на помощь снова при­хо­дят мар­ков­ские цепи.

Восполь­зу­емся идеей, кото­рая при­ме­ня­лась в ана­лизе по бук­вам, и попро­буем пред­ска­зать сле­дующее слово по послед­нему из виден­ных. Напри­мер, слово непра­виль­ная встре­ча­ется в корпусе 50,267 раз; пары непра­виль­ная рукава и непра­виль­ная рукав в корпусе отсут­ствуют, непра­виль­ная рука встре­ча­ется 4 раза, непра­виль­ная буква — 53 раза. На при­мере фразы Здесь напи­сана непра­виль­ная руква видно, что метод выбора самой частот­ной пары сосед­них слов более эффек­тив­ный, чем про­стейший алго­ритм.

Даль­нейшее улучше­ние алго­ритма состоит в том, что учи­ты­ваются и слово, идущее перед подо­зри­тель­ным сло­вом, и слово, идущее после него. Опре­де­ляются частоты обеих пар, най­ден­ные веро­ят­но­сти пере­множаются. На при­мере фразы У меня руква порвался даже без ста­ти­сти­че­ских дан­ных видно, что после срав­не­ния про­из­ве­де­ний веро­ят­но­стей пар выбор наи­большего выгля­дит досто­вер­ным реше­нием:

(меня рука) $\cdot$ (рука порвался);  (меня рукава) $\cdot$ (рукава порвался);
(меня буква) $\cdot$ (буква порвался);  (меня рукав) $\cdot$ (рукав порвался).

Полу­ча­ется хорошо рабо­тающее исправ­ле­ние опе­ча­ток.

Разуме­ется, и этот алго­ритм можно и нужно совершен­ство­вать. Во‐пер­вых, веро­ят­но­сти одно­шаго­вых опе­ча­ток отли­чаются: напри­мер, пере­ста­новка сосед­них букв в слове зна­чи­тельно веро­ят­нее, чем замена буквы на уда­лён­ную от неё на кла­ви­а­туре (скажем, заме­нить б на р не так-то про­сто). Во‐в­то­рых, можно встре­титься с пра­виль­ным, имеющим смысл сло­во­со­че­та­нием, кото­рое отсут­ствует в корпусе, и тогда про­из­ве­де­ние веро­ят­но­стей будет равно нулю (при­мер: сло­во­со­че­та­ние} рабо­тающее исправ­ле­ние, кото­рое мы исполь­зо­вали в конце преды­дущего абзаца, в корпусе пока отсут­ствует). В‐тре­тьих, рас­смот­рен­ный вари­ант мар­ков­ской цепи свя­зы­вает слово только с ближайшими сосе­дями, хотя в языке встре­чаются зави­симо­сти и на далё­ких рас­сто­я­ниях. Напри­мер, во фразе Руква у рубашки, кото­рую Вася купил в аэропорту, ока­за­лись слиш­ком корот­кими, выби­рая на замену рукав или рукава, при­дётся опи­раться не на сосед­ние, а на далё­кие слова ока­за­лись и корот­кими. В‐чет­вёр­тых, сде­лав опе­чатки, можно полу­чить фразу со сло­вами из сло­варя, но оши­боч­ную: напри­мер, У меня лукав порвался. Алго­ритм такую фразу ни в чём не запо­до­зрит. Впро­чем, услож­не­ние алго­ритма поз­во­ляет спра­виться с подоб­ными затруд­не­ни­ями.

Компью­тер­ная линг­ви­стика. Линг­ви­сти­че­ские корпуса — фун­дамент компью­тер­ной линг­ви­стики, неис­черпа­емый источ­ник све­де­ний о языке. Их ана­ли­зи­руют и про­фес­си­о­налы — линг­ви­сты и компью­тер­ные спе­ци­а­ли­сты, и начи­нающие иссле­до­ва­тели. Даже школь­ник может само­сто­я­тельно напи­сать программу для поиска и про­верки зако­номер­но­стей в язы­ко­вых мас­си­вах.

Самый извест­ный ресурс для рус­ского языка — это Наци­о­наль­ный корпус рус­ского языка (НКРЯ), в основ­ной части кото­рого содержится 283 мил­ли­она слов, а всего — около 600 мил­ли­о­нов слов. Корпус Araneum Russicum Maximum, объёмом 16 мил­ли­ар­дов слов, мы исполь­зо­вали для опре­де­ле­ния частоты слов при исправ­ле­нии опе­ча­ток.  Он состоит из тек­стов, собран­ных из интер­нета, а это очень важ­ный спо­соб созда­ния современ­ных линг­ви­сти­че­ских ресур­сов: ведь в сети лежит множе­ство доступ­ных тек­стов. К сожа­ле­нию, эти корпуса нельзя сохра­нить на своём компью­тере, и возмож­но­сти поль­зо­ва­теля огра­ни­чены веб-интерфей­сом. На помощь при­хо­дят другие источ­ники: так, опре­де­ле­ние языка про­во­ди­лось на основе сво­бодно рас­про­стра­ня­емых корпу­сов из про­екта Universal Dependencies, где в еди­ном формате пред­став­лены дан­ные 70 язы­ков.

Понятно, что частота отдель­ных слов и их соче­та­ний суще­ственно зави­сит от набора тек­стов, вклю­чён­ных в корпус. У корпуса художе­ствен­ных тек­стов и корпуса тек­стов новост­ных — раз­ный «сло­вар­ный запас». Уни­вер­саль­ного, пра­виль­ного корпуса для языка не суще­ствует, но надо научиться даже из отдель­ных, так или иначе «окрашен­ных» корпу­сов извле­кать общие свойства, черты, осо­бен­но­сти дан­ного языка. Это жела­ние вызы­вает в памяти вос­клица­ние осно­ва­теля пале­он­то­логии Жоржа Кювье: «Дайте мне одну кость, и я вос­ста­новлю живот­ное!». По сути — это те задачи, из кото­рых и роди­лась матема­ти­че­ская ста­ти­стика: как полу­чить пред­став­ле­ние о нена­блю­да­емом целом по неко­то­рой выборке. И для их реше­ния были созданы методы, более про­дви­ну­тые, чем про­стой под­счёт частот.

Один из при­ёмов — усред­не­ние, согла­со­ва­ние зна­че­ний частот по раз­ным фраг­мен­там корпуса, чтобы уменьшить вли­я­ние отдель­ных тек­стов. Напри­мер, частот­ность слова якорь в текстах НКРЯ, рас­пре­де­лён­ных по деся­ти­ле­тиям, с 1970 года до наших дней, выгля­дит странно: 1970‐е — встре­ча­ется 160 раз на мил­лион; 1980‐е — 6,8; 1990‐е — 8,4; 2000‐е — 6,6; 2010‐е — 6,7. При­чина ано­ма­лии — вклю­чён­ная в НКРЯ «Книга о яко­рях», издан­ная в 1973 году. В ней одной слово якорь встре­ча­ется 1769 раз, а во всём корпусе — только 2896. Полу­чен­ная про­стым под­счё­том частот­ность слова якорь по всему мас­сиву — 21,9 на мил­лион — явно завышен­ная. Но если упо­ря­до­чить зна­че­ния частот по деся­ти­ле­тиям и взять число из сере­дины списка (меди­ану), то полу­чится более реаль­ный результат: 6,8 на мил­лион. Можно учи­ты­вать и диспер­сию, т. е. оце­ни­вать раз­бро­сан­ность зна­че­ний: как часто и на сколько они откло­няются от сред­него зна­че­ния. Такой метод при­ме­нял ещё А. А. Мар­ков, рабо­тая с тек­стом «Евге­ния Онегина»: он про­ве­рял устой­чи­вость, неза­ви­симость своих результа­тов от спо­со­бов под­счёта. Более слож­ные методы исполь­зуются для пред­ска­за­ния «насто­ящих», истин­ных частот соче­та­ний слов: надо уметь отли­чать те, что в корпусе не встре­ти­лись, но в принципе вполне возможны, от тех, что не встре­ти­лись, потому что прак­ти­че­ски невозможны.

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

Поэтому в конце 1980‐х годов на пер­вый план в авто­ма­ти­че­ской обра­ботке есте­ствен­ного языка вышел ста­ти­сти­че­ский под­ход: посмот­рим, как похожие задачи реша­лись до нас чело­ве­ком, и най­дём реше­ние, ком­би­ни­руя его из гото­вых частей. Это стало возмож­ным после появ­ле­ния линг­ви­сти­че­ских корпу­сов. Методы, рас­смот­рен­ные нами на при­ме­рах, пре­жде всего частот­ность букв, слов и соче­та­ний, стали осно­вой реше­ния задач компью­тер­ной линг­ви­стики, пере­чис­лен­ных в начале ста­тьи. Инте­ресно, но време­нами созда­ётся впе­чат­ле­ние, что алго­ритмы и программы, осно­ван­ные на ста­ти­сти­че­ском под­ходе, в какой‐то мере осво­или язык.

Напри­мер, эффек­тив­ность при­ме­не­ния мар­ков­ских цепей неявно свя­зана с грамма­ти­кой и струк­ту­рой языка. В при­мере со сло­во­со­че­та­нием Матема­ти­че­ская состав­ляющая при выборе одного из трёх язы­ков помогла, в част­но­сти, высо­кая частот­ность соче­та­ния ая в рус­ском языке. Дело в том, что в рус­ском языке в жен­ском роде встре­ча­ется окон­ча­ние ‐ая, при­чём часто, а в болгар­ском и укра­ин­ском в такой форме было бы про­сто ‐а.

В XXI веке матема­тика пред­ложила новые под­ходы к авто­ма­ти­че­ской обра­ботке языка. Бур­ное раз­ви­тие искус­ствен­ных нейрон­ных сетей, обу­ча­емых на огром­ных мас­си­вах вход­ных дан­ных, дало возмож­ность решать самые раз­ные задачи компью­тер­ной линг­ви­стики. А принципы работы нейрон­ных сетей ещё больше при­ближают компью­тер к тому, что можно назвать понима­нием есте­ствен­ных язы­ков. На дан­ном этапе компью­тер­ная линг­ви­стика всё больше пре­враща­ется в одну из раз­но­вид­но­стей машин­ного обу­че­ния. Но если мы хотим разо­браться с тем, что же про­ис­хо­дит при обра­ботке тек­стов искус­ствен­ными нейрон­ными сетями, нужен именно линг­ви­сти­че­ский взгляд. Линг­ви­стика как наука необ­хо­дима и для более пол­ного исполь­зо­ва­ния возмож­но­стей уже суще­ствующих инструмен­тов, и для постро­е­ния новых матема­ти­че­ских моде­лей.

Разворот книги

Книга «Математическая составляющая»
Книга «Математическая составляющая»

Допол­не­ния, коммен­та­рии

Частот­ность букв действи­тельно явля­ется отли­чи­тель­ной и при­том нагляд­ной харак­те­ри­сти­кой языка. При­ве­дём гистограммы для трёх сла­вян­ских язы­ков.

Статистика языка // Математическая составляющая
Статистика языка // Математическая составляющая
Статистика языка // Математическая составляющая

Частот­ность важна в реаль­ной дея­тель­но­сти, напри­мер, в при­клад­ной линг­ви­стике и крип­то­логии (в ней две ветви: крип­тография и крип­то­ана­лиз), встре­ча­ется и в бел­ле­три­стике.

Рас­сказ Эдгара По «Золо­той жук» (1843) — одно из пер­вых попу­ляр­ных (и художе­ствен­ных!) изложе­ний как реаль­ного спо­соба шиф­ро­ва­ния мето­дом под­ста­новки, замены букв какими-то зна­ками, так и метода его расшиф­ровки — частот­ного ана­лиза. А в 1903 году Артур Конан Дойл в серии исто­рий о Шер­локе Холмсе опуб­ли­ко­вал рас­сказ «Пляшущие чело­вечки», матема­ти­че­ски весьма схожий с «Золо­тым жуком».

Лите­ра­тура

Ляшев­ская О. Н., Шаров С. А. Частот­ный сло­варь современ­ного рус­ского языка (на мате­ри­а­лах Наци­о­наль­ного корпуса рус­ского языка). — М.: Азбу­ков­ник, 2009. — [http://dict.ruslang.ru/freq.php].

При­клад­ная и компью­тер­ная линг­ви­стика / Под ред. И. С. Нико­ла­ева, О. В. Мит­ре­ни­ной, Т. М. Ландо. — М.: Ленанд, 2016.

Мар­ков А. А. При­мер ста­ти­сти­че­ского иссле­до­ва­ния над тек­стом «Евге­ния Онегина», иллю­стри­рующий связь испыта­ний в цепь // Изве­стия Импе­ра­тор­ской Ака­демии наук. Сер. 6. 1913. Т. 7. Вып. 3. Стр. 153—162.

Мар­ков А. А. Об одном при­ме­не­нии ста­ти­сти­че­ского метода // Изве­стия Импе­ра­тор­ской Ака­демии наук. Сер. 6. 1916. Т. 10. Вып. 4. Стр. 239—242.