Pull to refresh

Комментарий к заметке «Частотный анализ украинского языка»

Reading time12 min
Views1.3K
Как комментарий к заметке «Частотный анализ украинского языка» [1] излагаются простые наблюдения по частотности пар букв. Предлагается применить разработанную технику к анализу текстов. Основная гипотеза: множество геометрически связанных кластеров символов несут информацию об авторстве и другие важные интегральные данные.

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

Мотивация

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

Примерно шесть-семь лет назад мы с товарищем проделывали похожие, однако менее масштабные подсчеты. Мотивация у нас была любительская, примитивная, но другая. Данные вычисления, как нам верилось, могли быть первым шагом в попытке машинного определения выделения из текста значащей для человека информации. (Позже, оказалось, что они, в наиболее интересной части, не оригинальны [1-3]).

image

Предполагалось, что машина умеет «читать», знает символы букв и знаков препинания, умеет подсчитывать частотности и т.д. Но не умеет «думать», в частности, получать обобщающую интегральную информацию о тексте в целом. Что есть добро и зло, о чем или о ком идет речь, и т.д. Задачей тогда являлось бы изучение структуры текста и подбор «алгоритмов», позволяющих выделить из частотности значащую информацию, не заложенную на уровне букв. С точки зрения человека, попробуем, например, выключить свой опыт обучения и попытаемся понять смысл групп не ясных для нас последовательных символов. Закодировать, например, все буквы а, б, в, и т.д как x, y, z, альфа, бета и гамма, или, лучше вавилонскими клинышками. И после этого спросить, что мы можем сказать про текст в целом. Не ясно, но, верится, что примерно в той же области проблема — взять ДНК и найти «смысл» в длинной последовательности из четырех букв.

Значащей информацией в очень узком смысле может быть схожесть текста с другим, авторство, ритм и скорость текста, и т.д. Продвинуться в решении даже таких примитивных проблем мы так существенно не смогли. Некоторые наблюдения есть, однако вопросов много больше. Хочется верить, что задача осмысленная и частично решаемая. Мы взялись за такой примитивный частотный анализ, после простых прикидок (на основе англоязычных текстов). Во-первых, посмотрели на диаграмму появления набора символов «Белый Клык» в одноименном романе Д. Лондона. Имя собаки в первых частях вообще отсутствовало! А на мелком масштабе, в основной части книги, флуктуации плотности слов были, конечно, переполнены шумами. Тем не менее, было очевидно, что строго нулевая частотность слов «Белый Клык» в начале романа коррелирует с сюжетом. Возникло явное ощущение, что либо главный герой не родился, либо не был назван так, либо роман состоит из нескольких частей (про клыка или не про клыка). Назвать такой вывод строгим, наверное нельзя. Тем не менее, верится, что слова «В первых главах Белый Клык не упоминается...», были бы нормальной частью Ответа Человека о тексте. Неполной, примитивной, но и машинный «анализ» занял миллисекунды и никакого алгоритма не было вообще. Во-вторых, статистика появления имен персонажей в последней книге о Гарри Поттере также указывала на то, что очень можно проследить только по частотности, когда и с кем Гарри был рядом (геометрически по тексту, но выходило, что и по смыслу), когда из сюжета от Гарри отпал Рон, Хогвартс, когда появился Волан-де-Морт и т.д. Т.е. беря слова «Гарри», и глядя на плотность других символов в геометрической окрестности на странице, можно было делать какие-то очень расплывчатые и туманные выводы о «линии сюжета».

Техническая задача

Первым шагом в выделении главного героя является наработка техники по изучению частотности букв. На этом первом шаге наши достижения и закончились в общем-то. В силу дороговизны интернета в то время, мы не проводили тщательный анализ форумов и СМИ, а просто брали текстовые файлы с книгами одного автора, начиная от романов Льва Толстого и заканчивая детективами Дарьи Донцовой. Всего было несколько сотен книг объема от 300Кб. Интересным оказалось уже то, что писатели-графоманы имели явные корреляции в своих произведениях по частотности отдельных букв. В частности, показательным был спектральный ряд букв для плодовитого автора «иронических детективов».

