Legal Code
621 subscribers
1 file
87 links
Навчання програмуванню. Вирішення юридичних задач за допомогою IT-навичок. Технічний світогляд юриста.

Рекламу не пропонувати :)
Download Telegram
🖇 Машиночтение немашиночитабельного закона
часть 5: проверка гипотезы на другом кейсе

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

1️⃣ Вопрос "Що таке судовий збір?" — тут из неслужебных слов ненаписанная мной часть программы должна выделить два массива:
1) "збір", "збору", "збором", "зборі";
2) "судовий", "судового", "судовому", "судовим".

Итог32 находки, во всех фигурирует термин "судовий збір". По сути, нашло всё подряд, без приоритезации.

2️⃣ Перенесёмся теперь в уголовный кодекс, зададим вопрос "Розкажи про службове становище". Тут из неслужебных слов ненаписанная мной часть программы должна выделить два массива:
1) "службове", "службового", "службовому", "службовим";
2) "становище", "становища", "становищу", "становищем", "становищі".

Итог26 находок. Аналогично, всё подряд.

🤷‍♂️ По сути, мы получили удобный аналог спаму "Ctrl+F" по всем падежам. И здесь нет "сознательного" подхода к логике вопроса. Это требует дополнительных усилий. Например, когда вопрос содержит структуры "что такое XYZ ?" или "как следует понимать XYZ ?", то нужно выводить не просто предложения, содержащие вариации XYZ. А в первую очередь те предложения, которые содержат дефиницию или в которых иным образом описываются признаки XYZ.

Как это сделать? Ну, например, в первую очередь ориентироваться на предложения, где XYZ стоит в именительном падеже в начале предложения или в начале строки большого предложения-перечня (как это бывает в законах). Но а если юзер задаст вопрос, где неправильно употребит правовой термин? Например, вместо "судебный сбор" напишет "судебная дань"? Будет ноль результатов. Так что эту модель можно дорабатывать и дорабатывать.

💡 Думаю, у вас появилось представление, как своими руками можно экспериментировать (говнокодить) с "правовой лингвистикой". Сделаю ещё один пост о ней и наконец "сменю пластинку". 🙂
​​🖇 Машиночтение немашиночитабельного закона
часть 6
: трюк нечтения закона

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

1️⃣ Вручную "размечаем" кодекс, связывая часто задаваемые вопросы с его текстом.
2️⃣ Таким образом, у нас появляется, условно, 200 идеально построенных вопросов, и у каждого есть свой идеально подходящий ответ.
3️⃣ Вопросы, которые приходят от юзера, сопоставляем не с текстом кодекса, а с нашими "идеальными" вопросами. Ведь гораздо проще эффективно сравнить два вопроса, чем вопрос с законом. Можно высчитывать некий "индекс соответствия", в процентах.

Подробнее моя мысль — на картинке.
Прототип делать не стал, у них мало просмотров 🙂.
​​🦆 DRY: почему код похож на договор, а договор — на код

Представьте, что вы пишете договор и, подобно градостроителю, считаете, что чем больше, тем лучше. В какой-то момент может дойти даже до того, что что сроки поставки товара будут предусмотрены аж в двух местах. Потом ваш договор попадает к кому-то ещё (или к вам же, но спустя полгода). Вы или ваша жертва меняете срок только в одном месте, не вычитываете договор полностью, и в нём появляется противоречие, которое на практике может вылиться во всякое. В кодинге происходит то же самое, только можно получить катастрофические ошибки и уязвимости.

🦠 Это и есть нарушение принципа DRY — don’t repeat yourself.
Классическая формула: "Каждая часть знания должна иметь единственное, непротиворечивое и авторитетное представление в рамках системы".

