М. Коробов "Машинное обучение на фронте и в тылу", DUMP-2014

28
Машинное обучение в ScrapingHub Михаил Коробов, DUMP 2014

description

 

Transcript of М. Коробов "Машинное обучение на фронте и в тылу", DUMP-2014

Page 1: М. Коробов "Машинное обучение на фронте и в тылу", DUMP-2014

Машинное обучение в ScrapingHub

Михаил Коробов, DUMP 2014

Page 2: М. Коробов "Машинное обучение на фронте и в тылу", DUMP-2014
Page 3: М. Коробов "Машинное обучение на фронте и в тылу", DUMP-2014

Задачи

• Скачать веб-странички;

• из HTML вытащить информацию.

Page 4: М. Коробов "Машинное обучение на фронте и в тылу", DUMP-2014

Примеры• цены и продукты

• названия и контакты организаций

• категории товаров

• …

• места дислокации батальонов в WWI

• энергопотребление вентиляторов

Page 5: М. Коробов "Машинное обучение на фронте и в тылу", DUMP-2014

Единого подхода нет

Page 6: М. Коробов "Машинное обучение на фронте и в тылу", DUMP-2014

Подходы

• Правила (xpath, css, regex) - Scrapy

• …

Page 7: М. Коробов "Машинное обучение на фронте и в тылу", DUMP-2014

Сложные случаи

• 100000 сайтов, все разные

• сайт один, но информация - в обычном тексте

• объединение информации из разных источников

• хочется «накликать» мышкой, что извлекать, и не писать код

Page 8: М. Коробов "Машинное обучение на фронте и в тылу", DUMP-2014

Примеры проектов

Page 9: М. Коробов "Машинное обучение на фронте и в тылу", DUMP-2014

100k сайтов; узнать, какие веб-студии их

делали

Page 10: М. Коробов "Машинное обучение на фронте и в тылу", DUMP-2014

Классификация ссылок

• текст ссылки

• текст в title

• текст до ссылки

• target=_blank

• …

Page 11: М. Коробов "Машинное обучение на фронте и в тылу", DUMP-2014

Учет нескольких факторов

• AND: 15*x1 + 15*x2 > 20

• OR: 15*x1 + 15*x2 > 10

!

• z = sum(wi*xi)

• P = f(z)

Page 12: М. Коробов "Машинное обучение на фронте и в тылу", DUMP-2014

Подбор правил (весов)

• вручную

• автоматически: SVM (без ядра), Logistic Regression

Page 13: М. Коробов "Машинное обучение на фронте и в тылу", DUMP-2014

Подход

• для каждой ссылки выделить признаки

• перевести признаки в цифры (получить вектор x)

• для каждой ссылки передать в библиотеку x и метку (ссылка на веб-студию: да/нет)

• библиотека подберет веса

Page 14: М. Коробов "Машинное обучение на фронте и в тылу", DUMP-2014

Подход (предсказание)

• для каждой ссылки выделить признаки

• перевести признаки в цифры (получить вектор x)

• для каждой ссылки передать в библиотеку x

• библиотека вернет метку (веб-студия/нет)

Page 15: М. Коробов "Машинное обучение на фронте и в тылу", DUMP-2014

Тонкости

• Переобучение

• Регуляризация

• Подбор параметров классификатора

• Кросс-валидация

Page 16: М. Коробов "Машинное обучение на фронте и в тылу", DUMP-2014
Page 17: М. Коробов "Машинное обучение на фронте и в тылу", DUMP-2014

Поиск именованных сущностей (NER) есть 100k сайтов, нужно узнать:

• название организации

• ее адреса

• телефоны

• факсы

• время работы

• URL-ы форм обратной связи

• размещенные вакансии

• способы подачи заявки на работу

• …

Page 18: М. Коробов "Машинное обучение на фронте и в тылу", DUMP-2014

US Address<ORG> <STREET> <CITY> <ZIPCODE> <COUNTRY>

tel: <TEL>, fax: <FAX>

Page 19: М. Коробов "Машинное обучение на фронте и в тылу", DUMP-2014

Правила - сложные и работают не очень хорошо

• части необязательны

• встречаются в разных местах страницы

• сокращения

• перестановки

• названия организаций не проверишь по словарю

• …

Page 20: М. Коробов "Машинное обучение на фронте и в тылу", DUMP-2014

Название организации

• подстрока веб-страницы

• несколько токенов, идущих подряд

Page 21: М. Коробов "Машинное обучение на фронте и в тылу", DUMP-2014

Contact:O Us:O ScrapingHub:B-ORG

Inc.:I-ORG Copyright:O 2014:O

BIO-кодирование

Page 22: М. Коробов "Машинное обучение на фронте и в тылу", DUMP-2014

O I-ORG B-ORG … I-ORG I-STREET B-CITY

Page 23: М. Коробов "Машинное обучение на фронте и в тылу", DUMP-2014

CRF

• обычно 1 порядка

• максимизирует вероятность всей цепочки, а не тегов для отдельных токенов

• реализации: Wapiti, CRFsuite

Page 24: М. Коробов "Машинное обучение на фронте и в тылу", DUMP-2014

Подход• Выделяем из HTML текст

• разбиваем его на токены

• тренировочные данные: каждому токену сопоставляем тег в BIO кодировке

• для каждого токена определяем характерные признаки

• передаем все в библиотеку для тренировки

Page 25: М. Коробов "Машинное обучение на фронте и в тылу", DUMP-2014

Примеры признаков (фич)• сам токен

• предыдущий токен

• с заглавной буквы?

• по регекспу похож на телефон

• часть названия города и GeoNames (начало, середина?)

• HTML-элемент, в котором лежит токен

• первый или последний токен в HTML элементе?

• word2vec

Page 26: М. Коробов "Машинное обучение на фронте и в тылу", DUMP-2014

Разметка тренировочных данных

• WebAnnotator (https://addons.mozilla.org/en-US/firefox/addon/webannotator/)

• GATE (https://gate.ac.uk/)

Page 27: М. Коробов "Машинное обучение на фронте и в тылу", DUMP-2014

WebStruct github.com/scrapinghub/webstruct• загрузка данных

• токенизация с сохранением информации о позиции в HTML

• конвертация в BIO и обратно

• интерфейсы к CRF

• работа с GeoNames

• метрики

• группировка сущностей

• …

Page 28: М. Коробов "Машинное обучение на фронте и в тылу", DUMP-2014

Вопросы?https://github.com/kmike