iKnow Review Analyzer (iKRA)

    image

    Intro


    С помощью технологии InterSystems iKnow мы сделали систему оценки отзывов под названием iKnow Reviews Analyzer (iKRA). О прототипе проекта можно прочитать здесь. iKRA анализирует текстовые отзывы пользователей, автоматически выставляя численную оценку предмету исследования. Эти функции могут быть очень кстати, например, на сайтах онлайн-продаж, тематических форумах или сборниках медиа контента. Другими словами, везде, где идет обсуждение сообществом каких-либо вещей.

    Что делает решение?


    iKnow Reviews Analyzer выполняет анализ любой предметной области, будь то сфера онлайн-продаж бытовой техники или же бронирование туристических отелей в жарких странах. Для получения результатов необходимо пройти следующие ключевые шаги:

    • собрать отзывы в интересующей нас предметной области;
    • создать словари – базу слов для расчета;
    • создать область для загрузки и анализа данных;
    • запустить модель на расчет;
    • попить кофе / подождать;
    • посмотреть результаты.

    Пример использования


    Теперь как это выглядит на практике… В качестве примера будем анализировать отзывы по смартфонам. Отберем пять производителей:

    • Apple;
    • HTC;
    • LG;
    • Samsung;
    • Sony.

    Допустим, что у каждого из них нас интересует по две модели смартфонов. Для каждой выбранной модели загрузим по 50 отзывов – в итоге 500. Комментарии возьмем с Яндекс.Маркет:

    image

    Каждый из отзывов разместим в отдельном файле и для удобства используем следующую схему расположения файлов (Рисунок 1):

    image
    Рисунок 1. Иерархия расположения файлов

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

    Для проведения анализа необходимо создать домен iKnow – хранилище неструктурированных данных. Подробно останавливаться на этом не будем, так как данный вопрос подробно описан здесь.

    Когда домен создан и заполнен отзывами, приступим к анализу его содержимого. При выборе смартфона для меня являются критичными следующие параметры:

    • производительность;
    • качество связи;
    • комфортабельность/удобство.

    Для простоты дальнейшего повествования введу следующие понятия:

    • категория – параметр, подлежащий оценке;
    • функциональный (ф) маркер – термин, который характеризует оцениваемый параметр/категорию;
    • функциональный словарь – множество ф-Маркеров;
    • эмоциональный (э) маркер – слово отражающее отношение автора к описываемому предмету;
    • эмоциональный словарь – множество э-Маркеров.

    На основе выбранных характеристик составляем функциональный словарь, где для каждой из указанных категорий отбираем ф-Маркеры – определяющие слова. Например, для категории «производительность» это могут быть: «быстродействие», «процессор», «память», «скорость», «ядро» и так далее. Все ф-Маркеры заносятся в специальный файл. На Рисунке 2 представлен пример категории «Perfomance»/«Производительность»:

    image
    Рисунок 2. ф-Маркеры

    Далее составляем эмоциональный словарь, наполняя его соответствующими э-Маркерами. Весь список здесь не привести, но для наглядности перечислю некоторые из них: «хороший», «удобный», «понравился», «проблемный», «недостаток». э-Маркеры придают позитивный или негативный окрас предложению в тексте. Каждому э-Маркеру будет соответствовать численная оценка. Для простоты используем +1 для положительных, -1 для отрицательных. Все э-Маркеры так же заносятся в специальный файл. На Рисунке 3 представлен пример э-Маркеров:

    image
    Рисунок 3. э-Маркеры

    После того, как словари готовы, можно произвести расчет оценок. Для этого на вкладке «Домены» выбираем нужный и жмем «Выполнить расчет» (Рисунок 4):

    image
    Рисунок 4. Расчет оценок

    Чтобы посмотреть результат, открываем таблицу класса ikra.Dictionary.MarksUnit – который содержит оценки по каждой модели смартфона или обращаемся к классу ikra.Dictionary.MarksReview – который содержит оценки по каждому отдельному отзыву. Информация выводится в портале управления. Выбираем раздел SQL и просматриваем интересующую нас таблицу. На Рисунке 5 приведен пример просмотра таблицы класса ikra.Dictionary.MarksUnit.

    image
    image
    Рисунок 5. Просмотр таблицы ikra.Dictionary.MarksUnit

    С помощью DeepSee посмотрим, что же у нас получилось. Мы создали куб, который использует результаты расчета оценок по категориям и построили график для каждого исследуемого аппарата (Рисунок 6):

    image
    Рисунок 6. График оценок по категориям

    Среди проанализированных данных первые места распределились следующим образом:

    • производительность – HTC ONE;
    • качество связи – HTC ONE;
    • комфортабельность/удобство — Samsung Galaxy S5 SM-G900F.

    А что если надо добавить еще одну категорию?


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

    1. Резервирование большого числа свойств класса;
    2. Использование базы данных.

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

    Второй вариант решает задачу с неопределенным числом категорий и не требует фиксированного количества памяти под хранение каждого экземпляра класса. На основе БД система легко подстраивается под расчет любой предметной области с любым количеством категорий.

    Учитывая преимущества второго варианта, в системе iKRA реализован именно он.

    Добавление новой категории


    «И тут я понял, что мне необходимо оценить еще один параметр смартфона – камеру! (Уж если ловить покемонов, то с удовольствием)»

    Добавить новую категорию не составляет труда, для этого изменим состав функционального словаря и впишем новое название – Camera (Рисунок 7).

    image
    Рисунок 7. Добавление категории Camera

    Определим категорию, добавив ф-Маркеры на соответствующей вкладке (Рисунок 2).
    На вкладке домены выбираем нужный и запускаем расчет (Рисунок 4).
    Дожидаемся окончания и переходим к просмотру (Рисунок 8):

    image
    Рисунок 8. Обновленный график оценок по категориям

    Ура! Мы легко ввели новую категорию и оценили ее. Теперь картина выглядит следующим образом:

    • камера – iPhone 4S
    • производительность – HTC ONE;
    • качество связи – HTC ONE;
    • комфортабельность/удобство — Samsung Galaxy S5 SM-G900F.

    Продолжение следует


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

    » GitHub
    • +13
    • 11,1k
    • 2
    InterSystems 82,82
    Вендор: СУБД Caché, OLAP DeepSee, шина Ensemble
    Поделиться публикацией
    Похожие публикации
    Комментарии 2
    • +2
      Ссылка на гитхаб отдает 404, видимо вы забыли сделать репозиторий публичным…
      • +3
        Все верно, спасибо, что написали.
        Теперь репозиторий открыт для просмотра.

      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

      Самое читаемое