Вот несколько его тезисов, которые подходят как для программирования, так и для юриспруденции (от маленьких договорчиков до крупнейших кодексов):
🔹 Нужно делить систему на управляемые по отдельности части (код на функции/методы, договор на автономные пункты, закон на отдельные статьи/разделы).
🔹 Делить можно до тех пор, пока отдельная часть не будет отвечать за отдельное действие (в коде отдельная функция/метод для конкретного действия, в законе отдельная статья или норма для конкретного вопроса).
🔹 Каждая отдельная часть должна описывать некий смысл (часть информации) достаточно "авторитетно", чтобы не приходилось продолжать её описание где-то за его пределами. То есть не стоит бросать огрызок дефиниции в начале закона/договора, чтобы заканчивать её где-то в Особой части.
🔹 Каждый смысл (часть информации) должен встречаться лишь один раз! Если нужно использовать какую-то идею по-разному, то стоит в одном месте прописать её таким образом, чтобы допустить использование нужной степени разности. В кодинге это достигается путём передачи параметров в функцию (см. пример на картинке). В законодательстве — учимся мыслить системно, править косяки прошлого и не повторяться. В договоре — ну камон, длина — не признак мастерства. В канале Юрня... вам это докажут.

Вдохновение черпал здесь.
💋 KISS: принцип простоты в праве и кодинге

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

Простое проще понять.
С простым проще работать.
Простое хорошо работает.
Простое не противоречит самому себе.
Простое надёжно.

Вариаций расшифровки принципа KISS несколько, мне наиболее нравится эта:
"keep it short and simple".

Но в законах с простотой есть нюансы: иногда слишком простые/короткие слова/формулировки могут усложнить правоприменение. И в договорах от недосказанности, чрезмерных упрощений могут возникнуть проблемы. Приходится балансировать. Одно из проявлений искажения баланса — небезыствестная в наших кругах юрня.

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

Глобальная задача должна быть разбита на легко осознаваемые подзадачи.
Подзадача хорошо осознаваема, если её можно описать предложением до 7-10 слов. Например: "очищаю переменную от двойных пробелов", "записываю действие юзера в лог-файл".

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

Пример:
Если вам нужно записать в переменную "да" или "нет", то лучше взять булевый тип (true/false), чем писать в строковой переменной "yes" или "no". И уж тем более, не использовать для этого отдельный массив ("мерзость какая", — подумают сейчас некоторые подписчики).

Но с принципом простоты не всё так просто, поэтому будет ещё пост.
🚨 Вакансия: Лигалинженер

Ну вот, за последние полгода вижу вторую вакансию лигалинженера, и тоже в классном коллективе. Описание здесь.

Резюме не нужно, пишите сразу их чатботу-рекрутеру.

Крутое FAQ по вакансии — здесь.

По своему опыту скажу, что эта профессия настолько нова, что вы ещё можете своими действиями формировать её образ, ставить смелые эксперименты и не бояться неудач. Будучи просто юристом, так себя вести сложнее, а то и нельзя.
Не упускайте.
👨🏻‍🏫 Учим юристов кодить

Итак, этот день настал.
С коллегами по лигалтек-цеху продаём свои знания.
Учим кодить: читать код, понимать код, писать код.
Даём 2 языка программирования и ещё некоторые штуки.
Набираем группу до 16 человек.
(раздувать группу до больших размеров я лично считаю издевательством над образовательным процессом)

Больше инфо на сайте: futurelawschool.net/c4l

〽️ Дам промокод на скидку в 15% человеку, кто:
1) первый(-ая) пришлёт мне в личку вариант названия переменной, который ему/ей больше нравится, из трёх ниженазванных;
2) кратко объяснит свой выбор.

Вот варианты:
A) $tokenToCheck
B) $TokenToCheck
C) $token_to_check
📦 Кейсы для будущих техноюристов

Прямо сейчас в Украине знаковое событие: дописывается проект учебной программы курса "Юридические инновации". Это началось ещё в июле. В курсе будет многое, чего доселе не было в украинском юробразовании. Одна из тем - алгоритмы и автоматизация в праве (обожаю их). На ходу подкинул такие идеи для практических занятий.

1⃣ Взяти договір (наприклад, оренди квартири, автомобіля тощо). Подивитися його, подумати, яку мінімальну кількість питань має поставити юрист клієнту, щоб заповнити фактичні дані залежно від предмета договору (істотні умови тощо). Запропонувати оптимальний порядок і формулювання (вигляд) цих питань, а також вимоги до відповідей, з тим, щоб їх міг ставити клієнту автоматизований алгоритм (наприклад, чатбот).

💡 Окрім власне алгоритмізації, студент отримає ще й такий хардскіл, як вміння лаконічно формулювати питання і економити час клієнта.

