Анализ текстов социальных медиа при помощи InfoSphere BigInsights

Использование инструментов, основанных на Eclipse, для создания, тестирования и публикации экстракторов текста

При анализе данных социальных медиа часто приходится обрабатывать текстовые сообщения, чтобы классифицировать их содержимое, исключать ложные утверждения, оценивать мнения и выполнять соответствующие действия. Для этого нужно извлекать контекст текстовых данных. Такую возможность предоставляет программное обеспечение InfoSphere BigInsights – платформа, разработанная IBM на основе проекта Apache Hadoop. Эта статья познакомит вас с BigInsights-средами разработки и исполнения аналитики текста, акцентируя внимание на использовании инструментов, основанных на Eclipse, для создания, тестирования и публикации экстракторов текста, после чего вы сможете извлекать содержимое, соответствующее вашему приложению.

Синтия M. Саракко (Cynthia M. Saracco), старший инженер-программист, IBM

C. M. Саракко (Cynthia M. Saracco) работает в исследовательской лаборатории компании IBM в Силиконовой долине, в объединении DB2 XML. Сфера ее служебных интересов – управление базами данных, XML, разработка веб-приложений и смежные темы.


developerWorks Master author
        level

Гэри Робинсон, исполнительный консультант, IBM

Гэри Робинсон (Gary Robinson) – фотографияГэри Робинсон (Gary Robinson) работает исполнительным консультантом в лаборатории IBM в Силиконовой долине и в настоящее время занимается данными большого объема, специализируясь на анализе текста. Он также управляет каналом IBM Big Data на YouTube (www.youtube.com/ibmbigdata). Он отвечал за различные технические аспекты при разработке новых технологий управления информацией IBM в США и Великобритании.



Виджай Боммиреддипалли, разработчик решений Data Server, IBM

Виджай Боммиреддипалли (Vijay Bommireddipalli) - разработчик решений в отделе Data Servers Solutions в лаборатории IBM Silicon Valley Lab в Сан Хосе, Калифорния. Он помогает клиентам и партнерам освоить технологии серверов данных IBM. До этого был разработчиком в группе Warehouse Manager. Пришел в IBM в июле 2000 года после получения степени магистра по вычислительной технике и электротехнике в Университете Массачусетса в Дартмуте.



18.10.2013

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

Несмотря на то, что цели различных проектов анализа данных социальных медиа могут быть разными, ИТ-специалисты считают, что в технологии, необходимые для достижения этих целей, должны, как правило, входить:

  • Платформа, способная эффективно обрабатывать большие объемы изменяющихся данных.
  • Механизм анализа текста, который может извлекать контекст из блогов, досок объявлений и других социальных медиа.
  • Среда разработки, которая позволяет программистам создавать предметно ориентированное ПО для анализа текстовых данных.
  • Инструменты, которые бизнес-аналитики могут использовать для анализа текстовых данных.

В статье исследуется InfoSphere BigInsights, платформа IBM для анализа больших объемов данных, которая предоставляет эти и другие технологии, позволяющие организациям быстро запускать проекты анализа данных социальных медиа. Многие из описанных здесь возможностей анализа текста также применимы для анализа не только социальных медиа, но и других типов текстовых данных. Кроме того, большинство описанных здесь возможностей анализа текста входят в InfoSphere Streams, дополнительное предложение для обработки больших объемов потоковых данных в оперативной памяти.

Предварительные сведения

Использование встроенных средств BigInsights

Эта статья знакомит с технологией IBM для анализа текстовых данных большого объема и ее использованием с целью создания пользовательских экстракторов текста для анализа данных социальных медиа. Во многих случаях нет необходимости создавать всю аналитику с нуля и можно использовать ускорители приложений, предлагаемые платформой IBM для данных большого объема. BigInsights включает в себя ускоритель IBM для анализа социальных данных (Social Data Analytics – SDA), облегчающий реализацию приложений для работы с социальными данными. Ускорители – это программные компоненты, которые увеличивают скорость реализации сценария на платформе IBM для данных большого объема. Они включают в себя исходный и объектный код, который пользователи могут применять в своих приложениях.

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

SDA использует инфраструктуру приложений BigInsights, которая позволяет планировать приложения, задавать им параметры и запускать их по мере необходимости с помощью Web-инструментов. Ссылки на подробное описание приведены в разделе Ресурсы.

