Лингвистический анализ текста ...


  Лингвистический анализ текста и распознавание автора

© Львов Алексей


Лингвистический анализатор, описываемый в данной статье, разрабатывался в течение 2007-2008 годов в рамках сайта «Лаборатории Фантастики». Изначально ставилась цель проанализировать тексты русскоязычных писателей-фантастов и выявить значимые их характеристики, описывающие в совокупности авторский стиль, или так называемый «авторский лингвопрофиль».

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

  1. Средняя длина предложения (СДП), знаков
  2. СДП авторского текста, знаков
  3. СДП диалога, знаков
  4. Доля диалогов в тексте
  5. Доля авторского текста в диалогах
  6. Динамика использование диалогов по тексту (график)
  7. Использовано уникальных слов (всего уникальных слов, как словарных, так и выдуманных автором)
  8. Активный словарный запас (количество уникальных словарных слов в тексте)
  9. Активный несловарный запас (количество уникальных выдуманных слов в тексте — сюда входят все имена, названия и неологизмы)
  10. Удельный АСЗ на 3000 слов текста (среднее количество уникальных словарных слов на 3000 слов текста)
  11. Удельный АСЗ на 10000 слов текста
  12. Удельный АСЗ на 100000 слов текста
  13. Динамика изменения УАСЗ-3000 от начала до конца произведения (график)
  14. Статистика использования частей речи: процент существительных, прилагательных, глаголов, местоимений-существительныхм, местоименных прилагательных, местоимений-предикативов, числительных (количественных), числительных (порядковых), наречий, предикативов, предлогов, послелогов, союзов, междометий, вводных слов, фразовых глаголов, частиц, кратких прилагательных, причастий, деепричастий, кратких причастий и инфинитивов. А также — неопределённых частей речи и т.н. служебных частей речи.
  15. Биграммы частей речи — частота употребления пар «существительное-глагол», «наречие-прилагательное» и т.д. для всех перечисленных выше частей речи.
  16. Части речи на позициях в предложении — как часто первым словом в предложении является местоимение, как часто вторым является глагол и т.п. По всем частям речи, вплоть до 20й позиции.
  17. Частоты всех известных знаков препинания.
  18. Биграммы буквенных пар — простой подсчёт частот всех алфавитных пар «аа», «аб», «ав»... «ба», «бб» и т.д.
  19. Биграммы «соединительных символов» (частоты пар первой буквы текущего слова и последней буквы предыдущего — исключая имена, названия и пр.)

  20. Биграммы первых символов, т.е. первого символа слова и первого символа следующего за ним слова (добавлено в 2013 году — точность заметно повысилась)
Пару слов скажу о словарном запасе. Словарный запас — это, грубо говоря, количество уникальных слов, которые знает автор. Но знает ещё не значит, что они их употребляет в своих текстах. Поэтому гораздо более актуальной характеристикой является «активный словарный запас», что для случая конкретной книги означает количество использованных в ней уникальных слов. Но, учитывая тот факт, что книги различаются по объёму, логичным будет считать т.н. «удельный активный словарный запас», то есть количество уникальных слов на сколько-то слов текста. Если мы вычленим из текста 10000 идущих подряд слов, удалим из них повторяющиеся и посчитаем сколько осталось, то мы получим ни что иное как «удельный АСЗ на 10000 слов текста». И ещё один нюанс: несловарные слова (названия, имена, выдуманные автором слова) в подсчёте АСЗ и УАСЗ не участвуют. Количество этих слов считается как отдельная характеристика — «активный несловарный запас».

Для определения значимых в формировании авторского лингвопрофиля характеристик были построены их функции распределения плотности вероятности. Выяснилось, что подавляющее большинство характеристик имеет нормальное Гауссово распределение.

Возьмём для примера одну из характеристик (например, среднюю длину слова), обозначим её W и рассмотрим трёх произвольно взятых авторов. Назовём их «автор 1», «автор 2» и «автор 3». Считаем, что у каждого автора для каждого из N произведений (b1,b2,b3... bN) посчитано значение W. Тогда среднее значение W для автора считаем как средневзвешенное:

Ma(W) = (Mb1(W)*WCount(b1)+Mb2(W)*WCount(b2)+ ... +MbN(W)*WCount(bN)) / (WCount(b1)+WCount(b2)+ ... +WCount(bN))

, где MbX(W) — среднее значение параметра W для произведения X, WCount(bX) — вес = количество слов в произведении X.

Таким же способом, используя количество слов в произведении как вес слагаемого, посчитаем среднеквадратическое отклонение характеристики W от среднего Ma(W):