2⃣ Взяти якийсь сценарій з процесуального кодекса (наприклад, підготовка/подача клопотання про призначення експертизи чи щось більш проблемне на практиці). Проаналізувати його, викласти у вигляді сценарія (опитувальник-чекліст) для чатбота, який допомагає юристу (адвокату) нічого не забути при підготовці і подачі такого документа.

💡 Окрім власне алгоритмізації, студент отримає ще й такі хардскіли, як вміння уважно ставитись до слів у законі, розбивати правові процедури на окремі елементи, "приміряти ці норми на собі" тощо.

Собираюсь ещё развить и углубить. А какие задания поставили бы вы, будь вы преподавателем на таком предмете? Го обсудим в чате или в личке. 🙂 Лучшее попадёт в образовательный раздел лигалтек-энциклопедии.
🚡 Гражданский кодекс и ООП

ООП или объектно ориентированное программирование — фундаментальная парадигма в кодинге, о которой должен знать каждый разработчик. Её суть максимально простыми словами: в коде создаём классы (виды "действующих лиц"), описываем их свойства (характеристики) и методы ("активные способности"), наконец создаём объекты (конкретные "действующие лица", принадлежащие к описанному перед этим "виду").

Далее мы можем совершить действие путём называния "действующего лица" и его "способности", например:
myRobotLawyer.read_agreement("договір поставки №244.docx");

Это значит, что объект myRobotLawyer выполнит код из доступного ему метода read_agreement, в который в качестве параметра будет передано название некоего файла "договір поставки №244.docx". Внутри там может быть код, который сделает то, что вам нужно: вытащит текст из docx-файла, найдёт в нём интересующие вас слова и т.д.

📒 Причём здесь гражданский кодекс? А при том, что в процессе диджитализации законодательства Украины к ряду его норм может быть применён именно объектно-ориентированный подход.

Например, если нормы о договоре купли-продажи представить как объект, то у него могут выйти, в частности, такие свойства и методы:
.description — строковая переменная, содержит определение договора из статьи 655;
.possible_object_categories — массив, содержит положения частей 1, 2, 3 статьи 656;
.show_forms — метод, выводит все предусмотренные законом случаи, когда форма договора должна быть письменная + указание на то, что всё остальное допускает устную форму договора;
.check_form — метод, в него нужно передать название предмета договора, чтобы прошла проверка, должна ли быть форма договора письменная (возвращает строку "письмова" или "будь-яка").

Затем так же поступаем и с другими видами договоров. Как думаете, это бред или что-то в этом есть? Стоит копнуть глубже? 🚜
🕶 Кодинг и приватность (чья)?

спойлер: Future Law School расширяется! 🏫

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

Например:

1️⃣ Ты собираешь их имейлы и хранишь в незашифрованном виде в базе данных. Или, что ещё хуже, держишь в текстовом файле на сервере, не защищённом от скачивания любым человеком/роботом, который подберёт его адрес.
Где здесь угроза? Твоим юзерам может прийти спам-рассылка.

2️⃣ Кроме предыдущего, ты собираешь ещё пароли, создаваемые твоими юзерами при регистрации, хранишь в незашифрованном виде там же.
Где здесь угроза? Это уже поинтереснее. Теперь благодаря тебе некоторых твоих юзеров могут ещё и взломать.

Есть ещё разные вариации с незащищёнными кукисами, кражей сеанса и множеством других дивных вещей. Поэтому программист (а лигалинженер особенно!), не должен быть нигилистом. 🐗

Не хочешь быть нигилистом? Сегодня запустился телеграм-канал на тему приватностиPrivacy HUB.

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

Ну и хорошо бы замутить с ними несколько постов на тему приватности в разработке. Замутить?
📗 Теоретический минимум по Computer Science
(Феррейра Фило Владстон)

Мне эту книгу рекомендовали некоторые подписчики канала. Наконец прочёл её! Книга хороша, особенно подход к иллюстрированию материала (некоторые алгоритмы визуализированы пошагово). Рекомендую всем, кто хочет лигалинженерить, но не знает, как подступиться к техническим вопросам.

Привожу список и резюме глав книги в порядке их важности (на мой взгляд) для лигалинженера.

1️⃣ Глава 1 — Основы
🥚 Безусловный мастхев для лигалинженера. Нет логики — нет профессии.