InfoSphere BigInsights – это программная платформа, призванная помочь организациям находить и анализировать бизнес-информацию, скрытую в больших объемах разнообразных данных, которые часто игнорируются или отвергаются, поскольку слишком неудобны или трудны для обработки традиционными средствами. Примерами таких данных являются данные социальных медиа, новостные ленты, журналы событий, данные о поведении потребителей (clickstream-данные), выходные данные электронных датчиков и даже некоторые традиционные транзакционные данные.

Чтобы помочь компаниям извлекать полезную информацию из таких данных, платформа BigInsights Enterprise Edition предлагает несколько проектов с открытым исходным кодом, в том числе Apache Hadoop, а также ряд технологий, разработанных IBM. Hadoop и дополняющие его проекты предлагают эффективную программную инфраструктуру для приложений по обработке больших объемов данных, которая использует распределенные вычислительные среды для достижения высокой масштабируемости. Технологии IBM дополняют эту инфраструктуру с открытым исходным кодом аналитическим ПО, интеграцией корпоративного ПО, расширениями платформы и инструментами. В предоставляемые IBM расширения входят механизм анализа текста и основанные на Eclipse инструментальные средства для разработки приложений. Дополнительные сведения о BigInsights приведены в разделе Ресурсы.

Чтобы помочь вам понять, как приступить к анализу текста с помощью BigInsights, рассмотрим распространенный бизнес-сценарий, в котором аналитики хотят исследовать узнаваемость, охват и "шум" относительно конкретного бренда или услуги. В качестве образца бренда мы будем использовать IBM Watson, а исследовать будем один простой аспект анализа сообщений социальных медиа. IBM Watson – это исследовательский проект по выполнению сложного анализа для нахождения ответов на вопросы, сформулированные на естественном языке. В 2011 году IBM Watson занял первое место в телевизионной интеллектуальной игре Jeopardy!, победив двух лучших участников-людей (см. раздел Ресурсы).


Ключевые аспекты анализа текста

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

  • Декларативный язык для идентификации и извлечения содержимого из текстовых данных – язык запросов аннотаций (Annotation Query Language – AQL), позволяющий программистам создавать представления (коллекции записей), которые соответствуют указанным правилам.
  • Создаваемые пользователями или предметно ориентированные словари – словари, в которых можно определять соответствующий контекст во входном тексте для извлечения бизнес-информации из документов. Например, отраслевые словари (для таких отраслей как здравоохранение, банковские или страховые услуги) могут помочь пользователям получить представление о том, насколько тесно данный бренд (например, IBM Watson) связан с одной или несколькими конкретными отраслями.
  • Создаваемые пользователями правила извлечения текста – инструменты обнаружения шаблонов и создания регулярных выражений (regex), которые позволяют программистам указать, как нужно анализировать текст, чтобы выделить данные, представляющие интерес. Например, программист может указать ключевые слова, которые должны (или не должны) появляться в определенной близости друг к другу. Если вместе с несколькими маркерами Watson встречаются ключевые слова IBM и software, значит, речь в тексте идет, скорее всего, о проекте IBM Watson. Если непосредственно перед Watson встречается ключевое слово Bubba, это означает, что данный документ, вероятно, посвящен профессиональному гольфисту Bubba Watson, а не проекту программного обеспечения IBM Watson.
  • Отслеживание происхождения и визуализация – анализ текста часто является итеративным по своей природе и требует наличия правил (и словарей), создаваемых посредством друг друга и уточняемых с течением времени. Необходимость уточнения часто определяется путем сравнения с образцами данных. Отслеживание и исследование происхождения (или источника) результатов, полученных с помощью экстрактора текста, помогает программистам определять области, которые могут потребовать дальнейшей доработки.

На рисунке 1 показана архитектура решения IBM для анализа текста при помощи InfoSphere BigInsights и Streams. Разработчики используют декларативный язык (AQL) и поставляемые корпорацией IBM инструменты для создания экстракторов текстовых данных, подлежащих анализу. Исполняющий механизм прозрачно оптимизирует декларативные инструкции на языке AQL подобно тому, как оптимизатор, принимающий решения на основе оценки издержек в системе управления реляционными базами данных, оптимизирует SQL-запросы. На этом шаге оптимизации выводится скомпилированный план, определяющий, как BigInsights будет обрабатывать коллекцию входных документов, хранящихся в распределенной файловой системе.