Sa(W) = Sqrt(((Mb1(W)-Ma(W))^2*WCount(b1)+(Mb2(W)-Ma(W)^2*WCount(b2)+ ... +(MbN(W)-Ma(W)^2*WCount(bN)) / (WCount(b1)+WCount(b2)+ ... +WCount(bN)))

Формула выглядит нечитаемо, за что прошу прощения. Рисовать в графике лень. Просто скажу, что это та же средняя сумма квадратов разностей, только в весовых долях, как и в формуле среднего.

Среднее значение и среднеквадратичное отклонение каждой характеристики являются минимально необходимыми и достаточными критериями для формализации функции распределения. Теперь мы можем графически отобразить распределение значений W для трёх наших авторов:

Теперь представим, что нам в руки попался неизвестный текст, и нам нужно узнать кто его автор. Вот мы определили значение характеристики W для этого текста и, допустим, оказалось, что оно чуть меньше, чем M1. Глядя на график, не сложно сделать вывод, что такое значение W характерно скорее для автора 1, чем для автора 2 либо автора 3. Но если мы получили значение, лежащее в диапазоне [M2..M3], то это означает, что текст может принадлежать либо автору 2, либо автору 3 (вероятность того, что текст принадлежит автору 1 существует, но крайне мала). Это значение попадает в область неопределённости, где пересечение плотностей вероятностей разных авторов очень велико. Эти области на рисунке закрашены серым. Исходя из этого, полагаем, что чем больше пересечение интегралов плотностей вероятностей, тем менее W характеризует авторский стиль (существует много авторов с близкой по значению характеристикой W, и сложно по значению W анализируемого текста определить автора). Если же графики плотностей вероятностей разных авторов удалены друг от друга и их пересечение крайне мало, то считаем, что W можно считать весомой характеристикой авторского стиля. Но что тогда считать её весом?..

Вычислять пересечение интегралов — задача не из лёгких и достаточно ресурсоёмка. Автором предложено простое, но эффективное альтернативное решение. За вес принимается отношение среднеквадратичного отклонения средних значений M1, M2, M3 ... к усреднённому по всем авторам среднеквадратичному отклонению величины. Таким образом, вес характеристики тем выше, чем больше разброс авторских средних и чем у'же область распределения значения характеристики для каждого автора. Практика показала, что характеристики с весами выше 0.7 являются оптимальным (с точки зрения распознавания автора) множеством, характеризующим авторский стиль.

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

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

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




Рейтинговые таблицы и корреляция характеристик


В разделе «Рейтинги» есть подраздел «Лингвистический рейтинг и корреляция характеристик», где можно не только отсортировать весь список проанализированных произведений по выбранному параметру (например, по словарному запасу), но и задать второй параметр из того же списка для подсчёта коэффициента линейной корреляции и просмотра корреляционного поля с линией регрессии. Тем самым посетителям Лаборатории Фантастики предоставляется право самим выступить в роли исследователя, найти лингвистические закономерности и трактовать их по собственному разумению. Например, как вы объясните, что процент глаголов в тексте положительно коррелирован с рейтингом произведения, а процент прилагательных — отрицательно? «Читатели любят действие, а не красивые описания»?..




«Компромат на авторов» или «читатель должен знать правду!»


Подобные цели Лаборатория Фантастики перед собой не ставит. Даже если результаты анализа говорят о том, что текст автору не принадлежит, мы не смеем брать это за утверждение. Пусть посетитель Лаборатории Фантастики сам, на основе результатов проделанной нами работы, посеет зерно подозрения в своём пытливом уме, и, если ему это нужно, пусть сам проведёт расследование. Мы же не хотим ни в кого тыкать пальцем.




Где мы берём тексты для анализа


С пиратских сайтов. Больше неоткуда. Но стараемся брать вычитанные тексты, если таковые есть. В лингвоанализаторе стоят ловушки на «левый скан», такие как неудалённые знаки переноса, например. Если число ошибок превышает допустимое, такие тексты не анализируются. Тем не менее, Лаборатория Фантастики не отрицает, что небольшая погрешность, вносимая кривизной сканированных копий, всё же имеется. Если Вы педантичный, заинтересованный в точных показателях своих трудов автор, присылайте свои тексты мне, Львову Алексею, в личную переписку. Если есть fb2, то вообще прекрасно — с этим форматом проще работать. Обязательное условие для анализа — текст должен содержать минимум 10 тысяч слов, что эквивалентно примерно 37 страницам. Пиратством мы не занимаемся, тексты не распространяем — за это ручаюсь.




Извиняюсь...


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

Извиняюсь также заранее перед всеми авторами, которых могут оскорбить результаты нашей работы. Мы не со зла, и не ради зла. Честно.


Львов Алексей, 15 февраля 2008 года