2️⃣ Глава 2 — Вычислительная сложность + Глава 3 — Стратегия
🥚 О том, как посчитать, хватит ли вам времени и памяти, чтобы выполнить чудо-алгоритм, который должен сделать ваш юрбиз богатым. Приёмы постройки чудо-алгоритмов.

3️⃣ Глава 6 — Базы данных
🥚 Как организовать хранение данных таким образом, чтобы сам способ их хранения был полезен и не был вреден.

4️⃣ Глава 4 — Данные
🥚 Об абстракциях и типах данных — гайках и гвоздях программирования.

5️⃣ Глава 5 — Алгоритмы
🥚 Небольшая глава с иллюстрацией нескольких известных алгоритмов.

6️⃣ Глава 8 — Программирование
🥚 Мини-экскурс в любой язык программирования. Знакомство с парадигмами кодинга (кроме ООП).

7️⃣ Глава 7 — Компьютеры
🥚 Понимание компьютера через призму ОЗУ, процессора, компиляции и операционных систем.

Как ни странно, дальше я начал читать "Теоретический минимум по Big Data" (Анналин Ын, Кеннет Су). 🐜
📄 "Уверенный пользователь MS Word"

Эта фраза — завсегдатай резюме многих юристов, ищущих работу. Но интересно, сколько из них знают, как технически устроен docx-файл и как это знание может помочь в экстренной ситуации?

Вот что должен знать каждый лигалинженер и желательно знать юристам.

1️⃣ Создайте и назовите docx-файл, например: "тест.docx".
2️⃣ Напишите в нём что-то (например: "робот") и сохраните.
3️⃣ Переименуйте файл в "тест.zip".
4️⃣ Распакуйте этот архив.
5️⃣ Войдите в папку "word", откройте файл "document.xml".
6️⃣ Найдите в нём при помощи Ctrl+F написанные вами слова. Можете увидеть, что его окружает, как устроено всё вокруг.
7️⃣ Удалите несколько тегов (содержимое между символами "<" и ">", включая их) или их кусков, или последние три символа файла ("nt>").
8️⃣ Сохраните файл, заархивируйте всё содержимое назад в zip-архив.
9️⃣ Переименуйте обратно в "тест.docx".

▪️ Попробуйте открыть файл в "Word". Он выдаст ошибку. Теперь вы можете:
1) снова проделать шаги 3—5;
2) вернуть на место все удалённые фрагменты;
3) проделать шаги 8—9.

▪️ Теперь, если вы правильно вернули всё на место, должно открыться без ошибок.

Зачем вот это вот всё?
Иногда документы повреждаются. Этот лайфхак поможет вам получить доступ к уцелевшему содержимому документа при его повреждении, не закачивая его в незнакомые онлайн-сервисы и не рискуя конфиденциальностью данных.

Также это знание полезно, когда вы автоматизируете работу с контентом в .docx-документах, и ваши потребности не закрываются полностью найденными вами библиотеками.
​​👩‍🎓 Научиться кодить бесплатно — можно, почему нет?

Давно не рассказывал о своём продвижении в мире кодинга. За последние две недели сделал для себя сразу два открытия, которые хорошо сплелись воедино: Coursera и Notion.


1️⃣ Coursera
Недавно я решил, что PHP и JavaScript — это хорошо, но с моей губозакатывательной сферой интересов (машинное обучение, нейросети и т.д.) язык Python — лучше. Поэтому решил стать более системным парнем и для начала пройти этот бесплатный курс по Python.

На этой платформе есть курсы платные и есть бесплатные. В выбранном мной курсе задания проверяются системой автоматически на серии тестов. Количество баллов за задание получаю исходя из количества тестов, которые моё решение прошло, по 100-бальной системе. Но "зачёт" ставится только за оценку в 100 баллов. Особенное удовольствие доставляет выполнять задания со звёздочкой, которые не обязательны для зачёта учебных недель, но являются самым важным делом в обучении программиста. Пока что нравится. Когда закончу, думаю взять следующий курс по Python и Data Science или Applied Data Science with Python.


2️⃣ Notion
Решил систематизировать свои знания где-то в Интернете. Trello для этого стал тесен, и я попробовал Notion. Оказывается, тут есть фичи и для программистов: можно указывать язык, чтобы сохраняемый вами код приобретал соответствующую разметку синтаксиса. Прикрепляю скриншот.


