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

Знакомство с проектом

Human Rights First — это независимая правозащитная организация, цель которой — бросить вызов Соединенным Штатам как лидеру в поддержке прав человека во всем мире. Организация хочет использовать информацию о предыдущих случаях, чтобы помочь лицам, ищущим убежище, иметь больше шансов на получение убежища. В марте 2021 года перед моей группой была поставлена ​​задача продолжить работу над продуктом, который должен брать файлы дел в формате PDF, извлекать соответствующую информацию и возвращать ее пользователю в формате с возможностью поиска с фильтрацией. Это позволит HRF иметь доступные для поиска данные о результатах дел, чтобы адвокаты по вопросам убежища могли адаптировать свои дела, чтобы они лучше подходили своим клиентам. В этой группе я участвовал в подключении и развертывании приложения Data Science, которое считывало и очищало эти файлы дел. Я работал в кросс-функциональной группе вместе с 3 другими специалистами по данным и 6 членами веб-команды, чтобы продвигать проект вперед.

Работа с проблемами

Больше всего меня беспокоило то, что я пытался понять, как три большие независимые кодовые базы, которые мы унаследовали, могут быть связаны и работать вместе. Это была непростая задача, особенно когда я впервые входил в чужой код. Как только я начал разбираться с кодовой базой Data Science, стало очевидно, что проблема состоит из двух частей. Первая часть заключалась в том, что приложение Data Science не работало в активном развернутом состоянии. Во-вторых, кодовые базы Front End, Back End и Data Science не были связаны или обменивались данными. Реальность такова, что обе проблемы должны быть решены, чтобы одна из них была протестирована и функционировала.

Сначала мне пришлось обратиться к аспекту развертывания приложения. Я мог запустить его локально на своем компьютере, но при развертывании в Интернете я столкнулся с препятствиями, которые было трудно преодолеть. У Heroku, сайта развертывания приложений, истекло время ожидания из-за слишком долгой загрузки файла. После дальнейшего изучения мы решили, что развертывание Elastic Beanstalk в Amazon Web Services вместо этого может решить эту проблему, а также предоставить некоторые дополнительные преимущества по сравнению с Heroku. Нам удалось это сделать, однако теперь мы столкнулись с ограничением размера файла в 1 МБ при загрузке файлов дел. К счастью, в моей команде есть несколько мастеров развертывания и баз данных, которые придумали несколько умных решений. Мы обошли эту проблему, загрузив эти файлы в корзину S3 (например, в облачное хранилище), которая затем могла передать файл непосредственно развернутому приложению, обойдя ограничение размера загрузки.

Вторая большая проблема заключалась в том, что части проекта Front End, Back End и Data Science были созданы независимо друг от друга и не были связаны между собой. Как правило, вам нужно, чтобы ваши кодовые базы могли общаться друг с другом и передавать информацию туда и обратно. Но в нашем случае каждая кодовая база была построена по-своему, без определения общих элементов, которые позволили бы такое общение.

Чтобы решить эту проблему, я поговорил с заинтересованным лицом из Human Rights First, чтобы понять, какие поля они хотели бы видеть при поиске. Из этого обсуждения я изменил нашу часть кода, чтобы она соответствовала этим полям. Наконец, команды Front End, Back End и Data Science могут изменить существующий код, чтобы все они использовали одни и те же поля с одинаковыми именами. Это означало, что конечные точки одной кодовой базы могли указывать на конечную точку с тем же именем в другой кодовой базе, что позволяло перемещать информацию между ними.

Все сходится

На сегодняшний день проект Human Rights First Asylum позволяет пользователю загружать файл в формате PDF или изображение через интерфейс в интерфейсе веб-сайта. Затем он отправляет этот файл дела в корзину S3, где он может хранить файл, к которому будет обращаться приложение парсинга Data Science. Это приложение использует оптическое распознавание символов (OCR) для чтения слов в документе и извлечения соответствующей информации, которую приложение-скребок было обучено находить. Эта информация собирается в полях, которые вы видите на изображении «Доработанные соглашения об именах для конечных точек» выше, и отправляется обратно в корзину S3. Теперь пользователь может выполнять поиск по этим результатам и даже фильтровать их, чтобы сделать их более конкретными. Они даже увидят результаты, основанные на том, что они только что загрузили и добавили в базу данных. Пользователь также может перейти к конкретному судье и посмотреть, как он выносит решения по делам, а также некоторые визуализации, которые дают представление о конкретных характеристиках.

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

В конечном счете, этот проект Labs помог мне стать более амбициозным, работая в коллективной среде над созданием кросс-дисциплинарного продукта. Я научился не только выходить за пределы своей зоны комфорта, изучая развертывание AWS, но и научился работать вместе с людьми из других команд, чтобы связать этот развернутый код с остальной частью проекта. Получение отзывов от членов команды, занимающихся другими дисциплинами, дало мне более широкое представление о том, как строятся большие проекты. Я научился задавать вопросы другим командам, чтобы понять их код и упростить работу в совместных проектах в будущем. В частности, я узнаю, как создавать свой код таким образом, чтобы упростить связь с другими кодовыми базами для проектов такого типа.