Программа для определения авторства текста



Программа, определяющая автора текста. Сначала ей нужно дать примеры текстов известных авторов, а она составит их авторские профили. Потом сравнивнит новый неизвестный текст с ними, и пытается угадать, чей он.
Зачем это нужно?
Можно пытаться деанонить анонимные фанфики.
Можно посмотреть, на какого автора похож фанфик сочинения твоего любимого автора, или даже лично тебя.
Да мало ли чего ещё!

И за доступ к этой замечательной чудо-программе я требую не 17.99$, а всего лишь проверить, работает ли она у вас, и если нет, то попытаться зафиксировать ошибку, с которой она закрывается!

СКАЧАТЬ

(требует наличия на компьютере более-менее новой версии .NET framework)

Итак, ты скачал прогу, и теперь ничего не понимаешь. Это легко поправимо.

Архив нужно распаковать в одну папку. Теперь в ней лежит кучка файлов и папка Books. Внутри этой папки есть папка «Имя Проверяемого Автора». Довольно очевидно, что в эту папку и нужно кидать тексты, которые хочется проверить. Есть одна загвоздка. Кидать их нужно в формате .txt, и более того: в кодировке ANSI. Её можно поменять, если выбрать опцию «сохранить как» в блокноте.
Спойлер

Если теперь запустить Author Identification.exe, то в открывшемся окне консоли секунд 10-20 ничего не будет (загрузка профилей), а потом появится это:
Спойлер"! Неизвестный автор\Морковная Вершочка против.txt"://название файла, который проверяется
[1] KaskeT 0.694890330317801 //самый вероятный автор (из тех, чей авторский профиль есть у программы) текста.
[2] Ponyfiction 0.72140454041641 //число от 0 до 1. 0 == совпадение. 1 == самый маловероятный автор.
[3] Krynnit 0.727543570353346
[4] Gedzerath 0.75563035613192
[5] Рик Риордан 0.762613966415208
[6] Джоан Роулинг 0.76583977035177
[7] Kujivunia 0.768009570910708
[8] Толкиен 0.777562907133552
[9] Иван Тургенев 0.790169967571143
[10] Максим Горький 0.798060492664135
[11] Василий Жуковский 0.798693151273407
[12] Аркадий Аверченко 0.801052920307882
[13] Сергей Есенин 0.801289591033575
[14] Иван Гончаров 0.807527623596824
[15] Владимир Короленко 0.812000922674818
[16] Эрнест Хемингуэй 0.815553151895003
[17] Александр Грин 0.819998858275954
[18] Михаил Лермонтов 0.828288933373586
[19] Антон Чехов 0.828468871317553
[20] Николай Некрасов 0.828481731990123
[21] Николай Гоголь 0.834430457274797
[22] Александр Пушкин 0.840109493219289
[23] Джером Джером 0.840463523595542
[24] Сэнди Митчелл 0.849386105731708
[25] Фёдор Достоевский 0.850697377782444
[26] Лев Толстой 0.859570526685045
[27] Жюль Верн 0.87393684187499
[28] Сергей Аксаков 0.879501718192346
[29] Николай Лесков 0.885370676920521
[30] Э. Л. Джеймс 0.887047118126268
[31] Пересвет Исконный 0.8921476326573
[32] Михаил Салтыков-Щедрин 0.896653128153444
[33] Александр Грибоедов 0.908302434867972
[34] Александр Блок 0.922360153317928
[35] Фёдор Тютчев 0.93935372427058
[36] Денис Фонвизин 1
Avg sentence length: 8.57142857142857; Avg word length: 5.25185185185185 //средняя длина предложения и слова в проверяемом тексте
! Неизвестный автор\Морковная Вершочка против.txt is completed in 0.67 seconds and missed by 36; //сколько времени было потрачено на обработку, и на сколько алгоритм ошибся (самопроверка). Последнее работает только в том случае, если имя папки совпадает с именем автора, чей авторский профиль загружен в файл AuthorProfilesToAIL.json.


Чтобы добавить нового автора, нужно сделать следующее:
1) Переименовать папку «Имя Проверяемого Автора» в действительно имя автора.
2) Положить в папку тексты автора (.txt, ANSI кодировка)
3) Если нужно добавить нескольких авторов, то просто добавить нужные папки рядом с предыдущей
4) Запустить New Author Profiles.exe.
5) Подождать, пока в консоли не появится имя последнего из добавляемых авторов
6) Открыть файл AuthorProfilesToAIL_NEW.json любым текстовым редактором, нажать ctrl+A ctrl+C.
7) Открыть файл AuthorProfilesToAIL.json, и скопировать новые профили В КОНЕЦ ФАЙЛА. (Лучше пользоваться notepad++, потому что блокнот открывает такие большие файлы очень долго)
8) Если хочется не добавить новый профиль, а создать свою библиотеку профилей, то всё проще: не нужно ничего копировать, просто переименуйте AuthorProfilesToAIL.json во что-нибудь другое, чтобы сохранить его на всякий случай, а полученный AuthorProfilesToAIL_NEW.json переименуйте в AuthorProfilesToAIL.json

Спасибо за внимание.

22 комментария