А вы использовали эти сервисы?
🍳 Состав изучения программирования, да и самого его

После прошлого поста один из подписчиков мне подсказал посмотреть лекции Тимофея Хирьянова по программированию на Python. Решил не откладывать и посмотреть, так как хочу хорошо изучить Python с разных сторон.

Действительно, чувак интересно и понятно расчехляет суть вещей. Досмотрел уже до 6-й лекции, и пока не думаю останавливаться. Кстати, в ней он доступно и детально объясняет суть разных способов сортировки на примере солдат и прапорщиков. Такие "живые" примеры и визуализация очень важны при обучении абстрактным концепциям.

Но что более важно, в первой лекции Тимофей Хирьянов рассказывает, из чего состоит программирование и на чём следует делать акцент при его изучении:

1️⃣ знание синтаксиса языка(-ов) программирования
2️⃣ знание алгоритмов и структур данных
3️⃣ знание прикладных библиотек
4️⃣ практика программирования
5️⃣ дизайн программного обеспечения
6️⃣ групповая работа программистов

Как вы думаете, какие два из этих направлений были отмечены как приоритетные для старта изучения программирования?
🛠 Что такое лигалинженер?
часть 2: чтиво на Медиуме

Маленько увлёкся работой, поэтому постов стало меньше. Сегодня наконец вышли в свет несколько моих подсозревших мыслей о лигалинженерии. Благодаря ей этот канал и появился, когда мой поток сознания превысил объём используемых до того стоков. :)
📚 Что общего между Инкотермс и .dll в Windows

Инкотермс позволяет с помощью трёх букв объяснить контрагенту его права и обязанности. Говоришь покупателю "DAP" — и он уже знает, что поставку в место назначения, импортные пошлины и местные налоги оплачивает он.

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

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

По сути, фраза "работаем по Инкотермсу 2010 DAP" является похожим запуском "правовой библиотеки" (т.е. свода где-то уже записанных общих юридических правил) и передачей нужных параметров (год редакции, схема работы).

Если это представить как код на языке Python, то может выглядеть как-то так:

import incoterms
newScheme = incoterms.set('2010', 'DAP')

В разных отраслях права есть явления, которые имеют предрасположенность к подобному оформлению, т.е. к заключению в некоторую "капсулу смыслов" с созданием удобного способа взаимодействия с ними. Например, главы гражданского кодекса с разными именованными договорами, составы преступлений, известные фрагменты постановлений ПВСУ и т.д.
🎇 Завет Машиночитаемости Права

На днях вышла книга управляющего партнёра "Симплоер" Антона Вашкевича "Машиночитаемое право: право как электричество".

По сути, это системное изложение тезисов и выводов по ряду аспектов разработки и применения права в машиночитаемой форме.

Оглавление выглядит аппетитно, вот названия некоторых глав и подглав:
▫️ Неэффективность права
▫️ Как автоматизировать право
▫️ Алгоритмизация
▫️ Машинное обучение
▪️ Совместимость права с новым миром
▪️ Подходы к автоматизации права в мире
▪️ Ограничения естественного языка
▪️ Этические вопросы
▪️ Совместимость норм с автоматизацией

И привожу несколько цитат:

📎 "В случае коллизии между машиночитаемыми нормами и нормами, записанными на естественном языке, приоритет должны иметь машиночитаемые. (с. 26)"

📎 "Человек — не самый эффективный исполнитель большинства норм. (с. 34)"

📎 "Самоисполняемость норм блокирует или ограничивает волю людей совершать правонарушения. Но иногда правонарушение оказывается эффективнее соблюдения нормы. (с. 216)"


В общем, кто интересуется проблемами будущего права, книгу стоит прочесть. Местами текст может казаться заумным, но в целом есть доходчивые пояснения и примеры. Особенно меня радуют последние разделы, где идёт мясцо конкретики. 😎
​​🧶 Сила данных — в правде

На картинке ниже и в этом видео — драматическая демонстрация ценности больших данных не только в рамках правовой системы отдельного государства, но и в международных отношениях. Видно, что траектория полёта нашего самолёта до момента его сбития не выделялась из множества траекторий предшествующих рейсов. Так "большие данные" становятся мощным противовесом словам "больших людей".

