О проекте
Реклама
Правовая информация
Искать: 
Пользователей: 134310
Участников клуба: 1613
Разработок: 8427 (новых: 7)
Каталог разработок  |  Новости  |  Конференц-зал  |  Вопросы и ответы  |  КЛУБ на CD
КЛУБ ТЕСТИРОВАНИЯ Online
Новое
Скачать разработку
Об авторе
Все разработки автора
1C:TOP-100



Яндекс цитирования
strmatch - Нечеткое сравнение и поиск строк
Главная : Решения : Алгоритмы и структуры данных
Автор: Skorp
Принял: orefkov
Описание:
Поставь оценку
Хорошо
Отлично
Идея

Как это выгядит на практике? К примеру, нам нужно найти в справочнике номенклатуры некую позицию. Мы знаем, что в названии фирмы есть слово "Виски", но не знаем, как именно название было внесено в базу: Whisky; Thiski; Вхиске или еще как, - вариантов масса.

Вот в этой-то ситуации и поможет StrMatch. Её механизм значительно умнее
оператора "Find" (и работает значительно быстрее). Прогнав через него массив строк (наименований справочника) мы на выходе получим таблицу наиболее близких по звучаню названий. Далее на Ваш выбор.

---------------------------------------------------
2.1.0 - 4 февраля 2005
Платформа разработки и компилятор обновилась до .NET 2003
Исправлены несколько очень опасных багов, которые могли вызвать аварийное
завершение 1С
Код оптимизирован под PIV

1С:Предприятие 7.7 Бухгалтерия Расчет Оперативный учет
Файл: strmatch.zip
Размер: 38,30 KB
Дата регистрации: 04/07/2003
Последнее обновление: 04/02/2005
Рейтинг: 5.24 (25 голосов)
Скачиваний: 4270
Комментарии:

Нитевидный  |  Более старые первыми Вниз

Зарегистрируйтесь для создания
1 2 3 4 »

   Отправитель      Сообщения  
  Skorp 
Сообщение:356446 -> 356367, Отправлено: 28/02/2008 11:15
Пишет, но нечасто


Зарегистрирован:30/06/2003
Город:Калининград
Сообщений:13
Re: strmatch - Нечеткое сравнение и поиск строк


Я помогу.
Описание, прилагаемое к компоненте читать пробовали?
1. Там нигде не написано про проценты, это очки схожести
2. Простое сравнение 2х строк - смысла не имеет, задача компоненты определить какая строка из списка больше похожа на предложенную.
  ssaoil 
Сообщение:356367 -> 340438, Отправлено: 26/02/2008 13:19
Частый посетитель


Зарегистрирован:28/07/2004
Город:не указан
Сообщений:356
Re: strmatch - Нечеткое сравнение и поиск строк


скачал, поставил, написал простую обработку сравнения двух тмц (выбираются вручную). результаты сравнения двух разных тмц с одинаковыми наименованиями 94% и 240%. это как так?

Перем StrMatch;
ЗагрузитьВнешнююКомпоненту("StrMatch.dll");
StrMatch = СоздатьОбъект("AddIn.StrMatchExtension");
Сообщить(StrMatch.Сравнить(СокрЛП(ВыбТМЦ1.Наименование), СокрЛП(ВыбТМЦ2.Наименование)));

кто поможет разобраться?

