При работе с большими данными часто представляется удобная возможность автоматизировать отдельные механические задачи по извлечению информации, не требующие творческого подхода. К таким задачам относится, например, поиск в текстовых данных, извлечение и разрешение имен людей. Например, страховой компании может понадобиться автоматически извлечь из записей call-центра имена всех участников ДТП. Компании приходится обрабатывать сотни тысяч записей еженедельно. Взглянув на один небольшой текст, человек с легкостью выделит в нем имена людей. Но вы работаете с огромным количеством данных, и вам необходимо вручную проанализировать каждую запись и составить качественный отчет в сколько-нибудь разумный промежуток времени, эта миссия кажется невыполнимой.
Используя алгоритмы автоматического извлечения имен, мы можем обучить компьютеры выполнять эту трудозатратную задачу вместо нас.
Подходы и трудности – Составление словарей имен
Самый простой подход к извлечению имен людей из больших данных предполагает создание специальных словарей или списков наиболее распространенных имен и фамилий. То же самое происходит, когда человек запоминает прототипы распространенных имен в зависимости от частоты их использования. Наиболее часто используемые имена легче и с большей точностью распознаются и человеком, и специальным алгоритмом. Однако если использовать только один словарный подход, это ограничивает количество имен, которые алгоритм способен извлечь из текста, поскольку ни один словарь не может содержать все множество новых, креативных и необычных имен, которые создаются каждый день (например, Blue Ivy, Jennyfyr и др.), а также учитывать все разнообразие фамилий (например, Glide, Nowak и др.). Кроме того, иностранные имена (Kostas, Eleni и др.) могут просто не войти в словарь на каком-то языке, в результате чего они могут быть проигнорированы.
Использование библиотек правил
Часто гораздо более эффективно бывает создание общих правил, учитывающих модели, по которым создаются имена, вместо того чтобы использовать громоздкие списки возможных имен. При таком подходе имена людей выделяются с учетом их контекста. Рассмотрим простой пример. С помощью нескольких абстрактных правил мы быстро определим, что представленный ниже текст содержит имя человека, причем первая часть данной строки – имя, вторая – фамилия.Человек сразу заметит, что эти два элемента написаны с заглавной буквы и следуют друг за другом. Мы также знаем, что элемент золотистого цвета – очень распространенное имя, John, и оно встречается в большинстве словарей имен. Глядя на элемент голубого цвета, Doe, мы понимаем, что он не имеет никакого отношения к словарному значению слова doe (анг. самка оленя), потому что это он также написан с заглавной буквы.
Используя это эвристическое правило, мы можем создать очень простой алгоритм для извлечения имен, который будет искать цепочки из двух или трех слов, написанных с заглавной буквы. Точность такого алгоритма можно повысить за счет имеющейся информации, например, списка известных имен и фамилий. Создав лишь одно простое правило, мы можем автоматизировать извлечение из текста даже таких фамилий, которые ранее были неизвестны, например, Brouwer:
В данной строке неизвестное слово Brouwer распознается как фамилия, поскольку оно следует за именем и пишется с заглавной буквы.
Очевидно, что это правило необходимо усовершенствовать для того, чтобы оно распознавало и другие, более сложные, модели имен, и позволяло фильтровать ошибочные результаты. Например, нам следует ограничить результаты с помощью стоп-листа – списка часто встречающихся слов, которые обычно не являются именами (например, глаголы is, was и др.).
Одна из трудностей при автоматизированном процесса извлечения имен состоит в определении контекста имен и фамилий, которые в английском языке имеют свое значение и являются именами нарицательными. Например, в первом словаре имен встречалось слово Hope. Алгоритм рассматривал это слово как имя в следующих двух записях:
Человек бы сразу определил, что слово Hope, которое является именем человека, не может быть глаголом, как в первом предложении. Кроме того, слово hope в значении надежды и ожидания, не может называть того, кто водит голубой Шевроле (второе предложение). Поэтому мы можем указать предполагаемый контекст имени Hope. Это должно быть существительное, которое обозначает объект, способный выполнять обычные для людей действия (например, водить машину, думать и др.). Или же мы можем просто указать, что слово Hope не является глаголом.
Настройка алгоритма извлечения имен с учетом национальной специфики
Существует множество культурно-национальных отличий в процессе присвоения имен, которые могут менять их значение. Неразумно ожидать, что имена людей, живущих в разных странах, будут создаваться по одинаковым моделям. Даже если имена представителей разных национальностей состоят из ограниченного числа простых составных элементов, они могут иметь разные значения в зависимости от страны.
Рассмотрим следующий пример. В США чаще всего встречаются имена, состоящие из трех элементов (основное имя, второе имя, которое часто сокращают, и фамилия). Однако среди испаноязычного населения, как в США, так и за рубежом, тот же трехкомпонентный состав может иметь другое значение, поскольку элементы в нем часто представлены в другом порядке – имя и двойная фамилия. Поэтому считать элемент González во второй строке вторым именем было бы ошибкой.
Этот пример показывает, что порядок элементов в имени может варьироваться от одной культуры к другой. Во многих азиатских культурах фамилии обычно предшествуют именам.
Для того, чтобы избежать некорректной интерпретации элементов имен, пользователю необходимо настроить алгоритм извлечения имен так, чтобы учитывалась национальная специфика текста.
Автоматическое извлечение имен в PolyAnalyst
Описанные здесь случаи касаются лишь некоторых трудностей из тех, что могут возникнуть при создании алгоритма извлечения имен из текста. Все это может быть осложнено плохим качеством (или зашумленностью) данных или конфликтами между именами людей и сущностями других типов (например, названиями компаний). Следите за нашими публикациями в блоге, мы обязательно вернемся к этому вопросу и расскажем о современных подходах к извлечению имен!