Одна из задач разумной цифровизации государства в том, чтобы не только создавать системы логирования всех значимых событий (регистрационные действия, декларации, реестры уголовных производств и т.д.), но и защищать собранные данные от последующего вмешательства с целью удаления/фальсификации. В условиях, когда данные будут всё больше становиться ключевым доказательством в расследованиях, им нужно обеспечить свой аналог "системы защиты свидетелей".

Но в отличии от человека, который существует в единственном телесном экземпляре, данные можно хешировать, копировать, сохранять их версии, публиковать, транслировать онлайн и при особой нужде блокчейнизировать. Если по-настоящему захотеть, то можно сделать так, чтобы данные было крайне сложно поставить под сомнение.

А если мы хотим строить прозрачное общество, то нужно научиться лелеять данные, но в то же время не бояться делать их открытыми. Максимизация полномочий общества на чтение данных не связана с техническими возможностями по изменению данных. Ведь многие из нас могут зайти на главную страницу Google, но немногие могут редактировать её, верно?
​​🐺 ИИ интеллекту волк?

1️⃣ На днях Минцифра объявили о создании экспертного комитета по вопросам развития сферы ИИ в Украине. Приоритеты работы определены хорошие, и это как раз хороший повод запустить серию постов на тему ИИ.

2️⃣ Параллельно, в Минске скоро должно состояться установочное собрание Лаборатории Вычислительного Права, чтобы в дальней перспективе "правовое регулирование и юридические практики в цифровую эпоху обрели ту технологическую поддержку и форму, которая бы соответствовала требованиям настоящего и будущего".

В своих выступлениях я постоянно делаю акцент на том, что термин "искусственный интеллект" (AI) довольно запутанный, часто спорный и пользоваться им следует осторожно (особенно стартаперам на питчах перед инвесторами/фондами). При возможности необходимо озвучивать более конкретные термины: "машинное обучение" (Machine Learning, ML), "обработка естественного языка" (Natural Language Processing, NLP), "Интернет вещей" (Internet of Things, IoT), робототехника (Robotics) и т.д. Эти и другие направления могут как включать элементы "искусственного интеллекта", так и не включать.

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

Ниже при помощи кругов Эйлера показываю, как соотносится термин "ИИ" с более конкретными понятиями.
👓 Из чего состоит машинное обучение

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

Например, Педро Домингос в книге "Верховный алгоритм" выделяет пять таких действующих в области машинного обучения научных школ (в хорошем смысле этого слова), именуя их также "племенами":

1️⃣ СИМВОЛИСТЫ 🚠
занятия: использование исходных знаний, "передача готовой экспертизы" компьютеру, определение и обобщение недостающего знания
метод: обратная дедукция
пример: деревья решений, психологические тесты

2️⃣ КОННЕКЦИОНИСТЫ 🧠
занятия: обратная инженерия мозга, нейробиологических механизмов
метод: обратное распространение ошибки (обучение на совершаемых ошибках)
пример: нейросети распознают раковые опухоли

3️⃣ ЭВОЛЮЦИОНИСТЫ 🦕
занятия: симуляция естественного отбора, где неудачные образцы будут "вымирать", а удачные "выживать", размножаться и развиваться дальше, их неудачные потомки — снова "вымирать" и т.д.
метод: генетическое программирование ("рождение" и развитие алгоритмов аки живых существ)
пример: симуляция "пробирки" с соревнующимися микроорганизмами

4️⃣ БАЙЕСОВЦЫ 🧮
занятия: подготовка вероятностного вывода на основе имеющихся и новых поступающих данных
метод: теорема Байеса и ее производные
пример: фильтрация спама в email

5️⃣ АНАЛОГИСТЫ 🖖
занятия: поиск сходств между разными ситуациями + логический вывод других сходств
метод: опорных векторов
пример: рекомендации на основе предпочтений на Нетфликсе и других подобных сервисах

Какое направление интересует вас больше всего?
🏢 Лигалинженер на службе Холдинга

Давеча агроиндустриальный холдинг МХП разместил лигалинженерскую вакансию, обозначенную терминами "Legal tech specialist" и "специалист по автоматизации".

Среди основных обязанностей как раз есть эти волшебные слова, описывающие сложный лик лигалинженера: "автоматизация", "оптимизация", "создание автоматизированных правовых продуктов и решений", "разработка и поддержка процессов/проектов".