Рисунок 1. Архитектура IBM для анализа текстовых данных большого объема
Архитектура IBM для анализа текстовых данных большого объема

При развертывании на BigInsights-кластере экстракторы текстов можно вызвать посредством BigSheets (Web-инструмента с интерфейсом, похожим на электронные таблицы), Jaql (языка запросов и сценариев) или Java™ API.

В статье исследуется простой сквозной сценарий анализа текста, знакомящий с процессом разработки, публикации, развертывания и применения пользовательского приложения для извлечения текста на кластере BigInsights. В описываемый сценарий входят:

  1. Сбор и подготовка данных примера.
  2. Разработка и тестирование экстрактора текста, подлежащего анализу, с помощью плагинов Eclipse.
  3. Публикация и развертывание простого приложения для анализа текста на кластере BigInsights.
  4. Применение функции анализа текста из BigSheets и проверка результатов.

Рассмотрим эти шаги более подробно.


Шаг 1. Сбор и подготовка данных примера

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

В сценарии статьи мы использовали пример приложения BigInsights для поиска в социальных медиа информации о проекте IBM Watson. В статье Анализ социальных медиа и структурированных данных с помощью InfoSphere BigInsights (EN) рассказывается, как вызвать пример приложения и исследовать подмножество его выходных данных. Наша статья, основанная на этом сценарии, идет дальше и на примере новостей и сообщений в блогах демонстрирует создание и выполнение простого приложения анализа текста для выбранного нами бренда IBM Watson. Прикрепленный файл WatsonNewsBlogsData.json содержит подмножество информации, собранной примером приложения для извлечения данных из социальных медиа, предоставляемого платформой BigInsights. Входные данные для приложения:

  • Поисковые термины – IBM и Watson.
  • Диапазон дат – с 1 января 2012 года по 1 июня 2012 года.
  • Максимум совпадений – 25000.

Используя эти входные параметры, приложение извлекло из социальных медиа данные, в которых упоминаются термины IBM и Watson (не обязательно в одной фразе). Мы получили более 10000 записей из целого ряда международных социальных медиа за указанный период.

Для простоты файл примера содержит только отобранные поля из нескольких сотен записей блогов и новостей, опубликованных на поддерживаемых IBM сайтах, включая IBM.com и ASmarterPlanet.com. Поле TextHtml содержит сообщение в новостях или блоге и является предметом основного внимания при разработке. Полный набор выходных данных, собранных примером приложения, находится в нашей распределенной файловой системе BigInsights и служит основой для рабочих книг BigSheets.


Шаг 2. Разработка и тестирование экстрактора текста

BigInsights предоставляет набор мастеров, основанных на Eclipse, предназначенных для разработки и тестирования экстракторов текста, – аналитического ПО, которое извлекает структуру и контекст сообщений в социальных медиа и других текстовых данных. Вам потребуется соответствующая интегрированная среда разработки Eclipse, чтобы вы могли загрузить и установить плагин платформы BigInsights для разработки приложений. Информационный центр BigInsights содержит сведения о предварительно установленном ПО Eclipse и об установке плагина BigInsights (см. раздел Ресурсы). В нашем сценарии тестирования мы использовали Eclipse Helios Service Release 2 и Eclipse Data Tools 1.9.1.x на системе Linux®. Целевой средой развертывания была BigInsights Enterprise Edition 2.0.

Плагин BigInsights Eclipse содержит Task Launcher (средство запуска задач) и интерактивную справку, которые помогут вам в процессе разработки пользовательских экстракторов текста и публикации их в качестве приложений на кластере BigInsights. Чтобы руководство по разработке экстракторов текста было полным, мы приведем здесь несколько ключевых шагов, хотя это выходит за рамки данной статьи. Дополнительные сведения можно найти в информационном центре BigInsights.

