Kuznetcov

894 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
894
On SlideShare
0
From Embeds
0
Number of Embeds
107
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Kuznetcov

  1. 1. Построение  поиска объявлений  об одинаковых товарах  с помощью  opensource-технологий Александр Кузнецов  Grid Dynamics, Саратов
  2. 2. Поиск объявлений  об одном и том же товаре <ul><ul><li>NEW Haier 10.2&quot; Portable LCD Digital TV with A/V Remote </li></ul></ul><ul><ul><li>Haier HLT10 Portable 10.2&quot; Digital LCD TV NIB </li></ul></ul><ul><ul><li>NEW Haier HLT10 10'' LCD Television Portable </li></ul></ul><ul><ul><li>Sharp AQUOS LC-20SH4U 20'' LCD Television w/ wall mount </li></ul></ul><ul><ul><li>Sony Bravia KDL-V32XBR1 LCD 32&quot; QU Mount </li></ul></ul><ul><li>  </li></ul>
  3. 3. Этапы обработки
  4. 4. Выделение брэнда <ul><ul><li>NEW Haier 10.2&quot; Portable LCD Digital TV with A/V Remote </li></ul></ul><ul><ul><li>Sharp AQUOS LC-20SH4U 20'' LCD Television w/ wall mount </li></ul></ul><ul><ul><li>Sony Bravia KDL-V32XBR1 LCD 32&quot; QU Mount </li></ul></ul><ul><li>  </li></ul><ul><li>  </li></ul>
  5. 5. Размер экрана <ul><ul><li>NEW Haier 10.2&quot; Portable LCD Digital TV with A/V Remote </li></ul></ul><ul><ul><li>Haier HLT10 Portable 10.2&quot; Digital LCD TV NIB </li></ul></ul><ul><ul><li>Haier LCD 7in Portable Tv new in the box w/ remote </li></ul></ul><ul><li>  </li></ul>
  6. 6. Объект объявления <ul><ul><li>Sony Bravia KDL-V32XBR1 LCD 32&quot; QU Mount </li></ul></ul><ul><ul><li>Haier HLT10 Portable 10.2&quot; Digital LCD TV NIB </li></ul></ul><ul><ul><li>Sharp AQUOS LC-20SH4U 20'' LCD Television w/ wall mount </li></ul></ul><ul><li>  </li></ul><ul><li>Словарь синонимов. </li></ul><ul><li>Удалить лишние слова, оставить суть. </li></ul><ul><li>  </li></ul><ul><ul><li>Mount </li></ul></ul><ul><ul><li>TV  </li></ul></ul><ul><ul><li>TV with mount </li></ul></ul><ul><li>  </li></ul><ul><li>  </li></ul><ul><li>  </li></ul>
  7. 7. Hiden Markov Model  для выделения объекта
  8. 8. Обучение Hiden Markov Model <ul><li>Дан набор последовательностей.  </li></ul><ul><li>Определяются вероятности в модели. </li></ul>
  9. 9. Библиотека для HMM <ul><li>jahmm Java реализация алгоритмов, относящихся к Hidden Markov Model (HMM).  </li></ul><ul><li>  </li></ul><ul><li>Алгоритмы:  </li></ul><ul><li>Viterbi, Forward-Backward, Baum-Welch  </li></ul><ul><li>http://code.google.com/p/jahmm/ </li></ul><ul><li>  </li></ul><ul><li>  </li></ul><ul><li>  </li></ul>
  10. 10. Нахождение объекта объявления <ul><ul><li>Проверить, попадает ли наше объявление в уже размеченные образцы. Такие объявления составляют около 80-90 процентов. </li></ul></ul><ul><ul><li>Если нет, использовать HMM. </li></ul></ul><ul><li>  </li></ul>
  11. 11. Поиск Lucene <ul><li>Используется Lucene. Почему? </li></ul><ul><ul><li>Free and open source </li></ul></ul><ul><ul><li>Написана на Java и перенесена на другие языки </li></ul></ul><ul><ul><li>Зрелый проект </li></ul></ul>
  12. 12. Кто использует Lucene?
  13. 13. Lucene <ul><li>Doug Cutting - создатель Lucene, Hadoop. </li></ul><ul><li>  </li></ul><ul><ul><li>Март 2000 - первый публичный релиз на  SourceForge. </li></ul></ul><ul><ul><li>Сентябрь 2001 - проект присоединяется к Apache Software Foundation.  </li></ul></ul><ul><ul><li>Февраль 2005 - становится top-level Apache project. </li></ul></ul><ul><ul><li>Июнь 2010 - выпущена последняя стабильная версия 3.0.2. </li></ul></ul><ul><li>  </li></ul>
  14. 14. Логическая структура Lucene
  15. 15. Добавление документа в Lucene
  16. 16. Lucene Analyzer
  17. 17. Обратный индекс
  18. 18. Запросы title:extreme –subject:sports title:&quot;junit action&quot;~5 java*   java~
  19. 19. Boolean and Term Query
  20. 20. Ранжирование Модель векторного пространства для ранжирования. Документ и запрос - векторы.      
  21. 21. Не все так просто <ul><li>Boost может быть для: </li></ul><ul><ul><ul><li>Document </li></ul></ul></ul><ul><ul><ul><li>Field </li></ul></ul></ul><ul><ul><ul><li>Query </li></ul></ul></ul><ul><ul><ul><li>Term в запросе </li></ul></ul></ul><ul><li>Вложенные запросы </li></ul>
  22. 22. Реальная формула
  23. 23. Поиск объявлений
  24. 24. Формирование запроса
  25. 25. Почему не подходит Lucene score <ul><li>Проблема с отсечением результатов - нужно понять, какие совпадения оставить, а какие убрать. </li></ul><ul><li>  </li></ul><ul><li>Запрос состоит из нескольких BooleanQuery. Поэтому  значение ранга в значительной степени зависит от их количества. Нужно подбирать формулу для каждой комбинации параметров. </li></ul><ul><li>  </li></ul>
  26. 26. Отбор правильных совпадений <ul><li>Можно написать множество условных выражений, но есть способ лучше - машинное обучение.  </li></ul><ul><li>  </li></ul><ul><li>if(p1.size() == p2.size()){ </li></ul><ul><li>   if(dist(p1.brands() ,p2.brands()) < 0.7){ </li></ul><ul><li>        return false; </li></ul><ul><li>   } </li></ul><ul><li>} </li></ul><ul><li>Для этого нужно сделать обучающую выборку.  </li></ul><ul><li>Около 1000 объявлений будет достаточно для наших целей. </li></ul>
  27. 27. Weka <ul><li>Weka (Waikato Environment for Knowledge Analysis) — это cвободное программное обеспечение для анализа данных, которое было написано на Java в университете Уайкато (Новая Зеландия) и распространяется по лицензии GNU GPL. </li></ul>
  28. 28. Weka <ul><ul><li>1993 - Университет Уайкато начал разработку первой версии Weka на Tcl/Tk и C. </li></ul></ul><ul><ul><li>1997 - Принято решение переписать весь код с нуля на языке Java. </li></ul></ul><ul><ul><li>2005 - Weka получила награду Data Mining and Knowledge Discovery Service Award от SIGKDD. </li></ul></ul><ul><ul><li>2006 - Pentaho Corporation приобрела эксклюзивную лицензию на использование Weka в своих продуктах для анализа данных. </li></ul></ul><ul><ul><li>Июль 2010 - последняя стабильная версия 3.7.2. </li></ul></ul>
  29. 29. Weka Instances <ul><li>Данные - картежи ( a , b , c , d , e) </li></ul><ul><li>  </li></ul><ul><li>Типы данных: </li></ul><ul><ul><li>Натуральные числа; </li></ul></ul><ul><ul><li>Действительные числа; </li></ul></ul><ul><ul><li>Строки; </li></ul></ul><ul><ul><li>Значения из некоторого конечного множества, например, класс объекта; </li></ul></ul><ul><ul><li>Дата; </li></ul></ul><ul><ul><li>Композитный тип. </li></ul></ul><ul><li>    </li></ul>
  30. 30. Входной формат данных arff <ul><li>@RELATION iris @ATTRIBUTE sepallength    REAL @ATTRIBUTE sepalwidth     REAL @ATTRIBUTE petallength    REAL @ATTRIBUTE petalwidth      REAL @ATTRIBUTE class     {Iris-setosa,Iris-versicolor,Iris-virginica} @DATA 5.1,3.5,1.4,0.2,Iris-setosa </li></ul><ul><li>4.9,2.5,4.5,1.7,Iris-virginica </li></ul><ul><li>5.4,3.0,4.5,1.5,Iris-versicolor </li></ul>
  31. 31. Weka filters <ul><li>Решают задачи по:  </li></ul><ul><li>  </li></ul><ul><ul><li>дискретизации данных, </li></ul></ul><ul><ul><li>изменению атрибутов, </li></ul></ul><ul><ul><li>разбиению исходной выборки на обучающую и тестовую </li></ul></ul><ul><li>  </li></ul><ul><li>и многое другое </li></ul>
  32. 32. Weka Classifiers <ul><li>Набор алгоритмов для классификации: </li></ul><ul><ul><li>J48  алгоритм C4.5 Desion Tree </li></ul></ul><ul><ul><li>RandomForest </li></ul></ul><ul><ul><li>NaiveBayes </li></ul></ul><ul><ul><li>SMO </li></ul></ul><ul><li>Набор для кластеризации:  </li></ul><ul><ul><li>Expectation Maximization </li></ul></ul><ul><ul><li>K-Means </li></ul></ul><ul><li>Алгоритм Apriori </li></ul><ul><li>  </li></ul><ul><li>и много других. </li></ul>
  33. 33. Представление кандидатов в совпадающие объявления как векторов <ul><li>Одно свойство - одно измерение. </li></ul><ul><li>Число сопоставляется по следующей формуле: </li></ul><ul><li>  </li></ul>
  34. 34. SVM
  35. 35. SVM SMO <ul><li>Точность алгоритма составляет около 75-90 процентов, в зависимости от категории.  </li></ul><ul><li>  </li></ul><ul><li>Пример для компьютеров: </li></ul><ul><ul><ul><ul><li>-1.3665 * brand -0.9833 * voltage -1.3506 * setQuantaty -0.9969 * inchSize -2.4578 * numberinfo -2.9749 * all +3.5519 </li></ul></ul></ul></ul>
  36. 36. Desion trees J48
  37. 37. Dession tree <ul><li>Точность алгоритма составляет около 79-95 процентов, в зависимости от категории.  </li></ul><ul><li>  </li></ul><ul><li>Пример для телевизоров: </li></ul><ul><li>  </li></ul><ul><li>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 </li></ul><ul><li>.............. </li></ul>
  38. 38. Выводы <ul><ul><li>Используя open-source библиотеки можно быстро построить систему поиска объявлений; </li></ul></ul><ul><ul><li>На категории не нужно много ассесерских данных </li></ul></ul><ul><ul><li>Если процент ошибок велик, то есть не выделенный  фактор </li></ul></ul>

×