Проверка спектрального состава текстов, в которой изучались бы кластеры из рядом стоящих букв была следующим шагом. В частности, нами вычислялась задача в простейшей геометрии — нормированная частотность пар ближайших значащих символов «аа», «аб», «ав», ..., «яя». Среди наиболее частотных комбинаций пар символов были выделены первые 30-60, которые и сравнивались для разных текстов. Рассматривались относительные показатели — частотность, деленная на суммарную частотность пар. Статистическая сумма в задаче для 300-400 Кб текста оказывалась довольно большой. Более конкретно, бралась частотность трилогии «Детство», «Отрочество», «Юность», на фоне которой смотрелись флуктуации частотностей других произведений. Результаты показали, в частности существенное отличие по спектру у разных авторов, даже у признанных основоположниками русского литературного языка.

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

Остальные наблюдения были не столь точны. В частности, хорошие писатели в своих произведений одного периода (ранний Чехов, или поздний Чехов, ранний Толстой или поздний) даже на глаз имели схожие спектральные кривые. Однако эти авторские кривые отличались от кривых других авторов. Что же касается современных писателей, то корреляция у кривых для их текстов была тем сильнее, чем этот писатель считается более «мусорным». Данный вывод был сделан на основе нескольких примеров и строгим не является. К примеру, кривые разных графоманских произведений новичков с Самиздата, ложились практически друг на друга. То же самое, можно было сказать и о более продвинутых произведениях, как, например, акунинские Фандорины, фантастика раннего и среднего Лукьяненко, детективы Марининых и т.д. Очень плохо на себя ложились классики и, в частности, Достоевский. Выбивались из спектра автора романы Толстого, особенного последнего периода. Для учета всех авторов, разделения кривых в классы авторства, приходилось пробовать разные определения близости кривых. Однако, в целом, методика определения стиля работала. Спектральные кривые разных авторов в огромном большинстве случаев удавалось отделить друг от друга (более сотни авторов).

В нашем подходе включение кластеров из трех рядом стоящих букв не давало существенных количественных поправок к определению стиля автора. Более значимыми казались отличия в
частотности знаков препинания. (В работах Хмелева и последователей, триграммы брались за основу [2-4]). Не наблюдалось никакой структуры и при подсчете пар «через один» и в других простейших модификациях.

Почему кластеры из пары рядом стоящих букв проясняют в текстах многое, это в целом загадка. В комментариях к оригинальному посту про частотность было такое замечание:
Robotex
Кстати, если кто-то знает, как преобразовать последовательность фонем (при чем они могут повторяться, т.е. слово мама программа распознает как мммммммааааааааамммммммммааааааа) в слова, то я рад был бы почитать (на этом пока остановился)

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

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

Приятным был также вывод, что старомодные «Ъ» или украинские «i», русский или украинский языки не влияли на спектральную кривую данного автора (для примера брался только Бунин, статистики по авторам нет). Проверить влияние перевода с английского на авторство и стиль текста не удалось. Анализ только английских текстов был ограничен Гарри Поттером и парой произведений Джека Лондона, т.е. статистики опять таки не набирается, но двух символьные корреляции у этих двух авторов также были видны.

Задача была нами заброшена во-первых потому, что поиск даже по рунету показал, что схожий анализ частотности текстов проводился с начала прошлого века, в том числе Моровозым [1], работой которой заинтересовался сам Марков. Была и какая-то фоменковщина на этот счет. Сам же вывод про возможность определения авторства текстов на основе триграмм уже был сформулирован районе 2000 года Д. Хмелевым [2,3]. Были и работы других авторов, см. например [4]. В работах Хмелева, конечно, шли слова про инварианты текста, марковские цепи, диагонализацию матриц перехода и т.д. По сути же, там сделаны похожие утверждения про важность наиболее часто встречающихся троек букв для определения стиля. К эти работам у нас есть много вопросов. Как ловится Достоевский, например, по триграммам, нам не понятно. И т.д.

