CoderCastrov logo
CoderCastrov
Машинное обучение

Как гибридный парсер с машинным обучением превосходит традиционный парсер

Как гибридный парсер с машинным обучением превосходит традиционный парсер
просмотров
9 мин чтение
#Машинное обучение

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

Введение

Это часть серии блогов, связанных с реализацией искусственного интеллекта. Если вас интересует предыстория и ход событий:

#1) Как парсить локальные результаты Google с помощью искусственного интеллекта?#2) Реальный пример применения машинного обучения на платформе Rails#3) Советы и сравнения при обучении искусственного интеллекта#4) Машинное обучение в парсинге с помощью Rails#5) Реализация моделей ONNX в Rails#6) Как гибридный парсер с машинным обучением превосходит традиционный парсер

На этой неделе мы поделимся сравнениями нашего проблемного парсера и того, как модель ML-Hybrid улучшит наш парсинг. В качестве тестовой площадки я выбрал API парсера Google Local Pack от SerpApi. В рамках этого сравнения мы будем использовать только результаты для Desktop.

Правила сравнения

Давайте определим некоторые правила для сравнения двух парсеров:

  • Правильный парсинг дает +3 балла
  • Неправильный парсинг дает -2 балла
  • Частично правильный парсинг все равно считается неправильным парсингом, поэтому -2 балла
  • Если правильно распарсенное значение появляется в другом ключе, второе появление будет рассматриваться отдельно и в итоге будет равно -2 (минус за путаницу)
  • Если в нежелательном ключе появляется более одного элемента, они будут отдельно оцениваться -2 балла
  • Если текст внутри части HTML не извлекается ни в одном из ключей, это будет -1 балл за отсутствие путаницы

Примеры

Мы попытались использовать запросы из разных секторов бизнеса, чтобы исключить предвзятость в сравнении. У ML-Hybrid Model нет проблем с вычислением. Однако читатель должен учитывать недействительность Traditional Parser, такие же проблемы возникают с разными значениями. Сказанное, Traditional Parser использует большой и сложный набор условий для разбора результатов. Это сложно поддерживать, а CSS-цели меняются примерно каждые две недели. ML-Hybrid модель, с другой стороны, использует простые CSS-цели, такие как div:has(text()), чтобы собрать необходимые тексты в целевых полях.

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

Запрос: Дантист Traditional Parser Score: -10 ML-Hybrid Parser Score: 14

Traditional Parser, Total Score: -10 ML-Hybrid Parser, Total Score: 14

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

Запрос: Дантист Traditional Parser Score: -10 ML-Hybrid Parser Score: 10

Traditional Parser, Total Score: -10 ML-Hybrid Parser, Total Score: 10

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

Запрос: Дантист Traditional Parser Score: -8 (Все неправильно) ML-Hybrid Parser Score: 1

Traditional Parser, Total Score: -8 (Все неправильно) ML-Hybrid Parser, Total Score: 1

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

Запрос: Книжный магазин Traditional Parser Score: -10 ML-Hybrid Parser Score: 14

Traditional Parser, Total Score: -10 ML-Hybrid Parser, Total Score: 14

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

Запрос: Книжный магазин Traditional Parser Score: -10 ML-Hybrid Parser Score: 21 (Все правильно)

Traditional Parser, Total Score: -10 ML-Hybrid Parser, Total Score: 21 (Все правильно)

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

Запрос: Книжный магазин Traditional Parser Score: -3 ML-Hybrid Parser Score: 17

Traditional Parser, Total Score: -3 ML-Hybrid Parser, Total Score: 17

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

Запрос: Мексиканский ресторан Traditional Parser Score: -9 ML-Hybrid Parser Score: 15 (Все правильно)

Traditional Parser, Total Score: -9 ML-Hybrid Parser, Total Score: 15

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

Запрос: Мексиканский ресторан Traditional Parser Score: -7 ML-Hybrid Parser Score: 12 (Все правильно)

Traditional Parser, Total Score: -7 ML-Hybrid Parser, Total Score: 12 (Все правильно)

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

Запрос: Мексиканский ресторан Traditional Parser Score: -7 ML-Hybrid Parser Score: 12

Traditional Parser, Total Score: -7 ML-Hybrid Parser, Total Score: 12

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

Запрос: Страховое агентство Traditional Parser Score: -9 ML-Hybrid Parser Score: 15 (Все правильно)