з.ы. а вот эта штука (http://1c.proclub.ru/modules/mydownloads/personal.php?cid=5&lid=947)
срабатывает на ура.



  mahoon 
Сообщение:340438 -> 6873, Отправлено: 18/10/2006 0:51
Пишет, но нечасто


Зарегистрирован:22/12/2005
Город:Чебоксары
Сообщений:6
Re: strmatch - Нечеткое сравнение и поиск строк


У меня появилась следующая проблема:
Ищем подстроку "ВАЛЕНКИ" (верхний регистр букв) по реквизиту "Наименование" справочника номенклатура. В справочнике есть такая группа "ВАЛЕНКИ", т.е.совпадение 100%, а метод ПолучитьИзПодбора выводит мне эту позицию не первой, как по-идее должен, а где-то 6-8. Сначала выходят Валенки такие, Валенки сякие, те не полное совпадение, а только по началу строки. И индекс сравнения у этой позиции - 58, как и у "верхних" строк, хотя, видимо, должен быть больше. Как сделать так, чтобы строки со 100% совпадением выходили первыми?
  Tomba 
Сообщение:336644 -> 6873, Отправлено: 30/07/2006 3:51
Частый посетитель


Зарегистрирован:30/03/2005
Город:Москва
Сообщений:615
Re: strmatch - Нечеткое сравнение и поиск строк


Спасибо за прекрасную компоненту.
Выложено в открытый доступ маленькая разработка на ее основе: http://infostart.ru/projects/index.php?id=393&ref=174

В readme.txt указаны ваши координаты и ссылка на страницу разработки.
  Yuri Gural 
Сообщение:325190 -> 317887, Отправлено: 30/01/2006 12:44
Пишет почаще


Зарегистрирован:15/11/2001
Город:Караганда
Сообщений:22
Re: strmatch - Нечеткое сравнение и поиск строк


Цитата:

Виктор пишет:
Последнее предложение, прочитал 3 раза, ни понял... извини?
// ну правда, понять хочу

Немного не так выразился, имелось ввиду, что при сопоставлении номенклатуры возможна такая ситуация, когда в 1 базе с которой мы сравниваем есть некая позиция, а в 2 базе ее нет, и наоборот во 2 базе могут быть позиции, которых нет в первой.

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

Цитата:

Skorp пишет:
Уже есть новая версия, которая умеет приметь метрику Левингштейна к строкам (как раз таки бальный подход), но т.к. 1С я больше не занимаюсь, когда я доведу её до безопасного вида - не знаю :\

Было бы очень интересно и полезно уверяю вас.
  Skorp 
Сообщение:321441 -> 313322, Отправлено: 11/12/2005 20:07
Пишет, но нечасто


Зарегистрирован:30/06/2003
Город:Калининград
Сообщений:13
Re: strmatch - Нечеткое сравнение и поиск строк


>Думаю, что все согласятся со мной, что иной раз для
>сопоставления одного списка номенклатуры с другим,
>встречаются позиции, которых нет ни в одном ни в другом.

Думаю, что все согласятся с тем, что автоматически это определить невозможно. Даже, если названия совпадают до последней точки, это еще не значит, что товары на самом деле одинаковые, особенно, если они взяты из разных источников.
  Skorp 
Сообщение:321440 -> 313322, Отправлено: 11/12/2005 20:00
Пишет, но нечасто


Зарегистрирован:30/06/2003
Город:Калининград
Сообщений:13
Re: strmatch - Нечеткое сравнение и поиск строк


По штрафным баллам невозможно сравнивать строки набранные транслитом и т.д. С другой стороны для подобных "бальных" сравнений инструменты и так существуют, сравнения же по звучанию для 1С еще никто не делал - вот и написал.
Алгоритм, как я уже писал, в основном относится к нечеткой логике. Для предварительной обработки строк используется идея metaphone, но с другой, собственной, реализацией.

Уже есть новая версия, которая умеет приметь метрику Левингштейна к строкам (как раз таки бальный подход), но т.к. 1С я больше не занимаюсь, когда я доведу её до безопасного вида - не знаю :\
  Виктор 
Сообщение:317887 -> 313322, Отправлено: 01/11/2005 15:46
Пишет, но нечасто


Зарегистрирован:19/02/2002
Город:Новосибирск
Сообщений:17
Re: strmatch - Нечеткое сравнение и поиск строк


Последнее предложение, прочитал 3 раза, ни понял... извини?
// ну правда, понять хочу
  Yuri Gural 
Сообщение:313322 -> 6873, Отправлено: 16/09/2005 15:26
Пишет почаще


Зарегистрирован:15/11/2001
Город:Караганда
Сообщений:22
Re: strmatch - Нечеткое сравнение и поиск строк


Было бы интересно узнать сам алгоритм сравнения.
Когда я делал аналогичную вещь, но средствами 1С, то принцип был несколько иной, вместо "индекса сравнения", можно применять "штрафные балы", т.е. если строки идентичны, то оценка равна нулю. Таким образом я могу оценить насколько сравнимые строки различны друг от друга, например, если общая оценка меньше половины длины самой короткой строки, то в принципе можно считать строки схожими, иначе они различными.
Думаю, что все согласятся со мной, что иной раз для сопоставления одного списка номенклатуры с другим, встречаются позиции, которых нет ни в одном ни в другом.
  Skorp 
Сообщение:288856 -> 274081, Отправлено: 04/02/2005 13:08
Пишет, но нечасто


Зарегистрирован:30/06/2003
Город:Калининград
Сообщений:13
Re: strmatch - Нечеткое сравнение и поиск строк


Не была инициализирована (точнее типизирована) "Имя" - это исправлено в новой версии.

Зарегистрируйтесь для создания
1 2 3 4 »

Нитевидный  |  Более старые первыми Наверх