Даже без математических терминов видно, что пары букв выдают довольно похожие спектральные графики у многих авторов. Количественно, цифры по диапазону автора сильно зависели от того, как именно определялась величина близости двух графиков, бралась ли поточечно квадратичная ошибка, кубическая ли, и т.д. Но это уже детали. То, что закономерность в «стиле» есть на уровне пар букв и знаков препинания, довольно очевидно. Явные проколы наблюдались на примерах, когда роман писался «неграми в проекте». Также переводные книги представляли проблему.

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

То, что язык построен только на частотности пары-тройки символов, и более никаких объективных количественных характеристик и законов нет, верится очень слабо. Больше верится в то, что никто не искал в силу сложности анализа в прошлые годы. Однако наш дальнейший поиск принципов организации текстов, геометрии символов в русском языке никаких очевидных результатов не дал. Одна из гипотез, например, была в том, что наличие тождественных кластеров внутри одного предложения, например, пара «ма» внутри одного и того же предложения, является важной характеристикой текста и стиля. В школе, к примеру, учат, что в рядом стоящих предложениях не стоит два раза говорить «который». Или повторять имя главного героя. Верилось, что и повторение пары букв служило бы критерием плохого качества текста, было бы нарушением мелодичности, и т.д. Те же детские слова «мама», «папа», «баба»: очевидно, что вторые «ма», «па», «ба» с точки зрения приносимой новой информации излишни. Много «ма» без разделения точкой, — также надо избегать. Поэтому такие комбинации брались с усиленным — уменьшенным вкладом — в 2, 3 раза и т.д. Однако никаких новых четко формулируемых результатов эта гипотеза не принесла. Анализ классики показал, что многие произведения включают парные дубли между двумя точками. Усложнения в геометрии на таком уровне, конечно, сразу же ловили стихотворения, но это и так очевидно.

Возможно, что изучать структуру текстов надо более тонко. Или же ставить задачу совершенно по-другому. К сожалению, ни одного грамотного специалиста, который бы серьезно отнесся к вопросу в нашем окружении не нашлось. Что уже известно науке, понять мы не могли. Люди с мехмата МГУ говорили, что «все это сделано в бауманке сто лет назад», а потому неактуально. Опубликованных же текстов и людей из бауманки тогда найти мы не смогли и т.д.

Возможно новая задача

Наши «опыты» не продвинулись также и в из-за отсутствия элементарных знаний в программировании и дороговизны интернета. В силу примитивности программы и оборудования, анализ 500 страничного текста занимал несколько минут, через компьютер зависал и т.д. Мы не могли помыслить об автоматическом и бесплатном скачивании текстов гигабайтами через интернет, анализе html тегов и т.д. Т.е. заключения, сделанные выше — это был (и есть) наш технический предел.

Однако задача изучения геометрической структуры текста в русском языке ставилась нами изначально (не серьезно, конечно) более широко.

Возможно, что кто-то из сообщества сейчас сумеет проверить гипотезу… Она состоит в том, что каждое интернет-сообщество, газета и т.д. имеет свой спектр, который было бы интересно проанализировать количественно.

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

В целом, такой анализ ресурсов помог бы упорядочивать интернет. Это, конечно, очень далеко от проблемы распознавания смысла текстовой информации, но какое-то новое знание о сообществах, машина должны получать и от такой геометрии. Имеется в виду, следующее. По аналогии с частотностью букв в языке, простейшая задача анализа текста, конечно, состоит в подсчете частоты значимых слов, структуры семантического ядра, или же облака тегов. Совершенно разумно взять с добавочным весом жирный шрифт, цвет и наклон. Это делалось и делается Google, Яндексом, всеми сеошниками. Следующий шаг — включение геометрии семантического ядра. Ближе к шапке слово, значит выше вес, ближе к подвалу — ниже. В заголовке или внутри тела. И это тоже делается при ранжировании и выдаче поисковиками.

