Как найти дубликаты записей по смыслу?

Добрый день, всем!

Есть перечень (номенклатура) объектов по названию, в виде таблицы. Название обекта состоит из нескольких слов и возможно буквенно-цифрового дополнения. В списке существуют одинаковые по смыслу объекты, но различные по написанию. Например:
Муфта металлическая 3-М,
Металл. муфта 3-М и
Металлическая муфта 5-В,
так вот, Муфта металлическая 3-М и Метал. муфта 3-М -это объекты одинаковые по смыслу, но различные по написанию.
Вот и нужен алгоритм, который проанализирует вест список и найдет одинаковые по смыслу объекты (хотя бы процентов 70%)
Какие можно использовать подходы к анализу? Возможно уже есть готовые решения? Интересуют так же теоретические выкладки с описанием принципов, код как-нибудь напишем))

Буду рад любой помощи.
  • Вопрос задан
  • 281 просмотр
Пригласить эксперта
Ответы на вопрос 3
1. Сначала задайте синонимы
Метал. = метал. = металлическая
2. Если слово "металлическая" не важно а важно слово "муфта" то задайте список игнорируемых слов которые удалятся перед анализом
3. "3-М" в данном случае важно или нет?
4. Короче отсеиваете неважное, приводите к одному регистру и ищете точные вхождения, или группируете по заданным символам. Модель выделяете в отдельную строку регуляркой и ищете что бы в искомой строк было 2 совпадения и по слову и по модели.
5. Если слова длинные и есть склонения используете Стеммер Портера, но он плохо работает с короткими словами.
Всё.

Пример:
Муфта металлическая 3-М
Удаляем "металлическая" и приводим к 1 регистру стало: "муфта 3-м" разбираем пробелом на 2 строки стало: "муфта" и "3-м".
Поиск в цикле:
Строка: "Шайба металлическая 3-М". Приводим регистр, стало "шайба металлическая 3-м" проверяем на "муфта" - нет, проверяем на "3-м" - есть - не подходит, надо что бы и то и то совпадало.
Ну и регулярки юзайте по необходимости
/муфт[а-яё]+/ismu
/[0-9]-м/ismu // найдёт все модели от 0-м до 9-м
Ответ написан
@protven
Используйте метрики для поиска похожих объектов - ключевые слова Jaccard Similarity, shingling, minhashing. Можно почитать тут infolab.stanford.edu/~ullman/mmds/book.pdf , Глава 3 Finding Similar Items.
По этой книге есть курс на курсере, можно посмотреть видюшки с живыми примерами и объяснениями - https://class.coursera.org/mmds-003 , материал второй недели, как раз стал доступен, я этот курс сейчас прохожу. Ну и по материалам этой же книги, есть курс от Computer Science Center, и там тоже эти вопросы рассматриваются, https://www.lektorium.tv/course/22822 . Но мне этот курс не понравился, как раз когда объяснялась нужная вам тема, девочка явно путалась в объяснениях.
Ответ написан
Комментировать
AnnTHony
@AnnTHony
Интроверт
Брать первые 3 символа каждого слова, например "мет" "муф" "3-м" и искать вхождения этих символов по остальному тексту.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы