microbik.ru
1
Распознавание автора текста

с использованием цепей А.А. Маркова.
Д.В. Хмелёв
Аннотация

В статье посредством формального анализа текста решается задача определения авторства текста. Новый метод основывается на формальной математической модели последовательности букв текста как реализации цепи А.А. Маркова. Оказывается, частоты употребления пар букв очень хорошо характеризуют автора. Последнее утверждение проверено в объемном статистическом эксперименте на произведениях 82 писателей.

1. Введение
В последние десятилетия наметилась тенденция поиска и выявления характерных структур авторского языка путем применения формально-количественных, статистических методов. Первые пробные шаги на этом пути предпринял еще в начале XIX века Н.А. Морозов [1]. Интересно, что тогда же известный математик А.А. Марков выступил с критикой Н.А. Морозова [2]. А.А. Марков критиковал Н.А. Морозова за то, что он не произвел тщательной статистической проверки утверждений относительно устойчивости некоторых элементов авторского стиля (например, частицы “не”). Примером правильного статистического подхода А.А. Марков считал свое исследование в статье [3], где он изучал распределение доли гласных и согласных среди первых 20000 букв “Евгения Онегина”. Отметим, что работа [3] посвящена первому применению “испытаний, связанных в цепь”, получивших впоследствии название цепей А.А. Маркова. Работа [3] удивительным образом предоставляет историческую основу методу определения авторства, изложенному в настоящей статье.

Истории вопроса определения авторства текста посвящена первая глава книги [4]. Несмотря на то, что среди перечисленных в [4] присутствуют весьма изощренные методики определения структуры авторского стиля, все они страдают, на взгляд автора настоящей статьи, одним общим недостатком. Ни одна из этих методик не проходила проверку на большом числе писателей. Дело в том, что многие из методик имеют трудно формализуемый этап сведения естественно-литературного произведения к предлагаемой математической модели. Например, для некоторых из них необходима классификация всех слов текста по грамматическим классам, что требует участия человека. При таком подходе большой вычислительный эксперимент с целью проверки методики на большом числе авторов практически неосуществим. Поэтому все такие методики пытались использовать на небольшом числе авторов.

Другого подхода придерживались авторы статьи [5]. Они исследовали несколько простых параметров авторского стиля и на огромном числе произведений писателей XVIII–XX веков статистически доказали, что доля всех служебных слов в длинном прозаическом произведении является т.н. авторским инвариантом.

В настоящей статье предложен новый, независимый от [5], а также всех методик, перечисленных в [4], формальный метод установления автора текста. Наша постановка задачи отличается от [5]. Мы предполагаем, что в нашем распоряжении имеются достаточно длинные фрагменты прозаических произведений ряда авторов на русском языке. Про некоторый анонимный фрагмент текста известно, что он принадлежит одному из этих авторов, но какому — неизвестно. Требуется узнать — кому именно.

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

Такой метод оказывается удивительно точным для естественно-языковых текстов. Мы обсуждаем здесь особенности применения метода и сравниваем его с методом определения автора на основе частот употребления каждой из букв в отдельности. Проверка метода проводилась на произведениях 82 писателей, среди которых есть русские писатели как XIX, так и XX века.

2. Математические основания
2.1 Марковская модель.Обозначим через A некоторое множество букв. Через Ak обозначим множество слов длины k над алфавитом A. Пусть A*=k>0 Ak. Обозначим длину слова fA* через | f |.

Задачу определения автора текста можно сформулировать следующим образом. Пусть заданы n классов Ci, где i=0,...,n-1. В каждом классе Ci находятся последовательности fi,jA*, где j=1,...,mi, т.е. Ci={ fi,j j=1,...,mi}. Наша задача состоит в том, чтобы отнести xA* к одному из классов Ci.

Предположим, что последовательности букв fi,j являются реализациями цепи Маркова с переходной матрицей i. Построим оценку Pi. Обозначим через hi,j,kl число переходов букв kl в фрагменте fi,j, положим hi,kl=jhi,j,kl, а hi,k=lhi,kl. Положим Pikl hi,kl hi,k. Возможно, некоторые Pikl равны нулю. Обозначим через Zi множество таких упорядоченных пар (k,l), что Pikl>0.

Предположим, что x также является реализацией цепи Маркова с матрицей переходных вероятностей P , где неизвестный параметр, который принимает одно из значений 1,...,n.

Обозначим через kl число переходов kl в x. Пусть также k=l kl. Обозначим через

i(x) = -(k,l) klln(kl /(Piklk)),

где сумма берется по парам (k,l)Zi . Грубо говоря, i(x) равно минус логарифму вероятности x при условии, что x — реализация цепи Маркова с матрицей переходных вероятностей Pi. Назовем t(x) оценкой максимального правдоподобия для неизвестного параметра

t(x)=argmini=0,...,n-1 i(x). (2.1)

Мы не будем обсуждать и доказывать какие-либо математические свойства оценки (2.1), хотя это и представляет интересную задачу математической статистики (более подробно см. [6, с. 224]). Зато мы покажем удивительную эффективность оценки (2.1) при установлении автора текста.
2.2 Схема эксперимента. Возьмем A={маленькие буквы кириллицы}{символ пробела}. Предположим, что у нас имеются в распоряжении достаточно длинные фрагменты произведений n авторов на русском языке. Обозначим j-тый фрагмент i-того автора через gi,j. Можно считать, что фрагмент gi,j является последовательностью символов некоторого расширенного алфавита B, который включает, например, знаки пунктуации, большие буквы, латинские буквы и т.д. (на персональном компьютере B обычно совпадает с расширенным множеством символов ASCII).

Каждый фрагмент gi,jB* можно отобразить в A* посредством некоторой функции FB* A*. Пусть, например, F превращает все заглавные буквы в маленькие, склеивает перенесенные слова, выбрасывает все знаки пунктуации и излишние знаки пробела, оставляя их по одному между словами, а также вставляет один пробел в начале и один пробел в конце фрагмента в случае отсутствия таковых.

Кроме того, мы будем рассматривать функцию G, которая устроена так же, как и функция F, с тем дополнением, что все слова, которые в фрагменте gi,j начинались с заглавной буквы, отбрасываются. Например, если

y=“Кроме того, мы будем рассматривать функцию G,”,

то Fy)=“ кроме того мы будем рассматривать функцию ”,

а Gy)=“ того мы будем рассматривать функцию ”.

Теперь предположим, что некий фрагмент текста yB* принадлежит одному из n авторов, и нам неизвестно, кому именно. Наша задача: определить автора фрагмента y. Мы можем найти автора, применяя оценку (2.1) к последовательности x=Fy) или к x=Gy). Следовательно, мы получаем два способа определения автора:

1) истинный автор — t(Fy)),

2) истинный автор — t(Gy)).

Важно отметить, что оценки t(Fy)) и t(Gy)) вычисляются на основе информации о частотах употребления пар букв. Поскольку между словами вставлены пробелы, оценки t(Fy)) и t(Gy)) никак не зависят от порядка самих слов. По-видимому, t(Fy)) и t(Gy)) характеризуют последовательности морфем в словоформах русского языка, но, конечно, совсем не учитывают синтаксисическую информацию (на основе последней пытались устанавливать авторство в [4]).

Обычно ни для одного из естественно-языковых текстов гипотеза о том, что он является реализацией соответствующей цепи А.А. Маркова, не выдерживает статистической проверки. Между тем, мы можем формально произвести все вычисления и найти оценку (2.1). Статистический эксперимент показывает, что авторы определяются очень уверенно.
2.3 Анализ частот употреблений букв (схема Бернулли).Схемой Бернулли в теории вероятностей называется последовательность независимых одинаково распределенных случайных величин. Формально мы можем предположить, что последовательности fi,j и x являются реализациями последовательности независимых одинаково распределенных случайных величин, принимающих значения в A, а x распределен как величины класса , где — неизвестный параметр. Тогда оценка (2.1) принимает вид

e(x) = argmini i(x), (2.2)

где

i(x) = -k kln((khi)/(hi,k)),

где сумма вычисляется по таким k, что >0, а =k k, hi=k hi,k и. Грубо говоря, производя оценку (x) мы производим частотный анализ текста. Статистический эксперимент показывает, что оценка e(x) существенно хуже оценки t(x).

3. Модельный эксперимент
Сначала проведем проверку нашей методики на следующем примере. Рассмотрим следующие произведения К. Булычева, А. Волкова, Н.В. Гоголя и В. Набокова.

Мы хотим проверить эффективность оценки t(Fy)). Предлагается следующий способ: выбрать каждого автора i (= 0,1,2,3) по одному контрольному произведению y i, оценить матрицы i по другим произведениям fi,j, а затем найти t(Fy i)). Если оценка работает хорошо, то для каждого автора i должно быть t(Fy i))=i.

0) К. Булычев: Умение кидать мяч ( y0); Белое платье золушки (g0,1); Великий дух и беглецы (g0,2); Глубокоуважаемый микроб (g0,3); Закон для дракона (g0,4); Любимец [Спонсоры] (g0,5); Марсианское зелье (g0,6); Миниатюры (g0,7); “Можно попросить Нину?” (g0,8); На днях землетрясение в Лигоне (g0,9); Перевал (g0,10); Показания Оли Н. (g0,11); Поминальник XX века (g0,12); Раскопки курганов в долине Репеделкинок (g0,13); Тринадцать лет пути (g0,14); Смерть этажом ниже (g0,15);

1) А. Волков: Семь подземных королей ( y1); Волшебник изумрудного города (g1,1); Урфин Джюс и его деревянные солдаты (g1,2); Огненный бог Марранов (g1,3); Гениальный пень (g1,4); На войне, как на войне (g1,5); О чем молчали газеты... (g1,6); Преступление и наказание (g1,7); Эпилог (g1,8); Желтый Туман (g1,9); Тайна заброшенного замка (g1,10);

2) Н.В. Гоголь: Рассказы и повести ( y2, названия повестей: “Повесть о том, как поссорился Иван Иванович с Иваном Никифоровичем”, “Старосветские помещики”, “Вий”, “Записки сумасшедшего”); Ревизор (g2,1); Тарас Бульба (g2,2); Вечера на хуторе близ Диканьки (g2,3);

3) В. Набоков: Другие берега ( y3); Король, дама, валет (g3,1); Лолита (g3,2); Машенька (g3,3); Рассказы (g3,4); Незавершенный роман (g3,5).

Например, у А. Волкова контрольным произведением является y1, т.е. “Семь подземных королей.” Все остальные произведения используются для вычисления Pi.

Результаты вычислений представляются следующей таблицей.











Таблица 1








N

Автор

c1

c2

c3

c4


3

В. Набоков

0

5

1658626

367179


Столбец c2 содержит общее число файлов, в которых хранятся произведения автора. Заметим, что число файлов может не совпадать с числом произведений по двум причинам: во-первых, несколько произведений одного автора могут находится в одном файле (здесь такое произошло с А. Волковым — три повести “Желтый Туман”, “Тайна заброшенного замка” и “Огненный бог Марранов” были в одном файле); во-вторых, одно большое произведение может разбиваться на несколько частей (последнее необходимо учитывать при изучении таблицы 2).

В колонке c3 содержится суммарное число символов (букв и пробелов) в F(gi,j): c3=j |F(gi,j)|. В колонке c4 содержится число символов в Fy i), т.е. c4=|Fy i)|. Например, для К. Булычева общий объем текстов j Fg0,j ) составляет 2'345'689. Общий объем Fy1), т.е. число символов A в повести “Умение кидать мяч”, выбранной в качестве контрольного текста, равно 75'161.

В столбце c1 в строке j находится ранг числа j(Fy j)), среди чисел {i(Fy j)) | i = 0,1,2,3}. Под рангом мы подразумеваем номер j(Fy j)) среди чисел {i(Fy j)) | i = 0,1,2,3}, расположенных в порядке невозрастания. Например, если j=1 и i расположились в порядке 0321, то рангом 1 будет 3. А если j=0 и i расположились в том же порядке 0321, то рангом 0 будет 0. Ранг j(Fy j)), среди чисел {i(Fy j) | i=0,1,2,3} совпадает с рангом j(Fy j))/|Fy j)|, среди чисел {i(Fy j))/|Fy j)|  |  i=0,1,2,3}. Расположим в строках j=0,1,2,3 следующей матрицы по 4 числа i(Fy j))/|Fy j)|, i=0,1,2,3:








2.484569

2.508425

2.504301

2.493778




=

2.501061

2.473907

2.516797

2.492874






2.541367

2.538101

2.548842

2.520018

В каждой строке найдем ранги чисел i:







0

3

2

1




R =

2

0

3

1






2

1

3

0

Искомые числа столбца c1 стоят на диагонали. Вспоминая формулу (2.1), мы заключаем, что t(Fy j))=j тогда и только тогда, когда ранг j(Fy j))/|Fy j)| среди чисел {i(Fy j))/|Fy j)|  | i=0,1,2,3} просто равен 0. Следовательно, если в какой-либо строке в столбце c1 таблицы 1 стоит 0, то авторство контрольного текста определено правильно. Из таблицы 1 мы видим, что у всех писателей авторство определено верно.

Прежде чем обсудить этот результат, поясним почему столбец c1 задан таким образом. Дело в том, что если авторство определено неверно (т.е., оказалось t(Fy j))  j), то нас может интересовать, насколько мы были близки к правильному ответу. Если ранг j(Fy j))/|Fy j)| среди чисел {i(Fy j))/|Fy j)|  | i=0,1,2,3} равен 1, то мы ошиблись всего на одного писателя. Такой случай существенно лучше случая ранга j(Fy j))/|F( y j)| равного 3, поскольку тут правильный писатель оказывается в списке претендентов на его собственное произведение последним, что свидетельствует о большей ошибке.