Основные шаги по разработке и тестированию экстракторов текста:

  1. Создайте BigInsights-проект.
  2. Импортируйте и идентифицируйте данные для тестирования. Файл WatsonNewsBlogsData.json содержит несколько сотен записей и использует JSON-формат array data. Для тестирования в нашей среде Eclipse мы использовали функцию экспорта, предоставляемую BigSheets, чтобы экспортировать в CSV-файл 50 записей, содержащих поля ThreadId и TextHtml. Затем мы запустили Jaql-сценарий для преобразования этого файла в файл с разделителями, поддерживаемый инструментами BigInsights Eclipse. Наконец, мы определили этот .del-файл как коллекцию входных документов для Eclipse-инструментов анализа текста, указав в качестве языка коллекции английский язык. (Поддерживаются также другие форматы документов и другие языки.)
  3. Создайте необходимые артефакты анализа текста в соответствии с требованиями вашего приложения. Это могут быть AQL-модули, AQL-сценарии, пользовательские словари и т.д. Чуть позже мы рассмотрим часть AQL-сценария, где определяется простой экстрактор.
  4. Протестируйте свой код с примерами документов, содержащимися в коллекции входных данных, импортированных вами в Eclipse. Используйте встроенные функции (например, панели Annotation Explore и Error Log), чтобы проверить результаты теста.

На рисунке 2 показана среда Eclipse после тестирования пользовательского экстрактора. Центральная панель содержит средство запуска задач Task Launcher, которое можно использовать для вызова мастеров, помогающих при разработке. Нижняя панель содержит проводник Annotation Explorer, а в правой панели отображается журнал ошибок Error Log. Слева расположен проводник Project Explorer, который отображает содержимое проекта.

Рисунок 2. Основанная на Eclipse среда разработки средств анализа текста для платформы BigInsights
Основанная на Eclipse среда разработки средств анализа текста для платформы BigInsights

Выше упоминалось, что программисты пишут правила и условия извлечения сути текста на языке AQL. Построитель регулярных выражений и инструменты обнаружения шаблонов с плагином BigInsights помогают программистам создавать сложные комплексные AQL-сценарии для удовлетворения потребностей их приложений. Кроме того, для совершенствования в AQL программисты могут использовать интерактивное учебное руководство и справочные материалы. Хотя описание языка AQL выходит за рамки данной статьи, листинг 1 содержит отрывок простого экстрактора для определения сообщений социальных медиа, в которых упоминается наш бренд Watson в контексте медицины и здравоохранения.

Листинг 1. Часть экстрактора текста для выявления бренда IBM Watson
-- Раздел 1. Настройка и предварительная обработка.  
-- Объявление модуля и настройка схемы документа (не показано) 
 . . . 
-- Удаление HTML-тегов из входных документов перед анализом.  
detag Document.text as NoTagDocument 
detect content_type always; 

-- Раздел 2. Создание простого словаря Watson 
-- и поиск соответствий в документах.
--
-- Создайте простой словарь для Watson.
create dictionary AllWatsonDict as ('Watson');

-- Создайте представления всех документов, соответствующих словарю Watson.
create view AllWatson as
extract 
   R.text as text,
   dictionary 'AllWatsonDict' on R.text as match
from NoTagDocument R;

-- Поскольку один документ может содержать несколько ссылок, которые
-- соответствуют словарю Watson, необходимо объединить результаты. 
-- Иными словами, мы хотим иметь не более одной возвращаемой записи для 
-- каждого документа, содержащего одно или несколько соответствий словарю Watson. 
create view Watson as
select R.* 
from AllWatson R
consolidate on R.text using 'ContainedWithin';

-- Раздел 3. Создание словаря терминов из области медицины и здравоохранения.
-- Этот словарь можно использовать для последующего сравнения 
-- документов с терминами из словаря Watson.  
-- 
-- Создание простого медицинского словаря
create dictionary Medical as 
('healthcare', 'medicine', 'medical', 'hospital', 'cancer');

-- Определение Watson-документов, относящихся к области медицины.   
create view WatsonMed as
extract
   R.text as text,
   dictionary 'Medical' on R.text as match
from Watson R;

-- Объединение результатов 
create view WatsonMedFinal as
select R.* 
from WatsonMed R
consolidate on R.text using 'ContainedWithin';

-- Представление выходных данных.  
-- Это представление позднее будет преобразовано в функцию BigSheets.  
output view WatsonMedFinal;

Рассмотрим кратко код этого примера. В разделе 1 листинга 1 выполняется необходимая настройка и предварительная обработка. Например, оператор detag удаляет HTML-теги из входных документов, чтоб их можно было обработать как простой текст.

