Использование искусственного интеллекта и машинного обучения для поиска подсказок для журналистов

Журналисты, работающие с просочившимися документами, с помощью недавно опубликованных Файлов FinCEN осознали, что им нужна помощь в поиске и структурировании информации. Международный консорциум журналистов-расследователей (ICIJ) обратился за помощью к шведскому телевидению (SVT) и их команде журналистов данных.

Задний план

Утечка содержит отчеты о подозрительной деятельности SAR: s, поданные банками в агентство финансовой полиции США FinCEN. Документы были получены BuzzFeed News и проверены ICIJ. Отчеты следуют шаблону, но разные сотрудники банка пишут свои отчеты по-разному.

Для участников проекта было очень интересно создать базу данных всех транзакций, которые были упомянуты в около 2 100 отчетах, которые были включены в утечку. Наша миссия заключалась в том, чтобы извлекать данные из произвольного текста, идентифицируя различные сущности, такие как компании, банки, номера счетов, деньги и даты. Кроме того, было интересно передать информацию людям, организациям и странам, упомянутым в отчетах.

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

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

Документы

Отчеты пишутся по-разному в зависимости от автора. Этот вариант затрудняет автоматический анализ. Давайте посмотрим на вымышленный пример:

Представьте, что у нас есть компания под названием X Ltd, которая совершает одну или несколько подозрительных транзакций с компанией Y Ltd через банк Z Banking. Это можно записать так:

«На 18.12.2012 X Ltd отправила три (3) транзакции на общую сумму 700 000 долларов США через Z Banking одному бенефициару Y Ltd.»

«X Ltd отправила три (3) транзакции на общую сумму 700 000 долларов США через Z Banking одному бенефициару Y Ltd в период с 18 декабря 2012 года по 19 декабря 2012 года».

«С 18.12.2012 по 19.12.2012 X Ltd отправила три (3) транзакции на общую сумму 700 000 долларов США через Z Banking одному бенефициару Y Ltd.»

«18/12/12 Y Ltd получила три (3) транзакции на общую сумму 700 000 долларов США через Z Banking от единственного отправителя X Ltd.»

«18 декабря 2012 года X Ltd перевела 700 000 долларов США тремя отдельными транзакциями в диапазоне от 5 000 до 570 000 долларов США со счетом № ABC123 в Z Banking через Q Banking с конечным бенефициаром X Ltd.»

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

Работа с реальными данными

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

«Z BANKING СОЗДАЕТ ОТЧЕТ НА 18.12.2017 ВКЛЮЧАЯ ЧЕТЫРЕ СОТЫ (400) ОПЕРАЦИЙ НА ОБЩУЮ сумму 13 020 021 долларов США X LTD ПЕРЕВОДАЛА 700 000 долларов США В ТРИ ОТДЕЛЬНЫХ ОПЕРАЦИЯХ В РАЗМЕРЕ ОТ 5000 ДО 570 000 долларов США, СО СЧЕТОМ # ABC123 AT Z BANKING ЧЕРЕЗ Q BANKING С КОНЕЧНЫМ БЕНЕФИЦИАРОМ Y LTD ДВЕ (2) ОПЕРАЦИИ БЫЛИ ОТПРАВЛЕНЫ ОТ КОМПАНИИ НА 20.02.2012 НА ВСЕГО 35000 долларов США ЧЕРЕЗ СЧЕТ # CBA321 В Z BANKING С ОДНИМ БЕНЕФИЦИАРОМ Y LTD »

Нам нужно было определить ряд ключевых слов или фраз, чтобы иметь возможность разбить текст на части или предложения, которыми можно было управлять. Например, фразы типа «также обратите внимание», «однако» или «этот поиск идентифицирован» использовались для разделения предложений. Наша цель не состояла в том, чтобы найти правильное предложение, вместо этого мы хотели разбить текст на части, каждая из которых содержит информацию только об одной транзакции. Мы нашли новые фразы и новые способы разделения информации на сущности, обработав несколько документов с огромными объемами текста.

Как мы оформляли документы?

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

Весь текст в отчете был разбит на более мелкие части и проанализирован с помощью модели NER. Мы классифицировали транзакцию как текст, содержащий как минимум одну дату, одну сумму и одну организацию или лицо. Мы также рассмотрели другие части текста, например, слова «отправить» и «получить» определяли, в какую сторону уходят деньги.

Обучение модели NER

Для обучения модели нам пришлось разработать инструмент для обработки фраз и их правильной маркировки.

Помеченные предложения затем можно использовать для обучения нашей модели NER с помощью SpaC y. Наша первая модель допускала множество ошибок, но, изучив ошибки, мы могли добавить примеры. Это дало модели больше шансов учиться и совершенствоваться.

Нормализация имен

Еще одна проблема заключалась в том, что имя может быть написано разными способами - как в разных отчетах, так и иногда в одном и том же отчете. Например. «Company Name Limited» может быть записано как «Company Name Ltd» или «Company Name».

Мы вели списки названий компаний, чтобы отслеживать обнаруженные нами сущности, и пытались связать названия, описывающие одну и ту же компанию. Мы использовали тот же процесс для имен людей.

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

В итоге мы обнаружили 13 500 транзакций и смогли идентифицировать в отчетах 19 000 банков, компаний и организаций.

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

В SVT это привело к SEB and the Fincen Files (на шведском языке) ».

Рикард Андерссон
Хелена Бенгтссон
Фредрик Столнаке