Голышев Георгий : другие произведения.

"Эвристическая машина" и авторство "Тихого Дона"

Самиздат: [Регистрация] [Найти] [Рейтинги] [Обсуждения] [Новинки] [Обзоры] [Помощь|Техвопросы]
Ссылки:
Школа кожевенного мастерства: сумки, ремни своими руками
Оценка: 8.00*3  Ваша оценка:
  • Аннотация:
    Продолжение http://samlib.ru/editors/g/golyshew_g/kru_sho.shtml Я старался описать модельку максимально просто и доходчиво, без математики, без ссылок на коды и без цифровых результатов. Если кому интересно - пишите, все это есть, все в доступе, все открыто

Является ли автором "Тихого Дона" М. Шолохов?

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

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

Теоретически.

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

Посмотрим, что может искусственный интеллект.

Построим "эвристическую машину" имени Бабкина (он же Машкин). "У нее внутре будет думатель и неонка".
Но, для того чтобы доверять такой машине, прогоним некоторое количество текстов с бесспорным авторством и посмотрим, как сработает "думатель".
В качестве "думателя" пусть будет нейросеть - потому что (по-определению) нейросеть может не просто принимать решения по некоторым характерным признакам, но еще и самостоятельно определять эти признаки. И не только признаки, но и связи признаков, и связи связей признаков.
На вход нейросети подадим текст... Максимально полный и необработанный текст. Со стоп-словами, со знаками препинания - пусть работает ИИ.

Но нейросеть - математическая модель, она не умеет работать с текстами, ей на входе нужны цифры - поэтому прогоним тексты через частотный алгоритм, каждое слово заменим числом использования этого слова в данном тексте. Деленное на количество использования этого слова во всем корпусе текстов (алгоритм TF-IDF).
И так для всех текстов, для всех одинаково. Вроде пока все честно

Нейросеть будем использовать в качестве бинарного классификатора (классы "1" и "0", то есть "да" или "нет", "принадлежит" или "не принадлежит"). Возьмем несколько (предположим, 10) авторов, по 100 (плюс-минус) произведений каждого, и некоторое количество тестовых текстов - как отобранных авторов, так и других, к модели не имеющих отношения.
Прогоним тексты через систему следующим образом: в каждом прогоне тексты одного автора будут иметь класс "1", все остальные тексты будут иметь класс "0" - и таким образом обучим нашу нейросеть. Дальше на вход обученной нейросети подадим тестовый текст и посмотрим, с какой вероятностью наш "думатель" определить его к классу "1", то есть выбранному в данный момент автору.
И таким образом прогоним этот текст по всем авторам: присвоим класс "1" следующему автору, обучим модель - протестируем текст на принадлежность следующему автору и так далее, пока авторы не кончатся.
В результате тестируемый текст получит табличку с вероятностью принадлежности каждому автору - классификация "один против всех" с нечеткими классами. То есть один и тот же текст программа может (теоретически) приписать нескольким авторам, и суммарная вероятность принадлежности по авторам может быть больше 1.
Модель может ответить примерно так: "текст, который в меня запихнули, мог написать Тот, Этот и Вот-Этот с вероятностью 90%". Кстати, такой вариант будет означать либо то, что модель не работает, и "машина имени Машкина, он же Бабкин" работает так же, как и ее прототип, либо - этот текст действительно писали все эти авторы вместе, и одинаково вкладываясь.
Но ожидаемый результат: текст будет присвоен одному автору, для всех других авторов вероятности будут приблизительно нулевыми.

Возьмем 10 авторов (обучающая последовательность):

1. А. Толстой - всю трилогию "Хождение по мукам"
2. А. Платонов - кучу рассказов, всё кроме "Чевенгура"
3. А. Серафимович - "Бомбы", "Две смерти", "Железный поток", "Зарева", "Сопка с крестами", "У обрыва"
4. А. Фадеев - "Разлив" и "Последний из удэгэ"
5. В. Катаев - "Растратчики", "Белеет парус одинокий", "Зимний ветер"
6. И. Бабель - "Одесские рассказы", "Конармия" и "Беня Крик"
7. Л. Толстой - "Анна Каренина"
8. М. Булгаков - все рассказы, без пьес и без "Мастера и Мартариты" (конечно, с "Белой гвардией")
9. М. Шолохов - "Поднятая целина", "Судьба человека", "Они сражались за Родину" и его письма И. Сталину
10. Ф. Крюков - рассказы кроме тех, на которых будем тестировать (см. ниже)

Большие произведения возьмем в разбивке по главам, из текстов уберем сноски, примечания, эпиграфы, заголовки - и это будет единственная обработка текстов.

В качестве тестовых текстов возьмем произведения (конечно, ни одна часть этих произведений в обучающую последовательность входить не будет):
1. "Разгром", А. Фадеев
2. "Хуторок в степи" В. Катаев
3. "Воскресенье" Л. Толстой
4. "Мастер и Маргарита", М. Булгаков
5. "Чевенгур", А. Платонов
6. "Аэлита" А. Толстой
7. Рассказы Ф. Крюкова "Без бумаги", "Делегат-просветитель", "Из анекдотов современности", "Неискоренимый оптимизм", "О хулиганстве", "Старший брат и младший брат", "Урожай", "Что теперь поют казаки" и "Отрада"

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

