Upload
lidia-pivovarova
View
646
Download
0
Embed Size (px)
Citation preview
Построение поиска объявлений
об одинаковых товарах с помощью
opensource-технологий
Александр Кузнецов Grid Dynamics, Саратов
Поиск объявлений об одном и том же товаре
• NEW Haier 10.2" Portable LCD Digital TV with A/V Remote • Haier HLT10 Portable 10.2" Digital LCD TV NIB• NEW Haier HLT10 10'' LCD Television Portable• Sharp AQUOS LC-20SH4U 20'' LCD Television w/ wall mount• Sony Bravia KDL-V32XBR1 LCD 32" QU Mount
Этапы обработки
Выделение брэнда
• NEW Haier 10.2" Portable LCD Digital TV with A/V Remote • Sharp AQUOS LC-20SH4U 20'' LCD Television w/ wall mount• Sony Bravia KDL-V32XBR1 LCD 32" QU Mount
Размер экрана
• NEW Haier 10.2" Portable LCD Digital TV with A/V Remote • Haier HLT10 Portable 10.2" Digital LCD TV NIB• Haier LCD 7in Portable Tv new in the box w/ remote
Объект объявления
• Sony Bravia KDL-V32XBR1 LCD 32" QU Mount • Haier HLT10 Portable 10.2" Digital LCD TV NIB• Sharp AQUOS LC-20SH4U 20'' LCD Television w/ wall mount
Словарь синонимов.Удалить лишние слова, оставить суть. • Mount • TV • TV with mount
Hiden Markov Model для выделения объекта
Обучение Hiden Markov Model
Дан набор последовательностей. Определяются вероятности в модели.
Библиотека для HMM
jahmm Java реализация алгоритмов, относящихся к Hidden Markov Model (HMM). Алгоритмы: Viterbi, Forward-Backward, Baum-Welch http://code.google.com/p/jahmm/
Нахождение объекта объявления
1. Проверить, попадает ли наше объявление в уже размеченные образцы. Такие объявления составляют около 80-90 процентов.
2. Если нет, использовать HMM.
Поиск Lucene
Используется Lucene. Почему?• Free and open source• Написана на Java и перенесена на другие языки • Зрелый проект
Кто использует Lucene?
Lucene
Doug Cutting - создатель Lucene, Hadoop. • Март 2000 - первый публичный релиз на SourceForge. • Сентябрь 2001 - проект присоединяется к Apache
Software Foundation. • Февраль 2005 - становится top-level Apache project.• Июнь 2010 - выпущена последняя стабильная версия
3.0.2.
Логическая структура Lucene
Добавление документа в Lucene
Lucene Analyzer
Обратный индекс
Запросы
title:extreme–subject:sports
title:"junit action"~5
java* java~
Boolean and Term Query
Ранжирование
Модель векторного пространства для ранжирования.Документ и запрос - векторы.
Не все так просто
Boost может быть для: o Documento Fieldo Queryo Term в запросе
Вложенные запросы
Реальная формула
Поиск объявлений
Формирование запроса
Почему не подходит Lucene score
Проблема с отсечением результатов - нужно понять, какие совпадения оставить, а какие убрать. Запрос состоит из нескольких BooleanQuery. Поэтому значение ранга в значительной степени зависит от их количества. Нужно подбирать формулу для каждой комбинации параметров.
Отбор правильных совпадений
Можно написать множество условных выражений, но есть способ лучше - машинное обучение. if(p1.size() == p2.size()){ if(dist(p1.brands() ,p2.brands()) < 0.7){ return false; }}
Для этого нужно сделать обучающую выборку. Около 1000 объявлений будет достаточно для наших целей.
Weka
Weka (Waikato Environment for Knowledge Analysis) — это cвободное программное обеспечение для анализа данных, которое было написано на Java в университете Уайкато (Новая Зеландия) и распространяется по лицензии GNU GPL.
Weka
• 1993 - Университет Уайкато начал разработку первой версии Weka на Tcl/Tk и C.
• 1997 - Принято решение переписать весь код с нуля на языке Java.
• 2005 - Weka получила награду Data Mining and Knowledge Discovery Service Award от SIGKDD.
• 2006 - Pentaho Corporation приобрела эксклюзивную лицензию на использование Weka в своих продуктах для анализа данных.
• Июль 2010 - последняя стабильная версия 3.7.2.
Weka Instances
Данные - картежи ( a , b , c , d , e) Типы данных:• Натуральные числа;• Действительные числа;• Строки;• Значения из некоторого конечного множества, например,
класс объекта;• Дата; • Композитный тип.
Входной формат данных arff
@RELATION iris
@ATTRIBUTE sepallength REAL@ATTRIBUTE sepalwidth REAL@ATTRIBUTE petallength REAL@ATTRIBUTE petalwidth REAL@ATTRIBUTE class {Iris-setosa,Iris-versicolor,Iris-virginica}
@DATA5.1,3.5,1.4,0.2,Iris-setosa4.9,2.5,4.5,1.7,Iris-virginica5.4,3.0,4.5,1.5,Iris-versicolor
Weka filters
Решают задачи по: • дискретизации данных,• изменению атрибутов,• разбиению исходной выборки на обучающую и тестовую
и многое другое
Weka Classifiers
Набор алгоритмов для классификации:• J48 алгоритм C4.5 Desion Tree• RandomForest• NaiveBayes• SMO
Набор для кластеризации: • Expectation Maximization• K-Means
Алгоритм Apriori и много других.
Представление кандидатов в совпадающие объявления как векторов
Одно свойство - одно измерение.Число сопоставляется по следующей формуле:
SVM
SVM SMO
Точность алгоритма составляет около 75-90 процентов, в зависимости от категории. Пример для компьютеров:
-1.3665 * brand-0.9833 * voltage-1.3506 * setQuantaty-0.9969 * inchSize-2.4578 * numberinfo-2.9749 * all+3.5519
Desion trees J48
Dession tree
Точность алгоритма составляет около 79-95 процентов, в зависимости от категории. Пример для телевизоров: brand <= 0: not a match (133.0/2.0)brand > 0| numberinfo <= 0| | goodType <= 0.333333| | | type <= 0.3: not a match (48.0/1.0)| | | type > 0.3 ..............
Выводы
• Используя open-source библиотеки можно быстро построить систему поиска объявлений;
• На категории не нужно много ассесерских данных• Если процент ошибок велик, то есть не выделенный
фактор