В разделе 2 определяется встроенный словарь AllWatsonDict для нашего бренда. Поскольку наш бренд известен просто как Watson, в словаре нет ссылок на псевдонимы, аббревиатуры или прозвища. Поэтому словарь содержит только одну запись. Представление AllWatson запускает механизм анализа текста для поиска документов (с удаленными тегами), которые содержат одно и более соответствий терминам словаря AllWatsonDict. (В некоторых социальных медиа термины IBM и Watson присутствуют в полях темы или автора, а не в самом сообщении. Например, популярный IBM-блоггер по имени Todd "Turbo" Watson публикует сообщения по широкому кругу вопросов. Поэтому наш код должен исключить сообщения, в которых Watson не упоминается в поле TextHtml.) Конечно, некоторые записи содержат несколько ссылок на Watson, поэтому мы хотим сохранить только один экземпляр таких записей, и представление Watson объединяет их.

В разделе 3 выполняется работа, аналогичная разделу 2. В частности, здесь определяется медицинский словарь и отфильтровываются отобранные документы, ссылающиеся на Watson в контексте содержимого этого словаря. Опять же, если какой-либо отобранный документ содержит несколько ссылок на медицинские термины, необходимо возвратить только один экземпляр этого документа, поэтому в коде присутствует еще один оператор consolidate on. Наконец, данный сценарий посредством представления под именем WatsonMedFinalexternalizes облекает выходные данные процесса извлечения в конкретную форму.

Чуть позже вы узнаете, как опубликовать этот экстрактор текста на кластере BigInsights и вызвать его как функцию BigSheets.


Шаг 3. Публикация и развертывание ПО

Если вы удовлетворены результатами работы вашего экстрактора, значит, он готов к публикации в каталоге приложений на кластере BigInsights. В инструментарий Eclipse входит мастер BigInsights Application Publish, который поможет вам на каждом этапе процесса. Например, чтобы опубликовать простой экстрактор текста, содержащий AQL-код листинга 1, мы использовали мастер со следующими входными данными:

  1. Соединение с сервером BigInsights.
  2. Имя нашего приложения (WatsonTextDemo).
  3. Тип приложения (text analytics).
  4. Имя AQL-модуля анализа текста (MyDemo) и имя AQL-представления выходных данных (WatsonMedFinal).
  5. Уникальный идентификатор BigSheets для экстрактора (WatsonTextDemo).

Мы приняли значения по умолчанию для других входных параметров и опубликовали приложение на кластере BigInsights, указанном в соединении с сервером. На этом работа в Eclipse была закончена. Заключительные шаги (развертывание приложения и запуск его как функции BigSheets) выполняются в Web-консоли BigInsights.

Для развертывания опубликованного приложения мы запустили Web-консоль BigInsights и вошли в систему с правами администратора. На вкладке Applications мы нажали кнопку Manage для определения и развертывания нашего приложения. На рисунке 3 изображено представление для управления каталогом приложений, которое показывает, что на кластере развернуто приложение WatsonTextDemo.

Рисунок 3. Управление и развертывание приложений из каталога Web-приложений BigInsights
Управление и развертывание приложений из каталога Web-приложений BigInsights

Шаг 4. Запуск функции анализа текста в BigSheets

После разработки, тестирования и развертывания пользовательского экстрактора текста можно запустить его с данными, хранящимися на целевом кластере BigInsights. Ранее упоминалось, что BigInsights позволяет запускать экстракторы текстов при помощи Java API, Jaql и BigSheets. Запуск посредством BigSheets не требует дополнительного написания кода или сценариев. Эту процедуру, которую мы кратко опишем, может выполнить любой бизнес-аналитик.

