Сопоставление товаров с доменом

У меня есть различные продукты, которые мне нужно решить, если они одинаковы. Быстрый пример:

Microsoft RS400 mouse with middle button должен соответствовать Microsoft Red Style 400 three buttoned mouse но нет Microsoft Red Style 500 mouse

Нет ничего более приятного, с чем я могу сопоставить, кроме имени, и просто сделать это с соотношением подходящих слов не достаточно хорошо (уровень ошибок слишком высок)

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

Пока я думал только о том, чтобы сопоставить их, пытаясь использовать написанные от руки правила, чтобы уменьшить размер строки, а затем проверяя подходящие слова, но мне было интересно, есть ли у кого-нибудь идеи, что лучший способ сделать это соответствие - это лучше Точность и аккуратность (или с чего начать поиск) и знает ли кто-нибудь о работе, проделанной в этой области? (документы, примеры и т. д.).

4 ответа

"Я знаю о домене..."

Как много вы знаете о домене? Если вы знаете все о домене, то вам лучше составить индекс всех продуктов ваших производителей (в основном описание продукта с веб-страницы производителей). Тогда вместо того, чтобы пытаться сопоставить ваши описания друг с другом, сопоставьте их с вашим индексом продуктов.

Преимущества этого подхода:

  • предположительно все слова, использованные в описании продукта, использовались где-то в рекламной литературе
  • если при построении индекса вы смогли взвесить некоторую информацию (например, коды продуктов), то вы можете добиться большего успеха

Недостатки:

  • создание индекса может занять много времени (особенно если это сделано вручную)

Если вы не знаете всего о своем домене, вы можете рассмотреть очень распространенные слова понижения рейтинга (вы можете получить списки распространенных слов в интернете), а также числа и слова повышенного ранга, которых нет в словаре. (вы можете получить списки слов из интернета / большинство дистрибутивов linux/unix идут с ними для проверки орфографии).


Я не знаю, как много вы знаете о поиске, но в прошлом я находил полезной книгу У. Брюса Крофта, Дональда Метцлера, Тревора Штромана "Поиск в поисковых системах на практике". На веб-сайте издателей есть несколько примеров глав, в которых будет указано, предназначена ли вам книга: pearsonhighed.com

Надеюсь, это поможет.

В дополнение к рукописным правилам вы можете попытаться использовать контролируемое обучение с извлечением функций.

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

Например, каждая пара слов может иметь больший вес, чем простое соотношение, как вы сделали.

[3-button]    [middle]
[wheel]       [button]
[mouse]       [mouse]

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

Просто токенизируйте (вы должны также отделить числа от букв на этом шаге, а не просто пробел), стебель, отфильтровать стоп-слова и неинтересные слова, такие как мышь. Возможно, вы должны иметь список со словами производителей, а также сократить все не производителей и цифры до их первой буквы. (если вы это сделаете, вы должны разделить заглавные буквы так же в токенизаторе)

Microsoft RS400 mouse with middle button -> Microsoft R S 400
Microsoft Red Style 400 three buttoned mouse -> Microsoft R S 400
Microsoft Red Style 500 mouse -> Microsoft R S 500

Если вы хотите лучшее решение vsm (модель векторного пространства) из обнаружения плагиата, было бы неплохо. (Каждое слово получает вес в соответствии с его дискриминационной ценностью, и эти веса проецируются в многомерное пространство. После этого вы просто измеряете угловую степень между двумя текстами)

Я хотел бы предложить что-то более общее применимо. Насколько я понимаю, вам нужна некоторая обработка nlp, которая будет иметь дело с вещами, которые вы распознаете как синонимы. Я думаю, что это довольно простая реализация.

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

При такой проблеме с nlp вероятность того, что вы достигнете 100% -ной точности, равна 0, но вы вполне могли бы подняться выше 90%, я бы предложил добавить элемент, с помощью которого вы можете корректировать веса автоматически. Здесь я должен быть довольно расплывчатым, но на моей последней работе передо мной стояла похожая проблема, и я смог добиться точности в 90-х. Моя реализация также, вероятно, была более сложной, чем то, что вам нужно, но даже простая реализация должна дать вам довольно хороший результат, но если вы не имеете дело с довольно большим набором данных (~ сотни +), то, вероятно, не стоит создавать сценарии.

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

Другие вопросы по тегам