Post on 26-Jan-2015
description
Машинное обучение в ScrapingHub
Михаил Коробов, DUMP 2014
Задачи
• Скачать веб-странички;
• из HTML вытащить информацию.
Примеры• цены и продукты
• названия и контакты организаций
• категории товаров
• …
• места дислокации батальонов в WWI
• энергопотребление вентиляторов
Единого подхода нет
Подходы
• Правила (xpath, css, regex) - Scrapy
• …
Сложные случаи
• 100000 сайтов, все разные
• сайт один, но информация - в обычном тексте
• объединение информации из разных источников
• хочется «накликать» мышкой, что извлекать, и не писать код
Примеры проектов
100k сайтов; узнать, какие веб-студии их
делали
Классификация ссылок
• текст ссылки
• текст в title
• текст до ссылки
• target=_blank
• …
Учет нескольких факторов
• AND: 15*x1 + 15*x2 > 20
• OR: 15*x1 + 15*x2 > 10
!
• z = sum(wi*xi)
• P = f(z)
Подбор правил (весов)
• вручную
• автоматически: SVM (без ядра), Logistic Regression
Подход
• для каждой ссылки выделить признаки
• перевести признаки в цифры (получить вектор x)
• для каждой ссылки передать в библиотеку x и метку (ссылка на веб-студию: да/нет)
• библиотека подберет веса
Подход (предсказание)
• для каждой ссылки выделить признаки
• перевести признаки в цифры (получить вектор x)
• для каждой ссылки передать в библиотеку x
• библиотека вернет метку (веб-студия/нет)
Тонкости
• Переобучение
• Регуляризация
• Подбор параметров классификатора
• Кросс-валидация
Поиск именованных сущностей (NER) есть 100k сайтов, нужно узнать:
• название организации
• ее адреса
• телефоны
• факсы
• время работы
• URL-ы форм обратной связи
• размещенные вакансии
• способы подачи заявки на работу
• …
US Address<ORG> <STREET> <CITY> <ZIPCODE> <COUNTRY>
tel: <TEL>, fax: <FAX>
Правила - сложные и работают не очень хорошо
• части необязательны
• встречаются в разных местах страницы
• сокращения
• перестановки
• названия организаций не проверишь по словарю
• …
Название организации
• подстрока веб-страницы
• несколько токенов, идущих подряд
Contact:O Us:O ScrapingHub:B-ORG
Inc.:I-ORG Copyright:O 2014:O
BIO-кодирование
O I-ORG B-ORG … I-ORG I-STREET B-CITY
CRF
• обычно 1 порядка
• максимизирует вероятность всей цепочки, а не тегов для отдельных токенов
• реализации: Wapiti, CRFsuite
Подход• Выделяем из HTML текст
• разбиваем его на токены
• тренировочные данные: каждому токену сопоставляем тег в BIO кодировке
• для каждого токена определяем характерные признаки
• передаем все в библиотеку для тренировки
Примеры признаков (фич)• сам токен
• предыдущий токен
• с заглавной буквы?
• по регекспу похож на телефон
• часть названия города и GeoNames (начало, середина?)
• HTML-элемент, в котором лежит токен
• первый или последний токен в HTML элементе?
• word2vec
Разметка тренировочных данных
• WebAnnotator (https://addons.mozilla.org/en-US/firefox/addon/webannotator/)
• GATE (https://gate.ac.uk/)
WebStruct github.com/scrapinghub/webstruct• загрузка данных
• токенизация с сохранением информации о позиции в HTML
• конвертация в BIO и обратно
• интерфейсы к CRF
• работа с GeoNames
• метрики
• группировка сущностей
• …