В докладе рассказывается о том, как мы извлекаем сущности (такие как имена людей и географические названия) из текстов и запросов.
А еще об извлечении фактов, т. е.
связей между объектами.
Мы рассмотрим несколько подходов к решению этих задач: формулирование правил, составление словарей различных объектов, машинное обучение.
Лекция рассчитан на старшеклассников - слушателей Малого ШАД, но и взрослые с его помощью смогут восполнить некоторые пробелы.
http://video.yandex.ru/users/e1coyot/view/4/ Извлечение объектов и фактов из текстов является частью НЛП (Natural Language Processing — автоматическая обработка естественного языка).
Конечная цель — научить машину полностью понимать обычный человеческий текст. И мы только начали двигаться к этой цели.
Сегодня НЛП успешно используется для нескольких целей:
- Текстовый поиск
- Извлечение фактов
- Диалоговые системы и вопросы-ответы
- Синтез и распознавание речи
- Рейтинг тональности отзывов
- Кластеризация и классификация текстов.
Основная часть этого процесса посвящена определению объектов, их отношений и свойств в тестах.
Text Mining можно разделить на несколько крупных задач:
- Распознавание именованных сущностей (NER) – извлечение названных сущностей/объектов;
- Разрешение кореференции – разрешение кореферента;
- Information Extraction (IE) – извлечение фактов.
В примере названия компаний выделены красным, а имена людей зеленым.
Этот выбор соответствует желаемому поведению алгоритма.
После чего можно переходить к разрешению кореференции.
Кореференция — это попытка связать несколько разных ссылок в тексте с одним реальным объектом.
Одним из примеров кореференции является анафора — ссылка на объект с помощью специальных указателей.
В нашем случае это местоимения.
Второй пример кореференции — синонимия.
Это можно выразить по-разному:
- Транслитерация: Яндекс – Яндекс.
- Аббревиатура: ВТБ – Внешторгбанк – Банк внешней торговли.
- Синонимы: больница – госпиталь.
- Словообразование: Москва – Москва.
- Графика: автокредит – автокредит.
Факты можно представить в виде строк таблицы, столбцы которой содержат объекты и связи между ними.
Результат процесса извлечения фактов выглядит примерно так:
Обычно мы используем IE для извлечения следующих типов объектов: даты, адреса, номера телефонов, полные имена, названия продуктов, компаний и т. д. Полезными фактами чаще всего являются события, мнения и обзоры, контактная информация и объявления.
Первичная обработка текста
Итак, на входе мы имеем текст на естественном языке.Его необходимо анализировать на всех языковых уровнях сразу:
- графематический.
- лексический
- морфологический
- синтаксический
- смысловой
Затем слова нормализуются – выделяется их первоначальная форма.
Далее проводится полный или частичный синтаксический анализ, определяются зависимости и связи между словами в предложениях.
На первый взгляд кажется, что разбить текст на предложения не составит труда.
Вам просто нужно сосредоточиться на знаках препинания, которые обозначают конец предложения.
Но этот метод не всегда работает. Ведь, например, точка также может обозначать аббревиатуру и использоваться в дробных числах или URL-адресах.
В названиях компаний или услуг можно использовать любые знаки препинания.
Например, Yahoo! Или Яндекс.
Маркет. Выбрать исходную форму тоже не так просто.
Конечно, в большинстве случаев его можно получить, используя морфологический словарь.
Но это не всегда применимо.
Например, как определить словарную форму слова «стакан»? Это может быть как существительное, так и глагол.
И прежде чем обратиться к морфологическому словарю, нужно убрать омонимию.
Это можно решить, используя языковой корпус , в котором все слова размечены по частям речи и удалена омонимия.
Таким образом, исходя из контекста и статистики словоупотребления в корпусе, можно решить, к какой части речи относится то или иное слово.
Следующий этап — полный или частичный разбор.
Строится граф зависимостей и отношений между словами внутри предложения.
Вот пример синтаксического дерева, которое можно построить с помощью синтаксический анализатор :
Не существует алгоритмов, способных построить полный синтаксический граф без ошибок при любых условиях.
Однако для большинства приложений Text Mining достаточно частичного анализа.
Помимо морфологической омонимии, о которой мы говорили выше, существует еще синтаксическая и «объективная» омонимия.
В качестве примера синтаксической омонимии приведем пример: «Он видел их семью своими глазами».
Оба варианта прочтения будут синтаксически правильными: кто-то видел чью-то семью своими глазами, или кто-то семиглазый кого-то видел.
Для решения этой проблемы необходимо привлечь семантический анализ.
«Объектная» омонимия предполагает, что два разных реальных объекта могут иметь одинаковые имена.
Например, в России есть два известных человека по имени Михаил Задорнов: комик и бывший министр финансов.
Если не научить систему различать этих людей, при попытке извлечь о них факты могут возникнуть различные казусы.
Извлечение фактов
После того, как все эти действия выполнены, можно приступать непосредственно к извлечению фактов.Используя специальные алгоритмы, мы хотим получить из неструктурированного отрывка текст, в котором будут отмечены и категоризированы все нужные нам объекты и факты.
Визуально это можно представить следующим образом:
Условно можно выделить три основных подхода, используемых при извлечении фактов:
- онтологии;
- на основе правил (Rule-based);
- опираясь на машинное обучение (ML).
Онтологии могут быть универсальными (они пытаются описать максимально широкий набор объектов), отраслевыми (с информацией по предметным областям) и узкоспециализированными (предназначенными для решения конкретной задачи).
Также можно использовать объектные онтологии (базы знаний).
Самый яркий пример базы знаний — Википедия.
Итак, у нас есть своего рода онтология.
На основе контекстов и существующих списков объектов можно строить гипотезы относительно объектов и фактов в тексте, а затем проверять или отвергать эти гипотезы.
Слева находится текст, в котором цветом отмечены объекты, о которых мы хотели бы извлечь некоторую информацию.
В качестве онтологии мы будем использовать Википедию.
Отправив туда запросы по всем ключевым словам из нашего текста, мы получим список статей, расположенный справа.
Красным цветом отмечены статьи, относящиеся сразу к нескольким объектам.
Теперь наша цель — отсекать ложные гипотезы.
Это можно сделать разными способами.
Чаще всего используется машинное обучение и различные контекстуальные и синтаксические факторы.
Извлечение информации с помощью онтологий позволяет получить достаточно высокую точность НЭР и отсутствие случайных ответов.
Удаление омонимии также происходит с высокой точностью.
К недостаткам такого подхода можно отнести низкую полноту, поскольку извлечь можно только то, что уже есть в онтологии.
И нужно либо добавлять объекты в онтологию вручную, либо строить процедуру автоматического добавления.
Другой подход — машинное обучение — требует большого количества входных данных.
Необходимо максимально покрыть обучающую выборку текстов лингвистической информацией: выделить всю морфологию, синтаксис, семантику, онтологические связи.
Преимущества этого подхода в том, что он не требует ручного труда, кроме создания размеченного корпуса.
Нет необходимости создавать правила или онтологии.
При необходимости такую систему можно легко перенастроить и переобучить.
Правила становятся более абстрактными.
Однако есть и недостатки.
Инструменты автоматической разметки русскоязычных текстов еще не очень развиты, а существующие не всегда легко доступны.
Дела должны быть достаточно объемными, размечены правильно, равномерно и полностью.
А это довольно трудоемкий процесс.
Кроме того, если что-то пойдет не так, сложно отследить, где именно произошла ошибка, и точно ее исправить.
Третий подход — это подход, основанный на правилах, то есть написание шаблонов вручную.
Аналитик пишет описания типов информации, которую необходимо извлечь.
Подход удобен тем, что при обнаружении ошибок в результатах анализа очень легко найти их причину и внести необходимые изменения в правила.
Самый простой способ создания правил — для относительно стандартизированных объектов: имен, дат, названий компаний и т. д. Выбор оптимального подхода определяется конкретной задачей.
Сейчас чаще всего используются онтологии и машинное обучение, однако будущее за гибридными системами.
В Яндексе NER используется для извлечения фактов в почте, названий географических объектов и названий из запросов, фактов в вакансиях, а также для кластеризации и классификации новостей.
Теги: #Алгоритмы #Обработка естественного языка #Яндекс #лингвистика
-
О Поиске Утечек Памяти В Приложениях C++/Qt
19 Oct, 24 -
Главный Динамик
19 Oct, 24