Проблема

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

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

Разрешение

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

Именно этим я занимался во время стажировки в ThinkData Works.

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

Процесс кажется простым, пока вы не поймете, что:

  • I.B.M.
  • IBM
  • Айбм Инк.
  • IBM Канада

… все пишутся по-разному, но относятся к одному и тому же объекту.

Кроме того, «Оуандо 1998» и «Оуандо 1999» почти идентичны, но представляют разные сущности. Хотя это сбивает с толку людей, компьютерам еще сложнее придумать правила, которые помогут им связывать тексты и значения.

Наш процесс

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

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

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

Конвейер был ясен и ужасен одновременно.

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

Заставляя эти различные компоненты работать вместе, я развлекался, исследуя различные методы генерации кода и внедряя свой собственный уникальный алгоритм генерации кода, который будет генерировать уникальные коды каждую миллисекунду на протяжении более 100 лет. Устранение использования текста в качестве идентификатора записей путем замены его уникальным сгенерированным кодом для каждой сущности является отличным дополнением к инструментарию Namara, а также к нынешним и будущим продуктам, созданным на платформе, поскольку упрощает связь между различными компонентами.

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

Стажировка в ThinkData Works была отличным и полезным опытом. Стажировка в ThinkData Works дала мне не только возможность разработать продукт, который имеет непосредственное практическое применение, но и возможность работать непосредственно вместе с техническим директором Бренданом Стеннеттом и главным специалистом по данным Мерсой Голестанех. Возможность работать над реальными проблемами, разрабатывать реальные решения и делать это с наставниками, которые преуспевают в своей области, была бесценной.

Амр присоединился к ThinkData для своего первого летнего сотрудничества после второго года обучения информатике и математике в Университете Торонто. Присоединение к ThinkData на этот срок сотрудничества помогло Амру совместить веб-разработку и машинное обучение — две его любимые области компьютерных наук.

Хотите узнать больше о совместной программе ThinkData? Свяжитесь с нами по адресу [email protected] для получения дополнительной информации.