SlideShare a Scribd company logo
Machine Learning в
текстовом анализе
Павел Никулин
Demis Group
Павел Никулин
• В SEO с 2009 года
• Руководитель отдела
аналитики в компании
Demis Group
• Резидент Skolkovo
• Участник соревнований по
Machine Learning на
площадке Kaggle и др.
О чем поговорим
Метрики и алгоритмы
• Поиск значимого текста на документе
• Коммерческость
• Спамность
• Водность
• Неестественность
Анализ Баден-Баден
Инструментарий
Метрики и алгоритмы
Поиск значимого текста на документе
Основная проблема - большой текст в каталоге или в других блоках
Метрики и алгоритмы
Поиск значимого текста на документе
Основная проблема - большой текст в каталоге или в других блоках
Метрики и алгоритмы
Поиск значимого текста на документе
Основная проблема - большой текст в каталоге или в других блоках
Метрики и алгоритмы
Поиск значимого текста на документе
Решение – подобрать нелинейную модель чтобы классифиц��ровать
навигацию, каталог и текст.
Что используем:
• HTML код страницы
Факторы:
• Метрики о данных каждого блока на странице – кол-во слов, кол-
во точек/запятых, категории тегов, кол-во ссылок, и мн. др.
На чем обучаемся:
• Тестовая выборка блоков из документов размеченных вручную
Основные задачи: поиск текста для анализа, и подтверждение
необходимости текста на оптимизируемой странице.
Метрики и алгоритмы
Поиск значимого текста на документе
Решение – подобрать нелинейную модель чтобы классифицировать
навигацию, каталог и текст.
Модель:
• 210 факторов
• Алгоритм Random Forest
• Точность ~97%
После получения предсказания все блоки объединяются в определенные
классы.
Метрики и алгоритмы
Коммерческость запроса и документа
Что используем:
• Заголовок и аннотацию сниппета
• Характеристики хоста (нахождение в Яндекс.Каталоге, геопривязка и пр.)
• Характеристики страницы (комм./некомм. признаки в URL)
Модель:
• Алгоритм1 - логистическая регрессия по мешку слов собранного из корпуса
размеченных сниппетов
• Random Forest из факторов про страницу, хост и фактор Алгоритм1
• Точность ~95%
Модель работает и для документа где вместо аннотации сниппета выступает
значимый текст.
Метрики и алгоритмы
Спамность
Что используем:
• Корпус спамных / хороших текстов размеченных вручную
Модель:
• 24 фактора – кол-во текста, кол-во предложений, кол-во частых / редких
биграмм, униграмм и пр.
• Алгоритм Random Forest
• Точность ~96%
Метрики и алгоритмы
Водность
Что используем:
• Корпус частых биграмм и униграмм выделенных из большого корпуса
сеошных текстов, с поправкой на некоммерцию
Метрика:
• Взвешенное среднее водности всех биграмм и униграмм в тексте
Метрики и алгоритмы
Неестественность
Что используем:
• Корпус частых биграмм граммем (часть речи, время, падеж, число и пр.)
выделенных из большого корпуса запросов ([кирпич москва], [вылет
горящий тур]), с поправкой на некоммерцию
Метрика:
• Средняя неестественность всех биграмм граммем в тексте
Вопрос
Кого настиг Баден-Баден ?
Кого настиг Баден-Баден ?
Анализ Баден-Баден
Анализ Баден-Баден
Первые наблюдения до / после – спамность
Метрика – спамность в выдачах выросла в среднем на 0.021
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
1
4
7
10
13
16
19
22
25
28
31
34
37
40
43
46
49
52
55
58
61
64
67
70
73
76
79
82
85
88
91
94
97
100
ТОП10 до
ТОП20 до
ТОП10 после
ТОП20 после
Анализ Баден-Баден
Первые наблюдения до / после – спамность
И вот почему
В среднем размер текста в выдачах уменьшился в 2.308 раза.
И поскольку наша метрика спамности коррелирует с размером текста
она - увеличилась.
0
500
1000
1500
2000
2500
3000
3500
4000
4500
5000
1 3 5 7 9 11 13 15 17 19 21 23 25 27
Размер текста до
Размер текста после
Анализ Баден-Баден
Анализ упавших - спамность
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71
Среднее ТОП
Упавший документ
Анализ Баден-Баден
Все метрики – среднее ТОП
Анализ Баден-Баден
Все метрики – все документы выдач
Анализ Баден-Баден
В отличии от позапросного, хостовый Баден-Баден
накладывается на весь хост, и не всегда понятно за
какие тексты. Даже не продвигаемая область сайта
вполне может служить поводом для фильтра.
Анализ Баден-Баден
В отличии от позапросного, хостовый Баден-Баден
накладывается на весь хост, и не всегда понятно за
какие тексты. Даже не продвигаемая область сайта
вполне может служить поводом для фильтра.
Поэтому, нужно создать метрику вероятности
наложения фильтра.
Метрики страницы
• Спамность
• Неестественность
• Водность
• Кол-во текста
• Коммерческость
• Уровень вложенности
• Комбинации факторов
• Пр.
Всего 14 факторов
Модель
• Алгоритм - градиентный бустинг посредством XGBoost , оптимизируем
метрику logloss
• Точность ~96.2%
Анализ Баден-Баден
Анализ Баден-Баден
ТОП факторов из модели
• Водность
• Размер текста
• Сумма водности, спамности, неестественности
• Спамность
• Размер текста * неестественность
…
• Коммерческость (последний фактор по значимости)
Кого настиг Баден-Баден ?
Кого настиг Баден-Баден ?
Вероятность Баден-Баден - 0.485 Вероятность Баден-Баден - 0.033
Инструментарий
Что используем мы
• Python 3.5 (Anaconda 3)
• Все семейство алгоритмов в scikit-learn
• Все семейство алгоритмов из gensim
• XGBoost
• LightGBM
• MXNet
• TensorFlow
• GloVe (аналог Word2Vec)
• ОС Linux / Windows
Инструментарий
У вас все может быть по другому!
• Другой язык или инструментарий
• Другие факторы
• Другие выборки
• Другие выводы
• Другие задачи
• …
Пробуйте!
Machine Learning в текстовом анализе
Никулин Павел Demis Group
Спасибо!
Вопросы?
http://www.demis.ru/ E-mail: nps@demis.ru

