Как гибридный парсер с машинным обучением превосходит традиционный парсер
Введение
Это часть серии блогов, связанных с реализацией искусственного интеллекта. Если вас интересует предыстория и ход событий:
#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 Score
: -10 ML-Hybrid Parser Score
: 10
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
Запрос: Дантист Traditional Parser Score
: -8 (Все неправильно) ML-Hybrid Parser Score
: 1
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
Запрос: Книжный магазин Traditional Parser Score
: -10 ML-Hybrid Parser Score
: 14
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
Запрос: Книжный магазин Traditional Parser Score
: -10 ML-Hybrid Parser Score
: 21 (Все правильно)
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
Запрос: Книжный магазин Traditional Parser Score
: -3 ML-Hybrid Parser Score
: 17
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
Запрос: Мексиканский ресторан Traditional Parser Score
: -9 ML-Hybrid Parser Score
: 15 (Все правильно)
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
Запрос: Мексиканский ресторан Traditional Parser Score
: -7 ML-Hybrid Parser Score
: 12 (Все правильно)
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
Запрос: Мексиканский ресторан Traditional Parser Score
: -7 ML-Hybrid Parser Score
: 12
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
Запрос: Страховое агентство Traditional Parser Score
: -9 ML-Hybrid Parser Score
: 15 (Все правильно)
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
Запрос: Страховое агентство Traditional Parser Score
: -6 ML-Hybrid Parser Score
: 11
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
Запрос: Страховое агентство Traditional Parser Score
: -9 ML-Hybrid Parser Score
: 12 (Все правильно)
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
Запрос: Кофе Traditional Parser Score
: -9 ML-Hybrid Parser Score
: 15 (Все правильно)
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
Запрос: Кофе Traditional Parser Score
: -12 ML-Hybrid Parser Score
: 15 (Все правильно)
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
Запрос: Кофе Traditional Parser Score
: -8 ML-Hybrid Parser 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 года.