Может ли автор использовать уникальный "литературный стиль", чтобы идентифицировать его как автора текста?

Предположим, у меня есть два текста на английском языке, написанных одним и тем же человеком. Можно ли применить алгоритм цепи Маркова для анализа каждого: создать какой-то отпечаток на основе статистических данных и сравнить отпечатки пальцев, полученные из разных текстов? Скажем, у нас есть библиотека со 100 текстами. Некоторый человек написал текст номер 1 и некоторые другие, и нам нужно угадать, какой из них анализировал его стиль письма. Есть ли какой-нибудь известный алгоритм? Могут ли применяться цепи Маркова?

Ответы

Ответ 1

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

Несколько представительных исследований (предупреждение: ссылки на файлы в формате pdf):

Чтобы помочь вашему веб-поиску, эту дисциплину часто называют Stylometry (а иногда и стилогенетикой).

Итак, два наиболее важных вопроса: я полагаю: какие классификаторы полезны для этой цели и какие данные подаются в классификатор?

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

Например, один набор данных, широко используемый в Machine Learning и доступный из нескольких мест в Интернете, состоит из данных четырех авторов: Шекспира, Джейн Остин, Джека Лондона, Милтона. эти работы были разделены на 872 штуки (что соответствует примерно главам), другими словами, около 220 различных существенных фрагментов текста для каждого из четырех авторов; каждая из этих частей становится единой точкой данных в наборе данных. Затем для каждого текста выполнялось сканирование частоты слов, а для исследования использовались 70 наиболее распространенных слов, остальные результаты сканирования частоты были отброшены. Вот первые 20 из этого списка из 70 слов.

['a', 'all', 'also', 'an', 'and', 'any', 'are', 'as', 'at', 'be', 'been',
  'but', 'by', 'can', 'do', 'down', 'even', 'every', 'for', 'from'] 

Каждая точка данных тогда является просто количеством каждого слова из 70 слов в каждой из 872 глав.

[78, 34, 21, 45, 76, 9, 23, 12, 43, 54, 110, 21, 45, 59, 87, 59, 34, 104, 93, 40]

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

Конечный элемент в каждой точке данных представляет собой целое число (1-4), представляющее один из четырех авторов, которому принадлежит этот текст.

Недавно я запустил этот набор данных с помощью простого неконтролируемого алгоритма ML; результаты были очень хорошими - почти полное разделение четырех классов, которое вы можете увидеть в моем Ответ на предыдущий Q на StackOverflow, связанный с классификацией текста с использованием ML вообще, а не идентификации автора.

Итак, какие другие алгоритмы используются? По-видимому, большинство алгоритмов машинного обучения в контролируемой категории могут успешно разрешать такие данные. Среди них часто используются многослойные персептроны (MLP, ака, нейронные сети) (Author Attribution Using Neural Networks - это один из таких часто цитируемых исследование).

Ответ 2

Вы можете начать с посещения веб-сайта Apache Mahout. Существует обширная литература по классификации и кластеризации. По сути, вы хотите запустить алгоритм кластеризации, а затем надеетесь, что "какой писатель" определяет кластеры.