More Related Content

Никулин Павел. Machine learning для текстового анализа

  • 1. Machine Learning в текстовом анализе Павел Никулин Demis Group
  • 2. Павел Никулин • В SEO с 2009 года • Руководитель отдела аналитики в компании Demis Group • Резидент Skolkovo • Участник соревнований по Machine Learning на площадке Kaggle и др.
  • 3. О чем поговорим Метрики и алгоритмы • Поиск значимого текста на документе • Коммерческость • Спамность • Водность • Неестественность Анализ Баден-Баден Инструментарий
  • 4. Метрики и алгоритмы Поиск значимого текста на документе Основная проблема - большой текст в каталоге или в других блоках
  • 5. Метрики и алгоритмы Поиск значимого текста на документе Основная проблема - большой текст в каталоге или в других блоках
  • 6. Метрики и алгоритмы Поиск значимого текста на документе Основная проблема - большой текст в каталоге или в других блоках
  • 7. Метрики и алгоритмы Поиск значимого текста на документе Решение – подобрать нелинейную модель чтобы классифицировать навигацию, каталог и текст. Что используем: • HTML код страницы Факторы: • Метрики о данных каждого блока на странице – кол-во слов, кол- во точек/запятых, категории тегов, кол-во ссылок, и мн. др. На чем обучаемся: • Тестовая выборка блоков из документов размеченных вручную Основные задачи: поиск текста для анализа, и подтверждение необходимости текста на оптимизируемой странице.
  • 8. Метрики и алгоритмы Поиск значимого текста на документе Решение – подобрать нелинейную модель чтобы классифицировать навигацию, каталог и текст. Модель: • 210 факторов • Алгоритм Random Forest • Точность ~97% После получения предсказания все блоки объединяются в определенные классы.
  • 9. Метрики и алгоритмы Коммерческость запроса и документа Что используем: • Заголовок и аннотацию сниппета • Характеристики хоста (нахождение в Яндекс.Каталоге, геопривязка и пр.) • Характеристики страницы (комм./некомм. признаки в URL) Модель: • Алгоритм1 - логистическая регрессия по мешку слов собранного из корпуса размеченных сниппетов • Random Forest из факторов про страницу, хост и фактор Алгоритм1 • Точность ~95% Модель работает и для документа где вместо аннотации сниппета выступает значимый текст.
  • 10. Метрики и алгоритмы Спамность Что используем: • Корпус спамных / хороших текстов размеченных вручную Модель: • 24 фактора – кол-во текста, кол-во предложений, кол-во частых / редких биграмм, униграмм и пр. • Алгоритм Random Forest • Точность ~96%
  • 11. Метрики и алгоритмы Водность Что используем: • Корпус частых биграмм и униграмм выделенных из большого корпуса сеошных текстов, с поправкой на некоммерцию Метрика: • Взвешенное среднее водности всех биграмм и униграмм в тексте
  • 12. Метрики и алгоритмы Неестественность Что используем: • Корпус частых биграмм граммем (часть речи, время, падеж, число и пр.) выделенных из большого корпуса запросов ([кирпич москва], [вылет горящий тур]), с поправкой на некоммерцию Метрика: • Средняя неестественность всех биграмм граммем в тексте
  • 16. Анализ Баден-Баден Первые наблюдения до / после – спамность Метрика – спамность в выдачах выросла в среднем на 0.021 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55 58 61 64 67 70 73 76 79 82 85 88 91 94 97 100 ТОП10 до ТОП20 до ТОП10 после ТОП20 после
  • 17. Анализ Баден-Баден Первые наблюдения до / после – спамность И вот почему В среднем размер текста в выдачах уменьшился в 2.308 раза. И поскольку наша метрика спамности коррелирует с размером текста она - увеличилась. 0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000 1 3 5 7 9 11 13 15 17 19 21 23 25 27 Размер текста до Размер текста после
  • 18. Анализ Баден-Баден Анализ упавших - спамность 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 Среднее ТОП Упавший документ
  • 20. Анализ Баден-Баден Все метрики – все документы выдач
  • 21. Анализ Баден-Баден В отличии от позапросного, хостовый Баден-Баден накладывается на весь хост, и не всегда понятно за какие тексты. Даже не продвигаемая область сайта вполне может служить поводом для фильтра.
  • 22. Анализ Баден-Баден В отличии от позапросного, хостовый Баден-Баден накладывается на весь хост, и не всегда понятно за какие тексты. Даже не продвигаемая область сайта вполне может служить поводом для фильтра. Поэтому, нужно создать метрику вероятности наложения фильтра.
  • 23. Метрики страницы • Спамность • Неестественность • Водность • Кол-во текста • Коммерческость • Уровень вложенности • Комбинации факторов • Пр. Всего 14 факторов Модель • Алгоритм - градиентный бустинг посредством XGBoost , оптимизируем метрику logloss • Точность ~96.2% Анализ Баден-Баден
  • 24. Анализ Баден-Баден ТОП факторов из модели • Водность • Размер текста • Сумма водности, спамности, неестественности • Спамность • Размер текста * неестественность … • Коммерческость (последний фактор по значимости)
  • 26. Кого настиг Баден-Баден ? Вероятность Баден-Баден - 0.485 Вероятность Баден-Баден - 0.033
  • 27. Инструментарий Что используем мы • Python 3.5 (Anaconda 3) • Все семейство алгоритмов в scikit-learn • Все семейство алгоритмов из gensim • XGBoost • LightGBM • MXNet • TensorFlow • GloVe (аналог Word2Vec) • ОС Linux / Windows
  • 28. Инструментарий У вас все может быть по другому! • Другой язык или инструментарий • Другие факторы • Другие выборки • Другие выводы • Другие задачи • … Пробуйте!
  • 29. Machine Learning в текстовом анализе Никулин Павел Demis Group Спасибо! Вопросы? http://www.demis.ru/ E-mail: nps@demis.ru