machine-learning - чего - что нужно знать для машинного обучения




Лучший способ машинного обучения для соответствия строк продукта (2)

Вот головоломка ...

У меня есть две базы данных из тех же 50000+ электронных продуктов, и я хочу сопоставлять продукты в одной базе данных с другими. Однако названия продуктов не всегда идентичны. Я попытался использовать расстояние Левенштейна для измерения сходства строк, однако это не сработало. Например,

-LG 42CS560 42-Inch 1080p 60Hz LCD HDTV
-LG 42 Inch 1080p LCD HDTV

Эти предметы одинаковы, но их названия продуктов сильно различаются.

С другой стороны...

-LG 42 Inch 1080p LCD HDTV
-LG 50 Inch 1080p LCD HDTV

Это разные продукты с очень похожими названиями продуктов.

Как мне решить эту проблему?


Используйте большой набор примеров обучения. Для каждой возможной пары в этом примере установите:

  1. Разберите строку для своих компонентов, а именно: компания, size_desc, display_type, make и т. д.
  2. Найдите расстояние между теми же компонентами между двумя строками пары.
  3. Создайте кортеж чисел, представляющий расстояние между компонентами.
  4. Обозначьте кортеж как идентичный / не идентичный на основе строк в паре в составе обучающего набора.
  5. Загрузите кортежи и подготовьте бинарный классификатор (SVM).

Теперь, когда вы получаете пару строк, для которых вы хотите решить, являются ли они такими же или нет, извлеките такие функции, как вы сделали в наборе тренировок, и создайте кортеж чисел для расстояния между различными компонентами строки. Корректируйте кортеж на обученный SVM и классифицируйте, являются ли они одинаковыми или нет.

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

Вы можете использовать пакет LibSVM в WEKA для этого.


Моя первая мысль - попытаться разобрать имена в описании функций (компания LG , размер 42 Inch , разрешение 1080p , тип LCD HDTV ). Тогда вы можете сопоставить эти описания друг с другом для обеспечения совместимости; это нормально опустить номер продукта, но плохо иметь разные размеры. Простых совместимых с общими атрибутами может быть достаточно, или вам, возможно, придется писать / изучать правила о том, насколько разные атрибуты могут отличаться и т. Д.

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

Если это не будет осуществимо, это извлечение аналогично полуконтролируемой частичной репликации. Однако это несколько отличается тем, что я полагаю, что словарный запас гораздо более ограничен, чем типичный синтаксический анализ, и в том, что пространство имен продуктов более иерархическое: метка resolution применяется только к определенным видам продуктов. Я не очень хорошо знаком с этой литературой; могут быть некоторые идеи, которые вы могли бы использовать.





levenshtein-distance