Тестовые тексты авторов "не из модели":
1. "Школа" А. Гайдар
2. "Как закалялась сталь" Н. Островский
3. "12 стульев" И. Ильф и Е. Петров
4. "Доктор Живаго" Б. Пастернак

Ну и посмотрим, что ответит "машина имени Машкина" (то есть Бабкина).

В качестве ответов будут таблицы вероятностей принадлежности текста авторам из списка, то есть числа. Если у нас тестируемый текст разбит по главам (как, например, тот же "Тихий Дон"), то у нас в таблице будет 176 (или около того) строк. И 10 столбцов, по каждому автору.
Конечно, это не просто понять и осознать - здоровая таблица цифр. Поэтому результаты сведем в графики, "боксы с усами", на одном графике будут все авторы и все вероятности.
Графики устроены так: внутрь бокса (в прямоугольник) попадает 50% результатов по данному автору (то есть половина вероятностей попадает внутрь коробочки.
Ниже верхней граница бокса лежит 75% результатов, ниже нижней - 25% (между ними 50%).
Линия внутри бокса - медиана. Ниже ее - 50% результатов, и выше ее 50%. Внутрь "усов" попадет еще процентов 40 результатов (там формула - интервал коробочки умножен на 1.5), все, что не попадает в "усы" считается выбросами. Или нестандартными результатами, возможно, случайными. Нетипичными для данного автора и произведения. "Анектодичными" (это термин).

График у нас будет в качестве "неонки": горит "неонка" у автора - значит, авторство определено ему. Горит у нескольких - авторов несколько.
Горит - это значит большой, хороший "бокс" по автору. Еле светит - относительно высокие "усы" без "бокса". Слегка помаргивает - много выбросов, без "бокса" и "усов". Все просто.

Итак, получается следующее:

1. "Разгром", А. Фадеев
 []
2. "Хуторок в степи", В. Катаев
 []
3. 'Воскресенье', Л. Толстой
 []
4. 'Мастер и Маргарита', М. Булгаков
 []
5. 'Чевенгур', А. Платонов
 []
6. 'Аэлита' А. Толстой
 []
6. Рассказы Ф. Крюкова
 []

Видно, что "Разгром" программа приписывает Фадееву, а "Хуторок в степи" - Катаеву. Остальные авторы тоже определяются довольно четко.
"Воскресенье" Л. Толстого имеет некоторое количество выбросов по Фадееву и Крюкову. Вроде бы Фадеев пытался подражать Толстому, а Крюков считал его своим учителем? Программа находит некоторые "похожести" на Крюкова и Фадеева в "Воскресенье" - или в творчестве этих авторов заметны некоторые "толстовские признаки". В любом случае это выбросы.
"Чевенгур" Платонова: вот так хотелось бы чтобы выглядели все графики. Почти все главы "Чевенгура" модель определила Платонову с вероятность более 70%, половина результатов - с вероятностью больше 90%!
Сравнить с "Аэлитой" А. Толстого - конечно, модель однозначно приписала ее А. Толстому, но вероятности намного ниже, чем у "Чевенгура" по Платонову. Обучалась модель на "Хождениях по мукам", а тестировался рассказ, написанный в совершенно другом стиле, в другом жанре. И все равно модель не ошиблась (хотя 2-3-4 выброса по Платонову и Булгакову все же имеются).
Стиль Ф. Крюкова модель опознает примерно так же, как и стиль Платонова. Выброс "вниз" (точка с вероятностью около 80%) это "Что теперь поют казаки". Там "внутре" в основном записи песен - потому и вероятность около 80%, а не выше 90%.

А теперь произведения авторов, не входящих в обучаемую последовательность:
1. 'Школа' А. Гайдар
 []
2. 'Как закалялась сталь' Н. Островский
 []
3. '12 стульев' И. Ильф и Е. Петров
 []
4. 'Доктор Живаго' Б. Пастернак
 []

Тут тоже все более менее предсказуемо. Ни Гайдара, ни Островского нет среди авторов вероятности по авторам последовательности нулевые. Ну, почти.

"12 стульев" - тут явно виден Булгаков...
Ну как явно - вероятность меньше 10%. Максимальная вероятность, не средняя (без учета выбросов). Средняя вообще практически ноль. Булгакова в "12 стульях" примерно столько же, сколько Фадеева в "Воскресенье" Л. Толстого. В обучающих текстах Булгакова полно его фельетонов, он был вполне признанным мастером этого жанра - Ильф и Петров могли ему подражать. Или учиться у него. Или просто использовать ходовые приемы из фельетонов.

Есть такая теория (слегка безумная), что "12 стульев" написал Булгаков - так вот маловата вероятность, чтобы эту идею подтвердить. Скорее, тут видна "похожесть" на Булгакова, но никак не авторство.
Интересно, что "похожесть" видна на Булгакова, а не на Катаева...

По "Доктору Живаго" - ну, вот тут все не очень хорошо. Выбросы по всем авторам. Правда, это в любом случае выбросы, нетипичные случаи. Их много, отдельные вероятности довольно большие. Но не будем забывать, что "Доктор Живаго" - проза поэта. Само по себе это произведение - выброс, нетипичный случай. В целом, если не учитывать выбросы, вероятности по всем авторам - нулевые, модель отработала. Напомню, что внутри "бокса" - половина полученных результатов. И половина ниже медианы, которая внутри "бокса".

А теперь "Тихий Дон"

"Тихий Дон"
 []

"Бокс с усами" показывает, что более 90% глав романа модель приписывает Шолохову с вероятностью не более 30%, при этом 50% глав романа принадлежат Шолохову с вероятностью менее 15% (на самом деле даже меньше).

Средняя вероятность для всего "Тихого Дона" выглядит следующим образом:
1. Шолохов - 0.088 (9%)
2. А. Толстой - 0.026 (2%)
3. Крюков - 0.01 (1%)

То есть модель считает, что Шолохов является автором всего "Тихого Дона" с вероятностью около 9%.

Для сравнения: матожидание вероятностей глав "Чевенгура" для Платонова - 0.89, то есть модель определяет авторство Платонова для "Чевенгура" с вероятностью около 90%.

9% слишком мало, чтобы подтвердить гипотезу о авторстве М. Шолохова, но и слишком много, чтобы ее опровергнуть.

Модель определяет авторство "Тихого Дона" для А. Толстого в 3%, а Ф. Крюкова - в 1%, что соизмеримо с вероятностью авторства М. Шолохова (разница не на порядки).
Это как минимум "влияние".

Опять-таки по аналогии с "неонкой": лампочка "автор Шолохов" горит на 16% от своей мощности. Слегка, еле видно, помаргивает у Крюкова, и сильно помаргивает, иногда искрит, у А. Толстого.

Тут надо учесть, что по Шолохову модель обучалась на "Поднятой целина", которая вроде бы писалась как продолжение "Тихого Дона", по стилю, и месту изложения. Тот же казачий быт, те же казачьи словечки - логично было бы ожидать проявление яркого, очень индивидуального стиля, присущего "Тихому Дону" - однако "неонка" горит всего на 16%. Даже "Аэлита" у А. Толстого горит ярче, хотя там совершено другой стиль и жанр, отличный от стиля "Хождения по мукам".

Шолохов специально делал "Целину" и "Тихий Дон" похожими, Толстой специально делал "Аэлиту" и "Хождение по мукам" непохожими - и 75% результатов (верхняя граница бокса) у Шолохова имеет вероятность меньше 15%.
Слабовато

Однако это "слабовато" не позволяет опровергнуть авторство Шолохова.
Это "слабовато" не позволяет авторство однозначно подтвердить.

Есть еще большие, очень большие выбросы по Крюкову и А. Толстому.
По Крюкову: если (ЕСЛИ!) правда, что Шолохов украл роман у Крюкова, то именно Крюкова он старательно "записывал". Высокая вероятность по паре глав означает (ну то есть может означать), что эти пара глав не "записаны", оставлены как есть. По тем или иным причинам.
Большие выбросы по А. Толстому... Тут я просто не знаю, что сказать. Вроде бы модель неплохо "ловит" авторство (судя по тестам). Здесь может быть какой-нибудь особый случай. 10 авторов с точки зрения статистики маловато, надо хотя бы 30.
А может быть к роману приложил руку А. Толстой?...

Окончательный вывод

: Авторство Шолохова не подтверждается, но и не опровергается. То есть с точки зрения этой модели авторство - под вопросом. И наличие такого вопроса вполне доказано.

"Машина Бабкина" (он же Машкин) получилась довольно интересной. Можно попробовать ее использовать в других исследованиях. Например, убрать Шолохова из обучающей последовательности и прогнать через модель другие его произведения (вариант "Шолохов сам ничего не писал" - должны вылезти большие вероятности по другим авторам). Добавить авторов, посмотреть влияния одного автора на другого или других...

Можно попробовать использовать эту модель для датировки текстов. На хороших данных (имхо) она должна попадать в десятилетия по датам. Ну уж в столетия она точно должна попадать

Нужно только помнить, что эта программа (как и все системы ИИ) не отвечает на вопрос - она помогает ответить на вопрос. Помогает человеку, исследователю.



Оценка: 8.00*3  Ваша оценка:

Связаться с программистом сайта.

Новые книги авторов СИ, вышедшие из печати:
О.Болдырева "Крадуш. Чужие души" М.Николаев "Вторжение на Землю"

Как попасть в этoт список

Кожевенное мастерство | Сайт "Художники" | Доска об'явлений "Книги"