Чтобы запустить пример экстрактора текста для собранной в социальных медиа информации об IBM и Watson, выполните несколько простых шагов:

  1. Используя стандартную процедуру BigSheets, создайте в BigSheets одну или несколько главных рабочих книг на основе данных из социальных медиа, хранящихся в распределенной файловой системе (дополнительную информацию см. в разделе Ресурсы).
  2. Создайте дочернюю книгу на основе главной книги (книг), созданной на предыдущем шаге. В этой дочерней книге создайте новый лист для вызова функции – а именно пользовательской функции анализа текста, которая только что была развернута (эту функцию можно найти в меню Categories по типу приложения (text analytics) или по любому другому описателю, который был указан при публикации приложения). При появлении запроса укажите соответствующие столбцы в качестве входных данных для функции. Наша функция запрашивает только один входной столбец, поэтому в качестве входных данных мы указали столбец TextHtml дочерней книги. При необходимости используйте вкладку Carry over в меню функции, чтобы указать столбцы, которые нужно сохранить в листе результатов (например, столбцы ThreadId, TextHtml, Type и Url).
  3. Сохраните и запустите дочернюю книгу. Результаты будут содержать только те записи, которые соответствуют логике функции анализа текста. В нашем случае это означает, что будут сохранены записи, содержащие сообщения в социальных медиа, где упоминается Watson в контексте медицины или здравоохранения.
  4. При необходимости используйте BigSheets-функцию COMPLEMENT, чтобы создать отдельную книгу для сообщений, которые были отвергнуты вашей функцией (где нет одновременного упоминания Watson и терминов из области медицины или здравоохранения).

Наверное, вам будет интересно узнать, какую информацию можно почерпнуть с помощью рассмотренного экстрактора. На рисунке 4 показано, как этот экстрактор позволил нам определить десятку блогов, чаще всего упоминавших IBM Watson в медицинском контексте за период с 1 января по 1 июня 2012 года. (Результаты были ограничены англоязычными сайтами). Интересно, что находящийся на первом месте Forbes.com не является сайтом, поддерживаемым IBM.

Рисунок 4. Результаты применения пользовательского экстрактора текста для фильтрации информации блогов в BigSheets
Результаты применения пользовательского экстрактора текста для фильтрации информации блогов в BigSheets

Также можно определить, какие англоязычные новостные сайты чаще всего упоминали IBM Watson в медицинском контексте за тот же период. Результаты показаны на рисунке 5.

Рисунок 5. Исследование упоминания в новостях об IBM Watson в медицинском контексте
IИсследование упоминания в новостях об IBM Watson в медицинском контексте

Хотя наш пример экстрактора, конечно же, тривиален, он позволил нам выявить блоги и новостные сайты, которые достойны дополнительных усилий по расширению связей с общественностью относительно проекта IBM Watson. Представьте себе возможности более сложных экстракторов текстов для нашего бренда. BigInsights включает в себя ускоритель IBM для анализа социальных данных (Social Data Analytics – SDA) со встроенными артефактами, помогающими компаниям создавать профили клиентов и изучать мнения, информационный фон и намерения совершить покупку относительно определенных брендов или товаров. Многие из этих артефактов основаны на возможностях анализа текста, которые мы рассмотрели ранее.


Несколько слов о языке AQL

Хотя наш AQL-пример достаточно прост, в нем представлены некоторые важные элементы языка. Взгляните еще раз на листинг 1 и обратите внимание на использование операторов create view, extract и select. Это важные элементы каждого экстрактора.

AQL-представления похожи на представления в реляционных базах данных. Каждое AQL-представление имеет имя, состоит из строк и столбцов, а столбцы имеют тип. Кроме того, AQL-представление материализуется только при помощи оператора output view. Все AQL-операторы работают с представлениями, в том числе со специальным представлением Document, которое во время исполнения сопоставляется за один раз ровно с одним исходным документом вашей коллекции. При использовании исходных документов, которые соответствуют схеме по умолчанию, вы будете работать со столбцом text в представлении Document. (Вы также можете указать схему документа в AQL-коде, если работаете с исходными документами в формате JSON и обрабатываете исходные данные в разных столбцах.)

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

Наш AQL-код, используя выражения extract со словарями, извлекал два основных элемента – бренд Watson и несколько медицинских терминов. Это общепринятый подход; на первом этапе большинство экстракторов при помощи выражений extract создает представления, определяющие основные низкоуровневые элементы. В нашем случае мы имели дело с ограниченным числом четко определенных строк, поэтому могли использовать словари. Иногда нужно извлекать изменяющиеся элементы, такие как даты, время или номера телефонов. В этом случае вместо словаря используется регулярное выражение.

AQL-выражения выбора состоят из ключевых слов select и from, а также операторов where, order by и group by. AQL-выражения select обычно используются для применения фильтров и объединения извлеченных элементов.