Но вот включена ли метрика, в смысле Римана, т.е. геометрическое расстояние (например среднее квадратичное расстояние на странице, расстояние в кликах и т.д.) между значимыми словами при оценке текстов машиной, мне до сих пор не известно.

Даже в бесплатных онлайн инструментах для сео новичков можно выкидывать из текста веб страницы все, кроме значимых слов. От большого текста остается некоторый каркас значащих слов. Что-то в этом скелете должно быть важным, не просто одна величина — частота. К примеру, относительные расстояния. Однако, проводится ли с таким скелетом, с такой основой текста, дальнейшая вычислительная работа машиной, я не знаю. Казалось бы, естественным для поисковика изучать законы организации текста, ведь большинство из нас читает «по диагонали». Нужна какая-то мера для определения того, что автор хотел сказать в тексте, если убрать все лишнее. Но… поисковики имеют миллиарды страниц, и вовсе не факт, что такой анализ уже возможен технически даже для гигантов типа Google. Т.е. масштаб задачи много меньше стандарта для поисковиков (тысячи, а не миллиарды страниц), но анализ предлагается более глубокий. К тому же данное направление может сильно тормозиться гипертекстовой структурой интернета. Гораздо эффективнее отслеживать, кто на кого ссылается, кто входит в трастовую сеть. Но… ссылки — это включение естественного интеллекта вебмастеров, которых поисковик эксплуатирует для своих целей. Когда-то понадобятся и способности самой машины делать выводы о тексте.

Заключение

Утверждается, что, в русском языке существует объективная, статистически определимая, внутренняя структура, основанная на частотности символов [1-4]. В отличие от предыдущих работ [1-4], оставшаяся «новизна» нашего утверждения в том, что при этом велика роль частотности пар рядом стоящих букв и знаков препинания в тексте. Филологи при анализе текстов туманно ссылаются на «уникальный ритм», «читаемость»; возможно, что частотность знаков препинания, наряду с другими факторами дает эквивалентное количественное описание ритмичности.

Предлагается обратить внимание на изучение частотности языка, начатого в оригинальном исследовании по частотности украинского языка, но для цели выделения значащей информации из текстов отдельных сообществ. Т.е не усреднить весь русскоязычный интернет по частотности, а наоборот, разбить его на секторы, характеризуемые одинаковыми инвариантами.

Предлагается попробовать поизучать геометрию текста, введя новый параметр — относительное расстояние между символами. На N символов есть (N-1)! связей, причем каждая связь еще имеет вес. Поэтому технически такой анализ может оказаться много сложнее, чем простой подсчет частотностей.

Вполне возможно, что идеи совершенно тривиальные и не оригинальные. Ясно, что практическую ценность здесь имел бы вовсе не анализ романов Тургенева, а конкретная инфографика по популярным СМИ или сообществам за того или иного кандидата в президенты 2012, пиар или антипиар того или иного бренда в том или ином интернет-издании и т.д. Но в целом это может быть интересная задача сама по себе.

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

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

Ссылки.

[1] professor_k «Частотный анализ украинского языка»

[1] Морозов Н., «Лингвистические спектры: средство для отличения плагиатов от истинных произведений того или иного неизвестного автора» 1915;

[2] Хмелёв Д. В. Распознавание автора текста с использованием цепей А.А. Маркова // Вестник МГУ, сер.9: филология. "- 2000. "- N 2. "- С. 115-126.

[3] Khmelev D., Tweedie F. Using Markov Chains for Identification of Writers // Literary and Linguistic Computing. "- 2001. "- Vol. 16, no. 4. "- Pp. 299-307.

[4] Романов А.С., Мещеряков Р.В., Идентификация автора текста с помощью аппарата опорнеых векторов в случае двух возможных альтернатив.
Tags:
Hubs:
Total votes 2: ↑1 and ↓10
Comments0

Articles