Смисловий аналіз серед великих даних

Смисловий аналіз

Робота з великими даними

Щоб збирати дані в різних форматах (структурованих, напівструктурованих або неструктурованих) з безлічі джерел, необхідно налаштувати кластер Hadoop і файлову систему Hadoop Distributed File System (HDFS) для зберігання даних. HDFS пропонує гнучкі можливості керування великими даними:

  • Деякі з даних можна переміщувати в існуючу реляційну СУБД (наприклад, Oracle або MySQL), щоб використовувати існуючі інструменти для бізнес-аналізу та формування звітів.
  • У HDFS можна зберігати дані для майбутнього аналізу, наприклад для порівняння старих даних з новими, проводячи такі тести, як ANOVA.T.
  • Можна відкидати дані, якщо потрібний лише аналіз даних у точці впливу.

Щоб дізнатися більше про те, як налаштовувати кластер Hadoop, переміщувати дані в HDFS та аналізувати їх у середовищі Hadoop, прочитайте мою статтю developerWorks Інтеграція Hadoop з існуючою реляційною СУБД.

Вилучення даних та їх збереження в HDFS

Ефективний смисловий аналіз передбачає використання даних із безлічі джерел. У цій статті описано вилучення даних із таких джерел, як:

  • стрічка Twitter
  • RSS-стрічка
  • мобільний додаток.

Крім того, пояснюється, як зберігати дані з різних джерел у файловій системі HDFS у кластері Hadoop.

Вилучення даних зі стрічки Twitter

Дані зі стрічки Twitter можна вибирати за допомогою R або Jaql. Оскільки інструмент Jaql призначений для обробки даних у форматі JSON (а це формат даних твітів за промовчанням), застосовувати Jaql зручніше. Причиною вибору R може лише наявність навичок використання цієї мови.

Вилучення даних з Twitter з використанням Jaql

Після автентифікації програми можна використовувати API-інтерфейс Twitter для вибірки твітів.

Замініть державнуопис на назву аналізованої теми обговорення. Твіти можна зчитувати в змінну, використовуючи наступний код:

Після запуску наведеного сценарію Jaql буде обрано твіти, що стосуються обраної теми обговорення. Твіти повертаються у форматі JSON.

Якщо потрібно розуміти масштаб обговорення теми з урахуванням місцезнаходження, можна використовувати для вибірки твітів наступний фрагмент коду:

Потім можна зберегти цю інформацію HDFS з використанням наступного фрагмента коду:

де list_of_comma_seperated_json_fields - це наступні поля через кому: location , from_user_id_str і created_at .

Таким чином, повний сценарій Jaql, який можна запустити потоком Oozie, може виглядати так:

Метод transform очищає дані, а метод write зберігає дані HDFS. Для роботи з потоковими даними (або даними в русі) необхідно інтегрувати цей сценарій з Flume ще одним інструментом для роботи з великими даними в екосистемі Apache Hadoop. (Щоб дізнатися більше про Flume, прочитайте статтю developerWorks Розгортання веб-сервісів, що масштабуються, та їх підтримка за допомогою Flume.)

Вилучення даних з Twitter з використанням R

Для вилучення твітів з використанням R необхідно встановити кілька пакетів. Це можна зробити в RStudio, але в цьому прикладі демонструється використання консолі R.

На системі під керуванням Ubuntu виконайте такі дії:

  1. Встановіть пакети:
  2. Відкрийте консоль R і виконайте такі команди, щоб отримати доступ до Twitter:
  3. Завантажте у робочепростір R наступні бібліотеки:

Тепер для аутентифікації на Twitter можна використовувати наступний сценарій R:

Потім для вибірки твітів можна використовувати наступний фрагмент коду:

де keyWord – це аналізований предмет обговорення, а last_date_pulled – це дата останньої вибірки твітів.

Якщо потрібна потокова доставка даних Twitter з автоматичним вилученням даних через певні інтервали часу, замініть попередній фрагмент коду наступним:

Для очищення даних можна використовувати наступний сценарій R:

І нарешті, для збереження очищених даних HDFS можна використовувати наступний фрагмент коду:

Вилучення даних із RSS-стрічок

Ми також хочемо збирати особисті думки та погляди з новинних статей. Для отримання даних із RSS-стрічок я пропоную використовувати поєднання Java та Rome. Rome — це Java-бібліотека, яка використовується для отримання доступу до стрічки новин на web-сайтах та їх використання.