Niko_de_Andjelo
+1
А сколько нужно ей комментов скормить, чтобы она твинков вычисляла по стилю написания?
oxide
0
С комментами всё сложнее. Она определяет автора не по стилю, а по статистическим параметрам. Поэтому смена темы разговора окажет куда большее влияние, чем смена автора. Таково моё предположение.
Niko_de_Andjelo
0
Очередная инкарнация антиплагиата?
Stardisk
-2
Насколько я знаю — нет. Антиплагиат же ищет источники цитат или типа того?
А моя прога составляет статистический портрет автора, и сравнивает его с другими.
Niko_de_Andjelo
+1
А какие конкретно метрики она считает?
YellowQuiet
+2
Самые простые. Средняя длина слова, предложения; уни/би/триграммы. Но при стандартных настройках она ищет автора исключительно по триграммам.
Niko_de_Andjelo
+2
То есть она выбирает все имеющиеся комбинации из трёх подряд идущих слов и считает, сколько у кого каких? Получается, как бы пытается выяснить типовые речевые обороты каждого автора.
YellowQuiet Изменён автором
0
3-х букв. Смотрит на частоту использования каждой из трёхбуквенных комбинаций. Составляет профиль частот. Потом считает дистанцию между двумя профилями.
Вообще, это была моя учебная практика, поэтому у меня есть отчёт, там всё понятнее и подробнее: читать
Niko_de_Andjelo
+3
Спасибо за отчёт, познавательно. Gedzerath, наверное был бы очень рад, что его сравнивали с самим Пушкиным!
YellowQuiet
+3
Ой вэй! Какие люди и без охраны!
Antares_89
+1
Окей, а централизовать профили авторов никак?
badunius
0
Типа, чтобы они лежали где-то на сервере?
В планах на будущее — сделать сайт, чтобы всё взаимодействие пользователей с прогой сводилось к загрузке текстовика и кнопке «запросить добавление нового автора в библиотеку профилей». Но пока у меня даже от алгоритма один прототип, так что это всё — очень далёкое будущее.
К тому же, точность определения автора с ростом числа профилей падает нелинейно, очень, очень быстро.
Niko_de_Andjelo
+2
Да тебе вроде бы и в разработке статистика не помешает. Опять же, как ты будешь решать проблему большого количества профилей без большого количества профилей. Ну и да, я этих профилей не видел, но мне кажется, что идея обречённая. Ты пробовал произведения разных авторов на одну и ту же тему?
badunius
0
Портет статистики это всего лишь числа, они дают оценку математики, остальное скрыто от программы. По большей мере кто либо пишет учясь на чужом опыте, и поэтому анализ будет показывать это.
DenSecond
0
0 == совпадение. 1 == самый маловероятный автор.

А разве в теорвере не принято обозначать достоверность единицей, а невозможность нулём?
low_spirit
+1
В тервере — да. Но здесь не вероятность, а дистанция от профиля текста до профиля автора.
Niko_de_Andjelo
+1
В случае с иностранными авторами переводчики вносят свою лепту. Вспомните того же «Боромир улыбнулся». Или подобные уточнения для алгоритма излишние?
Thestral
0
Переводы — это отдельная, и, вообще говоря, весьма философская тема.
Niko_de_Andjelo
0
ANSI в 2020 простите

Проверил свою «Нефоновую пони», лол, да я ж Достоевский!«Имя проверяемого автора\nefonovaja_poni__a_song_of_twilight.txt»:

[1] Ponyfiction 0.464296641252301
[2] Фёдор Достоевский 0.557772373461408
[3] Gedzerath 0.572996075220941
[4] Рик Риордан 0.574332198396645
[5] Krynnit 0.593393185597338
[6] Михаил Лермонтов 0.599244020596173
[7] Kujivunia 0.604070395371692
[8] Сэнди Митчелл 0.61534484818453
[9] Иван Тургенев 0.634604473219744
[10] Лев Толстой 0.644137720290936
[11] Джоан Роулинг 0.645627227130716
[12] Джером Джером 0.654416802010961
[13] Иван Гончаров 0.671669666219186
[14] Николай Лесков 0.672140602340585
[15] Сергей Аксаков 0.674675904558435
[16] Аркадий Аверченко 0.688268083449047
[17] Жюль Верн 0.694605841842496
[18] Владимир Короленко 0.69882151302688
[19] Михаил Салтыков-Щедрин 0.71720708047094
[20] Антон Чехов 0.719268764776942
[21] Николай Гоголь 0.726114916583956
[22] Василий Жуковский 0.728169248051376
[23] Максим Горький 0.728248187597065
[24] Пересвет Исконный 0.731905879843192
[25] Э. Л. Джеймс 0.736233968874592
[26] Эрнест Хемингуэй 0.741533429150462
[27] Александр Пушкин 0.76560017011748
[28] Александр Грин 0.77300785713712
[29] Александр Грибоедов 0.783096118465505
[30] Толкиен 0.790629535926018
[31] Александр Блок 0.797704955396263
[32] Сергей Есенин 0.822350724979361
[33] Николай Некрасов 0.87422460093595
[34] Денис Фонвизин 0.879935336407504
[35] Фёдор Тютчев 1
Avg sentence length: 14.003; Avg word length: 4.93651360422767

Имя проверяемого автора\nefonovaja_poni__a_song_of_twilight.txt is completed in
0.829 seconds and missed by 35;
— Имя проверяемого автора is completed!
— Выполнено за 6.653секунд
Короче, вроде бы всё запускается и работает (винда семёрка). На линухе не проверял.
makise_homura
+2
Надо будет почекать.
False_False_Borya_Ka
0
Ох, так оно же старое. Я сам уже не разберусь как оно работает… Сейчас магистратуру буду заканчивать, надеюсь к выпуску сделаю что-то более удобно и лучше работающее
Niko_de_Andjelo
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.
Скрыто Показать