Кроме того, матрица R сама по себе допускает интересные интерпретации. Например, из первой строки мы видим, что контрольное произведение К. Булычева “Умение кидать мяч” после самого К. Булычева, больше походит на В. Набокова, затем на Н. Гоголя, и в последнюю очередь на произведения А. Волкова. Из последующих двух строк можно сделать вывод, что контрольные произведения А. Волкова и Н. Гоголя также в первую очередь походят на произведения В. Набокова. Может быть, это вызвано тем, что сам Набоков исторически находится между Н. Гоголем и парой писателей: А. Волковым и К. Булычевым? Если эта гипотеза верна, то наша метод чувствителен к исторической эпохе, в которую создано произведение. Некоторое подтверждение тому мы находим в последней строке матрицы R: контрольное произведение В. Набокова похоже в первую очередь на пару А. Волкова и К. Булычева, и лишь затем — на Н. Гоголя. Если бы пара А. Волкова и К. Булычева разбивалась Н. Гоголем. то мы имели бы аргумент против нашей гипотезы. Впрочем, возможны другие интерпретации матрицы R, и автор нисколько не настаивает на выше приведенной.

Можно интересоваться зависимостью матрицы R от

а) числа и объема текстов обучающих выборок;

б) однородности по жанру;

в) однородности по тематике;

г) длины контрольного текста;

д) единицы анализа (на уровне букв, слов и предложений)

и многих других параметров. Ниже мы приводим информацию относительно пункта а). Вкратце вывод таков: методика работает удовлетворительно (то есть, на диагонали матрицы R в основном стоят 0) при объеме обучающей выборки свыше 100 тысяч символов ASCII, и объеме контрольного текста свыше 100 тысяч символов ASCII.

Вернемся к обсуждению таблицы 1. Поскольку в столбце c1 все числа равны 0, авторство всех контрольных произведений определено верно. Результат тем более неожиданный, что мы использовали столь примитивную информацию о тексте как частоты употребления пар букв. На самом деле, простейший компьютерный эксперимент (результаты которого здесь не приведены) показал, что при небольшом числе подозреваемых писателей (меньше шести), даже оценка (2.2), основанная всего лишь на подсчете частот употребления букв дает очень хорошие результаты. В следующем разделе описан значительно более объемный статистический эксперимент. Из него становится ясно, что методика устойчиво работает на очень большом числе авторов.

4. Результаты более объемного вычислительного эксперимента
В электронной библиотеке "Самые любимые книжки" нашлось n=82 различных автора, которые творили в XIX — XX веках. Количество произведений разных авторов колебалось от 1 до 30 (например, у Аркадия и Бориса Стругацких). У немногих авторов, у которых нашлось лишь одно произведение (например, у Бориса Стругацкого), оно было поделено на две части, одна из которых использовалась в качестве контрольного текста. При отборе произведений учитывался объем: выбирались авторы, суммарный объем произведений которых превышал 100000 символов ASCII. Общее число произведений (романов, повестей, рассказов и т.п.) превзошло 1000. Они были представлены в 386 файлах. Общий объем данных составил 12810^6 символов ASCII.

Для каждого автора мы составили список gi,j текстов, из которых были получены оценки Pi, и оставили один текст y i, подлежащий распознаванию и не используемый при оценке Pi. Следуя схеме, описанной в предыдущем разделе, мы провели эксперименты для проверки качества оценок t(F()), t(G(×)), e(F(×)), e(G(×)) на этих 82 писателях. Для экономии места мы приведем лишь таблицу, отображающую информацию об эффективности оценки t(G(×)). Эта таблица составлялась подобно таблице 1. Ради экономии места соответствующие таблицы и R не приведены.
Таблица 2


N

Автор

c1

c2

c3

c4

0

К. Булычев

0

15

2007724

64741


81

Б. Стругацкий

0

1

298832

261206


Первый вывод из данных этой таблицы состоит в том, что количество правильных ответов (нулей в колонке c1) очень велико — 69. Истинный автор произведения оказывается на втором месте в списке претендентов всего в трех случаях (в колонке c1 стоит 1): Л. Кудрявцев, Ф.М. Достоевский и Е. Козловский. На третьем месте (c1=2) — в двух случаях: Н. Романецкий и Е. Хаецкая. На четвертом месте оказывается лишь один автор (c1=3) — С. Казменко. Для остальных 7 авторов ошибка очень велика (Ю. Латынина, А. Лазаревич, С. Логинов, С. Щеглов, В. Шинкарев, А. Столяров, А. Свиридов). Они не оказываются даже в десятке претендентов на их собственные произведения.

