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

Комментарии (0)

© Habrahabr.ru