Нечеткий поиск добавляет результаты

Использование Excel 2010 и Microsoft «Fuzzy Lookup» для сравнения столбца из 2 рабочих листов. Первый рабочий лист содержит около 48 000 строк (x 3 столбца), второй рабочий лист содержит около 23 000 строк (x 5 столбцов). «Нечеткий поиск» сравнивает один столбец из каждого и возвращает сходство между ними.

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

W2-NK22/16 на одном листе имеет 0,97 сходства с W2NK2216.

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

761689700000

должен иметь некоторое сходство с:

761689700000EN4239

но добавление Fuzzy Lookup возвращает для него 0,000. Оба поля имеют текстовый формат. Ни перед, ни после них нет пробелов, а первые 12 символов идентичны.

Я удалил и переустановил надстройку и использовал настройки по умолчанию. Единственные другие настройки Fuzzy Lookup, которые я изменил, были в Configure --> Global -- UseApproximateIndexing. Я установил для него значения False и True, которые не повлияли.

У меня есть сотни примеров, подобных приведенному выше, которые показывают сходство в 0,000, но при проверке кажутся очень похожими. Строки до и после них показывают разную степень сходства.

Любые мысли или идеи относительно того, почему это не работает правильно, или лучший способ сделать это приблизительное совпадение, будут оценены.


person steve_o    schedule 12.10.2015    source источник
comment
Интересно, считает ли он каждую запись одним токеном, а не каждую букву токеном. Замените 761689700000EN4239 на 761689700000 EN4239 с пробелом и запустите снова. Если теперь он думает, что они совпадают, это символическая проблема. Это приятно знать, но я не знаю, как это исправить.   -  person Dick Kusleika    schedule 12.10.2015
comment
@DickKusleika - я только что читал вашу (очень хорошую) статью об этом от января 2015 года - одну из самых полезных, которые я нашел. Я сделал, как вы предложили (chg ...700000EN4239 на ....700000 EN4239) - и теперь он возвращает правильную запись с подобием 0,90. По крайней мере, я понимаю, почему те же самые 12 символов в каждом не совпадают. Для меня не имеет большого смысла, почему каждая запись является токеном, а не каждым символом, поскольку это определяет сходство. Я предполагаю, что накладные расходы будут огромными, чтобы заставить его работать по характеру.   -  person steve_o    schedule 12.10.2015
comment
Мне кажется хорошей идеей токенизировать посимвольно, если нет пробелов или других специальных символов. Со всеми опциями, которые есть у надстройки, мне интересно, есть ли у нее такая, которая вызовет эту ситуацию. К сожалению, мы достигли предела моих знаний об этом. Ни одна из настроек, которые я видел, не выглядела многообещающе.   -  person Dick Kusleika    schedule 13.10.2015
comment
@DickKusleika - Вы знаете, что использует инструмент Fuzzy Lookup, чтобы определить, что такое токен? Очевидно, пробел (из вашего теста) - у меня есть все виды символов, которые, как я полагаю, указывают на новый токен (тире, косые черты, точки, запятые и т. д.). У меня есть UDF в Excel, который я использовал для размещения пробелов между буквами и цифрами (теперь это будет 3 токена). Вы могли бы подумать, что все, что не 0-9, AZ, az, будет единицей. Какие-нибудь мысли? Спасибо еще раз за помощь!   -  person steve_o    schedule 16.10.2015
comment
Согласно msdn.microsoft.com/en-us/library/ms137786.aspx The transformation provides a default set of delimiters used to tokenize the data, but you can add token delimiters to suit the needs of your data. но я не знаю, как и где вы это делаете. См. также blogs.adatis.co.uk/blogs/jeremykashel/archive/2013/07/05/   -  person Dick Kusleika    schedule 20.10.2015
comment
@DickKusleika - обновление. Я сделал некоторые вещи, чтобы разделить строки, разделив их (пробелом), где у меня были цифры и буквы, примыкающие друг к другу. Другими словами, 700000EN4239 превратилось в 700000 EN 4239. Результат нечеткого поиска почти удвоил количество ненулевых совпадений. Обратной стороной этого было то, что было НАМНОГО больше ложных совпадений, а некоторые совпадения с более ранними совпадениями имели сходство 0,90+, тогда как сейчас около 0,80. Количество совпадений 1.0 было одинаковым в обоих случаях. В итоге мы использовали расширенный список просто для проверки очевидных несоответствий с предыдущим. Спасибо за помощь!   -  person steve_o    schedule 04.11.2015


Ответы (1)


Пытаюсь добавить контент, хотя этому делу уже 2 года. Надеюсь, кто-то еще может использовать его.

Преобразования, токенизация и т. д. — ищите в той же папке, где установлен Fuzzy Lookup. Там есть пример файла с именем Portfolio.xlsx и соответствующий файл Readme.docx. Это очень полезно. Откровенно говоря, документация надстройки Fuzzy Lookup ужасна (но она бесплатна). В файле Readme говорится о праве под названием «EditTransformationProvider», которое может решить проблему такого рода.

Я реализовал Fuzzy в паре рабочих процессов, и мы сэкономили сотни человеко-часов при работе в Excel. Это не шутка.

person Chad Schmidt    schedule 05.12.2017