Traditional Parser, Total Score: -9 ML-Hybrid Parser, Total Score: 15 (Все правильно)

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

Запрос: Страховое агентство Traditional Parser Score: -6 ML-Hybrid Parser Score: 11

Traditional Parser, Total Score: -6 ML-Hybrid Parser, Total Score: 11

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

Запрос: Страховое агентство Traditional Parser Score: -9 ML-Hybrid Parser Score: 12 (Все правильно)

Traditional Parser, Total Score: -9 ML-Hybrid Parser, Total Score: 12 (Все правильно)

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

Запрос: Кофе Traditional Parser Score: -9 ML-Hybrid Parser Score: 15 (Все правильно)

Traditional Parser, Total Score: -9 ML-Hybrid Parser, Total Score: 15 (Все правильно)

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

Запрос: Кофе Traditional Parser Score: -12 ML-Hybrid Parser Score: 15 (Все правильно)

Traditional Parser, Total Score: -12 ML-Hybrid Parser, Total Score: 15 (Все правильно)

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

Запрос: Кофе Traditional Parser Score: -8 ML-Hybrid Parser Score: 18 (Все правильно)

Traditional Parser, Total Score: -8 ML-Hybrid Parser, Total Score: 18

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

Как работает гибридный парсер ML-Hybrid?

Прежде всего, я должен отметить, что я еще не расширил словарь, используемый для поддержки модели классификатора n-грамм парсера. Я хотел увидеть, как он работает с низкоуровневыми данными и где возникают проблемы. Это означает, что его можно улучшить в будущем.

Два основных преимущества модели ML:

  • Она может предсказывать отдельную строку.
  • Она может решить, должна ли строка быть разделена с помощью разделителя (с незначительными отклонениями, которые обрабатываются, как в традиционном парсере).

Способ, которым она решает, должна ли строка быть разделена, прост:

  • Она разделяет строку на указанные точки и получает максимальное вероятностное значение предсказания для каждого отдельного текста. Что это значит: если вы даете модели строку, она возвращает массив, состоящий из различных чисел с плавающей запятой. Размер массива равен количеству ключей, которые вы хотите предсказать. Этот массив состоит из чисел с плавающей запятой, представляющих вероятностные значения, и индекс максимального из этих чисел дает вам ключ, который вы хотите предсказать. Однако сейчас нас интересует значение максимального из этих чисел с плавающей запятой. Например, вывод для "5540 N Lamar Blvd #12" = [0.6, 0.4], вывод для "Austin, TX 78756" = [0.8, 0.2].
  • Модель берет среднее значение этих максимальных вероятностных значений. Например, средний вывод для разделения = (0.6 + 0.8)/2 = 0.7.
  • Затем она берет максимальное вероятностное значение объединенного текста. Например, вывод для "5540 N Lamar Blvd #12 ⋅ Austin, TX 78756" = [0.9, 0.1].
  • Наконец, она сравнивает оба значения, чтобы принять решение, разделять ли текст. Поскольку 0.9 больше, чем 0.1, она выбирает не разделять текст. Обратите внимание, что все три текста дадут нам ключ address.

В дополнение к этому, основное отличие от традиционного парсера заключается в том, как он собирает тексты в первую очередь. В традиционном парсере у вас есть определенный набор целей, в котором вы перемещаетесь через различные условия, чтобы разобрать нужный элемент. ML-Hybrid также поддерживается множеством регулярных выражений. Однако в конце концов это сеть текста и гонка за ключом. Он полезен для двух вещей:

  • Вам не нужно писать сложный парсер для одного ключа, начальный парсер, скорее всего, будет достаточным.
  • Вам не нужно обновлять цели CSS или проходить через смесь условий, вы можете обновлять ключи и повторно обучать модель с помощью двух простых команд, если появляется новый ключ. Вам не нужно делать это для старых ключей.

Заключение

Этот блог-пост является определенным доказательством того, что модель ML-Hybrid может быть применена для целей парсинга с гораздо большей эффективностью и устойчивостью. Я хотел бы поблагодарить читателя за внимание и выразить благодарность замечательным людям из SerpApi за всю их поддержку в развитии новых областей, даже в эти "трудные времена". На следующей неделе мы поговорим о том, как мы еще улучшим модель, сравнительных показателях времени выполнения и о "Общих целях тестирования машинного обучения".


Опубликовано на https://serpapi.com 9 марта 2022 года.