Для визначення стрічки новин, яку слід використовувати, необхідно застосовувати будь-який метод ранжування сторінок. Цей метод використовується в алгоритмах пошуку та визначає значущість елемента виходячи з кількості згадок та популярності. Основний принцип полягає в тому, що статті з великою кількістю відвідувань або згадок на зовнішніх сайтах мають вищий пріоритет, і тому з'являються вище в результатах пошуку.

Наступний Java-код ідентифікує стрічку новин і використовує ранжування сторінок для визначення значущості для наших даних:

Потім можна використовувати наведений нижче фрагмент коду для збереження даних у файлі HDFS, створений з використанням даних з Twitter. Для додавання даних у цей файл HDFS необхідно змінити значення властивостіdfs.support.append у файлі hdfs-site.xml , оскільки за промовчанням HDFS не дозволяє додавати дані до файлу.

Вилучення даних з мобільного додатка

Дані з Twitter та RSS-стрічок можна доповнити даними з мобільних програм, що містять особисті думки та погляди. У нашому прикладі передбачається, що ви створили простий мобільний додаток, який встановлюється на мобільні пристрої, дозволяючи користувачам висловлювати свою думку про державні політики та пов'язані теми. J2ME-програму можна розмістити на WAP-сервері, звідки мобільні пристрої (навіть такі старі, як Nokia 3310) можуть завантажити програму та встановити її. Інформація, що надається користувачами, відправляється в реляційну СУБД і зберігається для майбутнього аналізу.

Для переміщення даних із сервера реляційної СУБД кластером Hadoop можна використовувати інструмент Sqoop. Виконайте наступний сценарій sqoop у кластері Hadoop:

Прапор --append означає, що Sqoop додасть імпортовані дані до вже наявного набору даних, отриманих раніше з інших джерел, як це зазначено прапором --target-dir .

Об'єднання зібраних даних в одне джерело

Ми зібрали дані з Twitter (з використанням Jaql або R), з RSS-стрічок (з використанням Java) та з мобільного додатка (з використанням Sqoop), записавши ці дані в один HDFS-файл. Можна автоматизувати ці сценарії за допомогою механізму потоку робіт Oozie та задати виконання команд через певні інтервали або за тригерною подією. Для отримання додаткової інформації про налаштування Sqoop та Oozie прочитайте мою статтю developerWorks Інтеграція Hadoop із існуючою реляційною СУБД.

Смисловий аналіз комбінованих даних

Об'єднання даних дозволяє проводити смисловий аналіз із використаннямодного джерела даних, що забезпечує однаковість, узгодженість та точність аналізу. Для виконання такого аналізу можна використовувати R, Jaql, Pig чи Hive. Pig і Hive – це мови із синтаксисом, схожим на SQL, який виконується на платформі Hadoop. У цьому прикладі для аналізу вилучених даних я вирішив використовувати R, оскільки R має розвинені вбудовані засоби моделювання та бібліотеки для створення графічних уявлень, такі як ggplot2.

Наступний код зіставляє слова в отриманих даних із нашим списком слів для отримання кількості позитивних та негативних слів. Різниця в загальній кількості позитивних і негативних слів дозволяє оцінити, наскільки позитивними або негативними є наші дані щодо аналізованої теми обговорення.

Наступний код представляє алгоритм оцінки емоційного забарвлення:

Потім ми можемо викликати функцію цього алгоритму для оцінки емоційного забарвлення зібраних даних з використанням наступного фрагмента коду:

І нарешті, можна виконати додатковий аналіз, застосовуючи вбудовані R засоби візуалізації, і побудувати оцінну діаграму з використанням наступного фрагмента коду:

Аналіз даних можна продовжити за допомогою BigSheets, компонента платформи IBM InfoSphere BigInsights. Цей інструмент надає користувачам, які не мають технічних навичок, можливість виконувати різні варіанти аналізу та переглядати дані на діаграмах. Для отримання додаткової інформації про використання інструменту BigSheets прочитайте статтю developerWorks BigSheets для простого користувача.

Висновок

Інструменти для роботи з великими даними можуть забезпечити неупереджене розуміння згенерованих даних, отриманих з будь-якого джерела, для прийняття точнихрішень та виконання оптимальних дій. Ви зможете швидко досягти окупності інвестицій, розгорнувши інструменти для роботи з великими даними, описаними в цій статті.