Мерой неточности оценки t(G(×)) может служить средний ранг, равный сумме чисел в колонке c1, деленной на общее число писателей 82. Здесь средний ранг равен

2.35(31+2´2+1´3+2´10+1´11+1´14+1´29+1´46+1´63) / 82

Все эти числа приведены в таблице 3 в колонке t(G(×)). Если выбросить семерых плохо определяемых авторов, средний ранг окажется равным 0.132/15=(3´1+2´2+1´3) / 75.

Второй вывод из данных таблицы 2 состоит в том, что метод работает и на стихотворных произведениях (А.С. Пушкина, С. Есенина и Н. Гумилева). В-третьих, правильно определяются писатели, чьи произведения переводились с польского языка (С. Лем и И. Хмелевская). В-четвертых, среди плохо распознаваемых авторов нет общепризнанных классиков русской литературы.

Для сравнения, в следующей таблице приведены результаты аналогичного исследования с оценками t(F(x)), e(F(x)), e(G(x)) на тех же текстах.
Таблица 3







c1

t(F(×))

t(G(×))

e(F(×))

e(G(×))







0

57

69

1

2






Среднее

3.50

2.35

13.95

12.37


Сделаем два вывода на основании данных последней таблицы. Во-первых, частотный анализ (метод основанный на схеме Бернулли) работает плохо (имеется максимум два точных ответа). Однако, он все-таки дает какую-то информацию об авторе, ибо в случае совершенно случайного выбора истинного автора средний результат в последних двух столбцах был бы около 40. Во-вторых, выбрасывание слов, начинающихся с заглавной буквы, заметно улучшает результаты (даже при частотном анализе). Действительно, столбцы с функцией G(×) заметно лучше столбцов с функцией F(×).

5. Заключение
Из данных таблицы 3 хорошо видно, что оценка (2.1), основанная на анализе числа употреблений диад (двухбуквенных сочетаний), значительно эффективней оценки (2.2), основанной на частотном анализе одиночных букв, и правильно указывает автора с большой долей уверенности (84% против 3%). Можно было бы ожидать превосходство оценки (2.1), поскольку она использует больше информации об исходном тексте. Следует подчеркнуть удивительную точность (2.1) при распознавании истинного автора произведения (например, метод авторского инварианта [5], принципиально не может различить более 10 писателей, а здесь рассмотрено свыше 80). Такая точность несомненно должна привлечь внимание к изложенному методу.

Отмечается существенное улучшение качества распознавания автора текста при выбрасывании слов, начинающихся с заглавной буквы. Этот феномен еще требует своего объяснения.

Как уже говорилось, А.А. Марков весьма интересовался задачей определения авторства текста (об этом свидетельствует его статья [2]). Знаменательно, что его собственная идея о “связи испытаний в цепь”, опробованная им же на литературном материале [3], привносит прогресс в решение этой задачи.

Автор благодарен М.И. Гринчуку за плодотворные дисскуссии по этой тематике. Автор также признателен А.Т. Фоменко и Г.В. Носовскому за оживленное внимание к работе и обсуждения результатов. Кроме них, автор благодарит А.А. Поликарпова, совместные дискуссии с которым существенно повлияли на окончательное оформление работы.

Список литературы
[1] Морозов Н.А. Лингвистические спектры: средство для отличения плагиатов от истинных произведений того или иного известного автора. Стилеметрический этюд. // Известия отд. русского языка и словестности Имп.Акад.наук, Т.XX, кн.4, 1915.

[2] Марков А.А. Об одном применении статистического метода. // Известия Имп.Акад.наук, серия VI, Т.X, N4, 1916, c.239.

[3] Марков А.А. Пример статистического исследования над текстом “Евгения Онегина” иллюстрирующий связь испытаний в цепь. // Известия Имп.Акад.наук, серия VI, Т.X, N3, 1913, c.153.

[4] От Нестора до Фонвизина. Новые методы определения авторства. М.: Издат. группа “Прогресс”, 1994.

[5] Фоменко В.П., Фоменко Т.Г. Авторский инвариант русских литературных текстов. Предисловие А.Т. Фоменко. // Фоменко А.Т. Новая хронология Греции: Античность в средневековье. Т. 2. М.: Изд-во МГУ, 1996, c.768–820.

[6] Ивченко Г.И., Медведев Ю.И. Математическая статистика. 2-е изд. М.: Высшая школа, 1992.