Внутренние Проекты - achugr/GoodsReview GitHub Wiki

Проект №1: извлечение тезисов из комментария

Цель

Достать из комментария его суть(тезисы)

тезис - связка "объект - свойство объекта", например "клавиатура удобная", "ноутбук шустрый"

Базовая задача

Доставать из комментария связку "существительное-прилагательное" следующим образом:

  1. создаем словарь "объектов" для каждой категории товаров(объект, это, например "клавиатура", "ноутбук"), при этом в словаре учитываются синонимы

  2. проходим по комментариям, ищем слова из словаря объектов

  3. найдя "словарное" слово, ищем рядом стоящее прилагательное (можно составить словарь прилагательных-свойств объектов данной категории, а можно по морфологическому признаку их искать)

  4. вытаскиваем такую пару, считая ее тезисом

Апгрейд базовой задачи

  1. сравнение со словарем с учетом edit distance, поскольку словарь не полон (тут еще нужно думать, чтобы это не отнимало кучу времени)
  2. можно попробовать на тестовом множестве посчитать распределение объектов в тексте комментария, если данные будут адекватны и мы сможем сделать вывод о том, что, например, человек чаще всего пишет не больше тезиса на строку - это ускорит поиск объектов в тексте (тут надо подумать еще)
  3. распределение свойств объекта относительно положения объекта, то есть, например, прилагательное находится в среднем в радиусе 4 слов от существительного
  4. При необходимости улучшить определение морфологических признаков слов
  5. Попробовать сделать добавление слов в словарь объектов на основе схожести с имеющимися там.(нужна проверка человеком) тут можно применить какой-нибудь алгоритм машинного обучения
  6. Интересно сделать разъяснение некоторых тезисов, а то выражения вроде "проц сильный", "вменяемая видяха" могут быть понятны далеко не всем.

Проект №2: определение категории товара

На основе собранных данных о товаре определить, к какой категории он относится

Базовая задача

  • Смотрим url по которому расположен товар, чаще всего он содержит упоминание о категории, поскольку строится на основе карты сайта, которая включает категории
  • Пытаемся по названию определить есть ли такой товар в базе и если есть такой же, или похожий - ставим ту же категорию * * * Если категория не определена, то есть несколько вариантов действий:
  1. Ищем на странице упоминание об одной из категорий, определяем насколько она относится к товару(по расстоянию в тексте)

  2. Смотрим на конфигурацию товара, по определенному алгоритму, вроде некой псевдо-хеш функции как в алгоритме k-grams определяем ближайшую категорию

  3. Извлекаем тезисы из комментариев, ищем похожий по тезисам товар, берем его категорию

  4. Ищем в комментариях слова из словаря "объектов", смотрим что за категория с такими словами

Второй вариант

Интерфейс Category getCategory(Product product, String categoryOnSite);

  • На основе каждой категории строим свойственные ей теги. (Проходим по продуктам из категории)

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

  • Возможно улучшение на основе изменения метода:Category getCategory(List<Product> product, String categoryOnSite);в таком случае мы будем пытаться произвести маппинг между категориями на сайте и в бд.

  • Также в этом методе смогут помочь продукты, собранные ранее с этого сайта.

Проект №3: Machine Learning

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

Базовая задача

  • Бинарная классификация (предлагаю использовать SVM http://habrahabr.ru/blogs/data_mining/105220/, ссылка очень интересная, особенно видео) отзывов на положительный/отрицательный, содержательный/несодержательный, достоверный/недостоверный.
  • Также из интересного, но видимо пока не реализуемого: кластеризация по дискурсам (профильным сообществам) с помощью алгоритма CDC, supervised методы анализа сайтов, нахождение нечетких дубликатов-спама.
  1. Корпус и индексация: ручная разметка (нужны еще люди?), очень много обсуждаемых технических моментов (буквально все! например документ можно представлять не только вектором), выкинуть стоп-слова (причем актуальные для нас), провести корректный стемминг (Видимо алгоритм Портера наше все), уменьшение размерности по необходимости (для этого думаю отработанный метод выделения информационно-значимых слов). Разделение множества на обучающее и тестовое - без изысков. Полезная ссылка на очень интересный блог (скорее правда БрендАналитикам): http://www.algorithmist.ru/2010/12/porter-stemmer-russian.html

  2. Обучение: SVM - наше все (я так думаю сейчас, и так пишут в большинстве статей). Есть еще метод Preceptron+ядро SSK. Также специально заточенная под тексты программа SVM_light: http://svmlight.joachims.org/ и вообще надо будет использовать много других классификаторов, их комбинации и оптимизации. Оценки: полнота, точность, F-мера.

Очень много чего интересного на РОМИПе! http://romip.ru/ В частости, в этом году там Sentiment Analysis и одна из дорожек - отзывы с Яндекс Маркета. Труды их семинара могут оказаться очень полезными.

⚠️ **GitHub.com Fallback** ⚠️