Важной задачей любого приложения, предназначенного для анализа текста, является помещение основных элементов в контекст. В полном наборе исходных документов, посвященных Watson, можно найти имена людей (например, Thomas J. Watson или Bubba Watson) или ссылки на подразделение IBM Research (например, Watson Research Center). Можно также найти экземпляры о Watson, где контекст подтверждает, что мы имеем дело с правильным Watson – IBM Watson или компьютерной системой Watson. Определение контекста основных элементов и взаимосвязей между ними является важным шагом в извлечении информации с помощью AQL-приложения.

Язык позволяет поместить элементы в контекст двумя способами. Во-первых, можно использовать выражения extract с последовательными шаблонами. Последовательные шаблоны работают аналогично регулярным выражениям, однако вместо извлечения одного основного элемента (такого как дата или время) последовательные шаблоны позволяют объединить основные и другие элементы в шаблон, поместив основные элементы в контекст. Например, нужно извлечь документы с терминами Watson, business partner и application. Для этого можно сначала извлечь каждый основной элемент, а затем использовать шаблон для поиска экземпляров, где все три основных элемента встречаются одновременно в определенном порядке. Шаблоны похожи на регулярные выражения; они дают возможность добавлять элементы, делать их необязательными и игнорировать нерелевантные признаки, чтобы можно было находить, не зная всего шаблона, широкий спектр экземпляров документов, где одновременно встречаются три интересующих нас элемента. В подобных ситуациях полезно разделять или блокировать документы перед поиском шаблонов. Существуют выражения extract, позволяющие находить основные элементы, встречающиеся одновременно в одном предложении или абзаце.

При помощи второго способа можно оценить контекст основных элементов по правому или левому контексту элемента. Используя некоторые функции AQL и тип данных span (диапазон), можно обратиться к тексту слева от элемента (левый контекст) и справа от элемента (правый контекст). Если найден элемент Watson с левым контекстом IBM и правым контекстом computer или system, значит, мы нашли нужную нам строгую ссылку на Watson. Если правый контекст содержит слова Research Center, мы, вероятно, получили ошибочный результат, который нужно отбросить.

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

Справочные материалы по AQL можно найти в информационных центрах BigInsights и Streams. Мы кратко рассмотрели наиболее важные элементы языка, но вы можете посетить информационный центр, чтобы лучше понять синтаксис и больше узнать о дополнительных параметрах выражения extract, таких как части речи, оператор detag (при помощи которого мы удалили из исходных документов нашего примера XML- и HTML-теги) или использование таблиц для пополнения извлеченной информации.

AQL позволяет создавать и повторно использовать модули анализа текста. Модуль может экспортировать представления, которые затем можно импортировать в другой модуль. Словари можно встраивать в код или хранить в виде простого текстового файла (по одной записи в строке). Если вам нужно заменить содержимое словаря во время исполнения без повторной компиляции AQL, можно использовать внешний словарь. AQL компилируется до развертывания. Оптимизирующий компилятор, который создает исполняемый файл .tam, входит в состав среды разработки.


Заключение

В статье приведен краткий обзор разработки, тестирования, публикации, развертывания и применения пользовательского ПО для анализа текста на платформе BigInsights. Основанные на Eclipse мастера помогают создавать сценарии и другие артефакты для извлечения содержимого из неструктурированных данных, таких как сообщения в социальных медиа. Создаваемые экстракторы текста можно протестировать в Eclipse на примере данных, изучить результаты и опубликовать приложение на кластере BigInsights, чтобы его могли вызывать авторизованные пользователи. Такими пользователями могут быть другие разработчики приложений или бизнес-аналитики, работающие с BigSheets, электронной таблицей для исследования и визуализации данных большого объема.

Благодарности

Авторы благодарят Сунила Дравида (Sunil Dravida), Маноджу Кумара (Manoj Kumar) и Сударшана Тхитте (Sudarshan Thitte) за их вклад в статью и ее рецензирование.


Загрузка

ОписаниеИмяРазмер
Пример данныхWatsonNewsBlogsData.zip270 КБ

Ресурсы

Научиться

Получить продукты и технологии

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Information Management
ArticleID=948858
ArticleTitle=Анализ текстов социальных медиа при помощи InfoSphere BigInsights
publish-date=10182013