Среди пожеланий внимание привлекают такие:
▫️ опыт работы в "направлении LegaLTech" от трёх лет;
▫️ "опыт участия в проектах по автоматизации / внедрению ПО" (интересно, а участие в хакатонах/невзлетевших стартапах засчитывается?) или "навыки программирования" (интересно, а создание чатботов через pipe.bot засчитывается?);
▫️ уверенное владение Excel, PowerPoint и т.д.


В связи с этим, доктринального исследования требуют вопросы:
0. Настаёт эра лигалинженеров-инхаусов в не-юрбизе?
1. Какую долю заработка (в среднем) такие специалисты смогут откусить автоматизацией у юристов, обслуживающих подобные организации?
2. Они будут забирать работу преимущественно у "внутренних" юристов, юристов-аутсорсеров или у всех сразу?
3. Сколько чеканных монет им за это готовы предложить на старте? Кто сходит на собес, расскажите)
🧮 Знакомимся: Теорема Байеса

Что ж, давно здесь не было мяса! Одна из школ машинного обучения — теорема Байеса. Благодаря ей можно делать вероятностные выводы на основе имеющихся данных. То есть можно "предсказывать" (лучше сказать "формировать убеждённость в той или иной степени") как следствия (С), зная о причинах (П), так и причины (П), зная о следствиях (С). Например:

1️⃣ имея много данных о поведении (П) клиента на допросах и типичном влиянии такого поведения на его дальнейший процессуальный статус, адвокат может предполагать, будет ли следователь считать клиента виновным (С);
2️⃣ и наоборот, имея данные о позиции следователя насчёт виноватости (С) клиента, адвокат может предполагать, как клиент себя вёл (П) на допросах.

Но здесь вы должны заметить, что позиция следователя (С) может зависеть не только от того, как вёл (П) себя допрашиваемый. Спектр причин, выливающихся в следствие (обвинить / оставить в покое), может быть довольно широким: П + П + П = С. И теорема Байеса позволяет математически грамотно учитывать сколь угодно большущее количество причин. Главное, чтобы у вас был собран соответствующий набор данных, которым вы доверяете.


📑 Далее вы можете увидеть кусок текста из книги "Верховный алгоритм" Педро Домингоса, в котором я сделал некоторые замены: "врач - адвокат", "пациент - клиент", "грипп - незадекларированные регулярные доходы", "высокая температура - налоговая проверка" и т.д.

🔻🔻🔻
Представьте, что вы адвокат и за последний месяц оказали услугу сотне клиентов. У 14 из них были незадекларированные регулярные доходы (далее НРД), у 20 прошла налоговая проверка, а у 11 — и то и другое.

Условная вероятность налоговой проверки при НРД, таким образом, составляет одиннадцать из четырнадцати, или 11 ⁄ 14. Обусловленность уменьшает размеры рассматриваемой нами вселенной, в данном случае от всех возможных клиентов только до клиентов с НРД.

Во вселенной всех клиентов вероятность налоговой проверки составляет 20 ⁄ 100, а во вселенной клиентов с НРД, — 11 ⁄ 14.
Вероятность того, что у клиента НРД и налоговая проверка, равна доле клиентов с НРД, умноженной на долю клиентов с налоговой проверкой:
P(НРД, НП) = P(НРД) × P(НП | НРД) = 14 ⁄ 100 × 11 ⁄ 14 = 11 ⁄ 100.

Но верно и следующее: P(НРД, НП) = P(НП) × P(НРД | НП).

Таким образом, поскольку и то, и другое равно P(НРД, НП),
то P(НП) × P(НРД | НП) = P(НРД) × P(НП | НРД).

Разделите обе стороны на P(НП), и вы получите
P(НРД | НП) = P(НРД) × P(НП | НРД) / P(НП).

Вот и все! Это теорема Байеса, где незадекларированные регулярные доходы — это причина, а налоговая проверка — следствие.
🔺🔺🔺

Но снова-таки, не стоит забывать, что у налоговых проверок могут быть и другие причины, влияющие на факт их проведения сильнее, чем наличие НРД. Так же, как высокую температуру может вызывать не только грипп. Добавив в формулу математическое представление данных о влиянии и этих причин, вы сделаете ваш вероятностный вывод более точным, обоснованным, реалистичным.

В следующих постах расскажу подробнее, как это работает.