Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Простая метрика сходства текстовых строк - Страница 6 - Мир MS Excel

Старая форма входа
Модератор форума: _Boroda_, китин  
Мир MS Excel » Вопросы и решения » Готовые решения » Простая метрика сходства текстовых строк (Нечеткий поиск - варианты решения)
Простая метрика сходства текстовых строк
Паттттт Дата: Понедельник, 17.09.2012, 17:23 | Сообщение № 101
Группа: Заблокированные
Ранг: Новичок
Сообщений: 43
Репутация: -17 ±
Замечаний: 100% ±

Я тут подумал, поанализировал функции и пришёл к выводу, что нужно соединить функцию, предложенную Формуляр, и FuzzyVLookup в одну функцию.


Сообщение отредактировал Паттттт - Понедельник, 17.09.2012, 17:25
 
Ответить
СообщениеЯ тут подумал, поанализировал функции и пришёл к выводу, что нужно соединить функцию, предложенную Формуляр, и FuzzyVLookup в одну функцию.

Автор - Паттттт
Дата добавления - 17.09.2012 в 17:23
Формуляр Дата: Понедельник, 17.09.2012, 22:11 | Сообщение № 102
Группа: Друзья
Ранг: Ветеран
Сообщений: 832
Репутация: 255 ±
Замечаний: 0% ±

Excel 2003, 2013
Quote (Alex_ST)
Но ты настолько углубился в тему лингвистического анализа вообще и нечёткого поиска в частности, что твой лексикон стал не понятен простым смертным

Да никакого там специального лексикона нету - это всё от косноязычности. smile
Постараюсь привести код и комментарии в приличный вид.

Что касается "лишних" и "недостающих":
text1 - это образец для сравнения
text2 - это проверяемая строка, которую мы сравниваем с образцом.
Все диады этих строк в результате раскладываем на 3 кучки:
a) совпадающие
b) "недостающие", которые есть в образце, но отсутствуют в проверяемой строке
c) "лишние", которые есть в проверяемой строке, но отсутствуют в образце
Первоначально метрика определялась как доля совпадающих диад в их общем количестве.
Ms = 2*a / (a+b + a+c)
и была симметрична, т.е. ей было пофиг, которая строка, проверяемая, которые диады "лишние", которые "недостающие".
Для поиска по ключ. словам больше подходит другая метрика
Ma = a / (a+b)
которая определяет долю диад образца(text1), найденных в проверяемой строке (text2). Тут вот и возникают эти различия.
Ну а метрика в общем виде выглядит так:
M = (1+F)*a / (a+b + F*(a+c))
И в зависимости от значения F приближается к одному либо к другому варианту.


Excel 2003 EN, 2013 EN

Сообщение отредактировал Формуляр - Понедельник, 17.09.2012, 22:55
 
Ответить
Сообщение
Quote (Alex_ST)
Но ты настолько углубился в тему лингвистического анализа вообще и нечёткого поиска в частности, что твой лексикон стал не понятен простым смертным

Да никакого там специального лексикона нету - это всё от косноязычности. smile
Постараюсь привести код и комментарии в приличный вид.

Что касается "лишних" и "недостающих":
text1 - это образец для сравнения
text2 - это проверяемая строка, которую мы сравниваем с образцом.
Все диады этих строк в результате раскладываем на 3 кучки:
a) совпадающие
b) "недостающие", которые есть в образце, но отсутствуют в проверяемой строке
c) "лишние", которые есть в проверяемой строке, но отсутствуют в образце
Первоначально метрика определялась как доля совпадающих диад в их общем количестве.
Ms = 2*a / (a+b + a+c)
и была симметрична, т.е. ей было пофиг, которая строка, проверяемая, которые диады "лишние", которые "недостающие".
Для поиска по ключ. словам больше подходит другая метрика
Ma = a / (a+b)
которая определяет долю диад образца(text1), найденных в проверяемой строке (text2). Тут вот и возникают эти различия.
Ну а метрика в общем виде выглядит так:
M = (1+F)*a / (a+b + F*(a+c))
И в зависимости от значения F приближается к одному либо к другому варианту.

Автор - Формуляр
Дата добавления - 17.09.2012 в 22:11
Формуляр Дата: Понедельник, 17.09.2012, 22:47 | Сообщение № 103
Группа: Друзья
Ранг: Ветеран
Сообщений: 832
Репутация: 255 ±
Замечаний: 0% ±

Excel 2003, 2013
Quote (nerv)
стоит в примере заменить Пусконаладочная компания "ПУСК" на Пусконаладочная компания "ПУСК" добавим еще немного слов и функция перестанет работать
Стоит уменьшить коэффициент F, например, до 0.1 и функция "заработает" снова.
It's magic! biggrin

Она и так нормально работает, просто метрика сходства оказывается ниже заданного предела 20%.

Quote (nerv)
Более того, исходя из аргумента выше, ставлю под сомнение надобность F = 1. Считаю, что вся эта метрика сводиться к "вхождение меньшей строки в большую".

Метрика (как явствует из названия темы) предназначена для равнозначного сравнения строк, а не для поиска по ключевым словам. Более того, она предназначалась, не побоюсь признаться, для поиска предложений сходных по смыслу. Это - разные задачи.
Тема поиска нужных слов в списке возникла как побочное применение и для этого моя ф-ция подходила плохо. До недавнего времени. Но теперь, вроде, и под эту задачу удалось её приспособить.


Excel 2003 EN, 2013 EN

Сообщение отредактировал Формуляр - Понедельник, 17.09.2012, 22:56
 
Ответить
Сообщение
Quote (nerv)
стоит в примере заменить Пусконаладочная компания "ПУСК" на Пусконаладочная компания "ПУСК" добавим еще немного слов и функция перестанет работать
Стоит уменьшить коэффициент F, например, до 0.1 и функция "заработает" снова.
It's magic! biggrin

Она и так нормально работает, просто метрика сходства оказывается ниже заданного предела 20%.

Quote (nerv)
Более того, исходя из аргумента выше, ставлю под сомнение надобность F = 1. Считаю, что вся эта метрика сводиться к "вхождение меньшей строки в большую".

Метрика (как явствует из названия темы) предназначена для равнозначного сравнения строк, а не для поиска по ключевым словам. Более того, она предназначалась, не побоюсь признаться, для поиска предложений сходных по смыслу. Это - разные задачи.
Тема поиска нужных слов в списке возникла как побочное применение и для этого моя ф-ция подходила плохо. До недавнего времени. Но теперь, вроде, и под эту задачу удалось её приспособить.

Автор - Формуляр
Дата добавления - 17.09.2012 в 22:47
Паттттт Дата: Вторник, 18.09.2012, 10:29 | Сообщение № 104
Группа: Заблокированные
Ранг: Новичок
Сообщений: 43
Репутация: -17 ±
Замечаний: 100% ±

Формуляр
Посмотрел твою функцию - работает отлично! Но почему-то аналогом слову АКТИ-Мастер ставит Интерактив (смотри файл в прикреплении) Формуляр
Посмотрел твою функцию - работает отлично! Но почему-то аналогом слову АКТИ-Мастер ставит Интерактив (смотри файл в прикреплении) И не только ему.
К сообщению приложен файл: 0833192.rar (41.0 Kb)


Сообщение отредактировал Паттттт - Вторник, 18.09.2012, 10:31
 
Ответить
СообщениеФормуляр
Посмотрел твою функцию - работает отлично! Но почему-то аналогом слову АКТИ-Мастер ставит Интерактив (смотри файл в прикреплении) Формуляр
Посмотрел твою функцию - работает отлично! Но почему-то аналогом слову АКТИ-Мастер ставит Интерактив (смотри файл в прикреплении) И не только ему.

Автор - Паттттт
Дата добавления - 18.09.2012 в 10:29
Паттттт Дата: Вторник, 18.09.2012, 10:53 | Сообщение № 105
Группа: Заблокированные
Ранг: Новичок
Сообщений: 43
Репутация: -17 ±
Замечаний: 100% ±

Формуляр
Пожалуйста, попробуй объединить твою функцию с FuzzyVlookup.
 
Ответить
СообщениеФормуляр
Пожалуйста, попробуй объединить твою функцию с FuzzyVlookup.

Автор - Паттттт
Дата добавления - 18.09.2012 в 10:53
Паттттт Дата: Вторник, 18.09.2012, 11:22 | Сообщение № 106
Группа: Заблокированные
Ранг: Новичок
Сообщений: 43
Репутация: -17 ±
Замечаний: 100% ±

Формуляр
При уменьшении F результаты твоей функции стали ещё лучше.
 
Ответить
СообщениеФормуляр
При уменьшении F результаты твоей функции стали ещё лучше.

Автор - Паттттт
Дата добавления - 18.09.2012 в 11:22
Pelena Дата: Вторник, 18.09.2012, 11:58 | Сообщение № 107
Группа: Админы
Ранг: Местный житель
Сообщений: 19187
Репутация: 4421 ±
Замечаний: ±

Excel 365 & Mac Excel
Quote (nerv)
эта ветка для ГОТОВЫХ или почти готовых алгоритмов

Согласна

Паттттт, Александр (Формуляр) не обязан подгонять свою функцию под Ваши частные нужды. Не будьте так навязчивы. ЕСЛИ он захочет Вам помочь, то поможет без пятикратных напоминаний


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщение
Quote (nerv)
эта ветка для ГОТОВЫХ или почти готовых алгоритмов

Согласна

Паттттт, Александр (Формуляр) не обязан подгонять свою функцию под Ваши частные нужды. Не будьте так навязчивы. ЕСЛИ он захочет Вам помочь, то поможет без пятикратных напоминаний

Автор - Pelena
Дата добавления - 18.09.2012 в 11:58
Паттттт Дата: Вторник, 18.09.2012, 12:16 | Сообщение № 108
Группа: Заблокированные
Ранг: Новичок
Сообщений: 43
Репутация: -17 ±
Замечаний: 100% ±

Quote (Pelena)
Паттттт, Александр (Формуляр) не обязан подгонять свою функцию под Ваши частные нужды. Не будьте так навязчивы. ЕСЛИ он захочет Вам помочь, то поможет без пятикратных напоминаний

А я и не навязываю. К тому же это не частные нужды, - а общие, так как очень часто приходится сравнивать текст написанный по-разному разными людьми, обозначающий одно и тоже. И моя идея объединения основана на том, что обе функции чем-то дополняют друг друга, и если их объединить, то объединённая функция давала бы почти 100% результат. И другие тоже не только коды писали, но и проблемы ставили. А я значит не могу? И потом тема создана, чтобы решениями могли пользоваться те, кто сам кодов написать не может. Но чтобы пользоваться, - надо понимать их. К тому же, как тут писали, эти решения ещё есть куда дорабатывать для общих целей, и говорили о возможности и даже необходимостивысказывания своих идей. И не было сказано, что идеи не могут высказывать те, кто не может сам написать код. Так что я просто поставил проблему, - причём ОБЩУЮ проблему (неужели тебе не приходилось сравнивать списки по 1000 строк в каждом, при том, что фразы в них совпадают не на 100% (как в моём примере (файл из поста 126). И при наличии иногда даже одной ошибки в сравнении результат может оказаться весьма ошибочным (в плане того, для чего нужно провести это сравнение). Поэтому я и предлагаю идею-проблему, - чтобы добиться практически 100% результата работы Ваших решений.


Сообщение отредактировал Паттттт - Вторник, 18.09.2012, 12:44
 
Ответить
Сообщение
Quote (Pelena)
Паттттт, Александр (Формуляр) не обязан подгонять свою функцию под Ваши частные нужды. Не будьте так навязчивы. ЕСЛИ он захочет Вам помочь, то поможет без пятикратных напоминаний

А я и не навязываю. К тому же это не частные нужды, - а общие, так как очень часто приходится сравнивать текст написанный по-разному разными людьми, обозначающий одно и тоже. И моя идея объединения основана на том, что обе функции чем-то дополняют друг друга, и если их объединить, то объединённая функция давала бы почти 100% результат. И другие тоже не только коды писали, но и проблемы ставили. А я значит не могу? И потом тема создана, чтобы решениями могли пользоваться те, кто сам кодов написать не может. Но чтобы пользоваться, - надо понимать их. К тому же, как тут писали, эти решения ещё есть куда дорабатывать для общих целей, и говорили о возможности и даже необходимостивысказывания своих идей. И не было сказано, что идеи не могут высказывать те, кто не может сам написать код. Так что я просто поставил проблему, - причём ОБЩУЮ проблему (неужели тебе не приходилось сравнивать списки по 1000 строк в каждом, при том, что фразы в них совпадают не на 100% (как в моём примере (файл из поста 126). И при наличии иногда даже одной ошибки в сравнении результат может оказаться весьма ошибочным (в плане того, для чего нужно провести это сравнение). Поэтому я и предлагаю идею-проблему, - чтобы добиться практически 100% результата работы Ваших решений.

Автор - Паттттт
Дата добавления - 18.09.2012 в 12:16
Паттттт Дата: Вторник, 18.09.2012, 12:24 | Сообщение № 109
Группа: Заблокированные
Ранг: Новичок
Сообщений: 43
Репутация: -17 ±
Замечаний: 100% ±

Quote (nerv)
если ты до сих пор не заметил, то эта ветка для ГОТОВЫХ или почти готовых алгоритмов, а не для решения твоих проблем

Если ты до сих пор не заметил, то ветка только называется как ГОТОВЫЕ РЕШЕНИЯ, а на самом деле тут как раз именно и решаются разного рода проблемы. Причём я не навязываю решать мою ЧАСТНУЮ проблему. Я ставлю такую же общую проблему, как в начале топа Формуляр и Алекс, которые потом привели функции для решения проблем с возможностью доработки этих функций и высказывания идей, - как их доработать.


Сообщение отредактировал Паттттт - Вторник, 18.09.2012, 12:26
 
Ответить
Сообщение
Quote (nerv)
если ты до сих пор не заметил, то эта ветка для ГОТОВЫХ или почти готовых алгоритмов, а не для решения твоих проблем

Если ты до сих пор не заметил, то ветка только называется как ГОТОВЫЕ РЕШЕНИЯ, а на самом деле тут как раз именно и решаются разного рода проблемы. Причём я не навязываю решать мою ЧАСТНУЮ проблему. Я ставлю такую же общую проблему, как в начале топа Формуляр и Алекс, которые потом привели функции для решения проблем с возможностью доработки этих функций и высказывания идей, - как их доработать.

Автор - Паттттт
Дата добавления - 18.09.2012 в 12:24
Формуляр Дата: Вторник, 18.09.2012, 15:00 | Сообщение № 110
Группа: Друзья
Ранг: Ветеран
Сообщений: 832
Репутация: 255 ±
Замечаний: 0% ±

Excel 2003, 2013
Serge_007,
тему закрывать, конечно, не надо, она далеко не исчерпана.
А вот уши надрать любителям пофлудить, может и стоит.

Quote (Паттттт)
почему-то аналогом слову АКТИ-Мастер ставит Интерактив

АКТИ-Мастер - Закрытое акционерное общество"АКТИ-Мастер": 8*2 совпадающих диад из 40
АКТИ-Мастер - ООО "КБ Интерактив": 5*2 совпадающих диад из 20
И где сходство больше?
При F=0 будет работать как поиск по ключевым словам. Видимо, под ваши задачи это подходит больше.

PS. Да! Там к тому же диапазон поиска не дотягивался. biggrin


Excel 2003 EN, 2013 EN

Сообщение отредактировал Формуляр - Вторник, 18.09.2012, 15:08
 
Ответить
СообщениеSerge_007,
тему закрывать, конечно, не надо, она далеко не исчерпана.
А вот уши надрать любителям пофлудить, может и стоит.

Quote (Паттттт)
почему-то аналогом слову АКТИ-Мастер ставит Интерактив

АКТИ-Мастер - Закрытое акционерное общество"АКТИ-Мастер": 8*2 совпадающих диад из 40
АКТИ-Мастер - ООО "КБ Интерактив": 5*2 совпадающих диад из 20
И где сходство больше?
При F=0 будет работать как поиск по ключевым словам. Видимо, под ваши задачи это подходит больше.

PS. Да! Там к тому же диапазон поиска не дотягивался. biggrin

Автор - Формуляр
Дата добавления - 18.09.2012 в 15:00
Паттттт Дата: Вторник, 18.09.2012, 15:16 | Сообщение № 111
Группа: Заблокированные
Ранг: Новичок
Сообщений: 43
Репутация: -17 ±
Замечаний: 100% ±

Quote (Формуляр)

Цитата, Паттттт писал(а):почему-то аналогом слову АКТИ-Мастер ставит Интерактив
АКТИ-Мастер - Закрытое акционерное общество"АКТИ-Мастер": 8*2 совпадающих диад из 40
АКТИ-Мастер - ООО "КБ Интерактив": 5*2 совпадающих диад из 20
И где сходство больше?
При F=0 будет работать как поиск по ключевым словам. Видимо, под ваши задачи это подходит больше.

PS. Да! Там к тому же диапазон поиска не дотягивался. Формуляр

Большое тебе спасибо.

Я хочу добавить (чисто как своё мнение), что надо бы попробовать объединить твою функцию и FuzzyVlookup (чтобы существовали две функци - твоя и объединённая. Они будут использоваться для разных задач).
 
Ответить
Сообщение
Quote (Формуляр)

Цитата, Паттттт писал(а):почему-то аналогом слову АКТИ-Мастер ставит Интерактив
АКТИ-Мастер - Закрытое акционерное общество"АКТИ-Мастер": 8*2 совпадающих диад из 40
АКТИ-Мастер - ООО "КБ Интерактив": 5*2 совпадающих диад из 20
И где сходство больше?
При F=0 будет работать как поиск по ключевым словам. Видимо, под ваши задачи это подходит больше.

PS. Да! Там к тому же диапазон поиска не дотягивался. Формуляр

Большое тебе спасибо.

Я хочу добавить (чисто как своё мнение), что надо бы попробовать объединить твою функцию и FuzzyVlookup (чтобы существовали две функци - твоя и объединённая. Они будут использоваться для разных задач).

Автор - Паттттт
Дата добавления - 18.09.2012 в 15:16
Формуляр Дата: Вторник, 18.09.2012, 15:51 | Сообщение № 112
Группа: Друзья
Ранг: Ветеран
Сообщений: 832
Репутация: 255 ±
Замечаний: 0% ±

Excel 2003, 2013
Quote (Паттттт)
Я хочу добавить (чисто как своё мнение), что надо бы попробовать объединить твою функцию и FuzzyVlookup (чтобы существовали две функци - твоя и объединённая. Они будут использоваться для разных задач).

Предложение абсурдное.
Чего там можно объединять? Они основаны на разных принципах.
Использовать их для разных задач и так никто не запрещает.


Excel 2003 EN, 2013 EN
 
Ответить
Сообщение
Quote (Паттттт)
Я хочу добавить (чисто как своё мнение), что надо бы попробовать объединить твою функцию и FuzzyVlookup (чтобы существовали две функци - твоя и объединённая. Они будут использоваться для разных задач).

Предложение абсурдное.
Чего там можно объединять? Они основаны на разных принципах.
Использовать их для разных задач и так никто не запрещает.

Автор - Формуляр
Дата добавления - 18.09.2012 в 15:51
Паттттт Дата: Вторник, 18.09.2012, 16:06 | Сообщение № 113
Группа: Заблокированные
Ранг: Новичок
Сообщений: 43
Репутация: -17 ±
Замечаний: 100% ±

Quote (Формуляр)
Я хочу добавить (чисто как своё мнение), что надо бы попробовать объединить твою функцию и FuzzyVlookup (чтобы существовали две функци - твоя и объединённая. Они будут использоваться для разных задач).
Предложение абсурдное.
Чего там можно объединять? Они основаны на разных принципах.
Использовать их для разных задач и так никто не запрещает.Формуляр

Так я и считаю нужным объединить именно принципы! Т.е. совместить оба принципа в одной функции. Или так нельзя?
 
Ответить
Сообщение
Quote (Формуляр)
Я хочу добавить (чисто как своё мнение), что надо бы попробовать объединить твою функцию и FuzzyVlookup (чтобы существовали две функци - твоя и объединённая. Они будут использоваться для разных задач).
Предложение абсурдное.
Чего там можно объединять? Они основаны на разных принципах.
Использовать их для разных задач и так никто не запрещает.Формуляр

Так я и считаю нужным объединить именно принципы! Т.е. совместить оба принципа в одной функции. Или так нельзя?

Автор - Паттттт
Дата добавления - 18.09.2012 в 16:06
Alex_ST Дата: Вторник, 18.09.2012, 17:18 | Сообщение № 114
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3209
Репутация: 609 ±
Замечаний: 0% ±

2003
Серёга, просто тема явно не доросла ещё до ветки "Готовые решения".
Тут идёт доработка, дискуссия, обмен идеями, …
Может, перенести её в "Вопросы"
Всё равно найти зерно истины в почти полутора сотнях постов и пере десятков выложенных файлов практически невозможно.



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеСерёга, просто тема явно не доросла ещё до ветки "Готовые решения".
Тут идёт доработка, дискуссия, обмен идеями, …
Может, перенести её в "Вопросы"
Всё равно найти зерно истины в почти полутора сотнях постов и пере десятков выложенных файлов практически невозможно.

Автор - Alex_ST
Дата добавления - 18.09.2012 в 17:18
Формуляр Дата: Вторник, 18.09.2012, 17:26 | Сообщение № 115
Группа: Друзья
Ранг: Ветеран
Сообщений: 832
Репутация: 255 ±
Замечаний: 0% ±

Excel 2003, 2013
Quote (Паттттт)
Так я и считаю нужным объединить именно принципы! Т.е. совместить оба принципа в одной функции. Или так нельзя?

Можно, если знаешь как. В чём конкретно предложение?
Пока все "идеи" в стиле "Надо вам, мыши, ёжиками стать."


Excel 2003 EN, 2013 EN
 
Ответить
Сообщение
Quote (Паттттт)
Так я и считаю нужным объединить именно принципы! Т.е. совместить оба принципа в одной функции. Или так нельзя?

Можно, если знаешь как. В чём конкретно предложение?
Пока все "идеи" в стиле "Надо вам, мыши, ёжиками стать."

Автор - Формуляр
Дата добавления - 18.09.2012 в 17:26
Паттттт Дата: Вторник, 18.09.2012, 17:29 | Сообщение № 116
Группа: Заблокированные
Ранг: Новичок
Сообщений: 43
Репутация: -17 ±
Замечаний: 100% ±

Alex_ST, Смотрел мою функцию?
 
Ответить
СообщениеAlex_ST, Смотрел мою функцию?

Автор - Паттттт
Дата добавления - 18.09.2012 в 17:29
Формуляр Дата: Вторник, 18.09.2012, 17:33 | Сообщение № 117
Группа: Друзья
Ранг: Ветеран
Сообщений: 832
Репутация: 255 ±
Замечаний: 0% ±

Excel 2003, 2013
Alex_ST,
про "обмен идеями" это тонко подмечено! biggrin

Quote (Alex_ST)
Всё равно найти зерно истины в почти полутора сотнях постов и пере десятков выложенных файлов практически невозможно.

Не согласен. Практически любое из вложений это готовое решение - бери и пользуйся.
А то, что возникают альтернативные варианты и всякие усовершенствования - это естественно.

Вот от флуда, действительно, неплохо бы почистить.


Excel 2003 EN, 2013 EN
 
Ответить
СообщениеAlex_ST,
про "обмен идеями" это тонко подмечено! biggrin

Quote (Alex_ST)
Всё равно найти зерно истины в почти полутора сотнях постов и пере десятков выложенных файлов практически невозможно.

Не согласен. Практически любое из вложений это готовое решение - бери и пользуйся.
А то, что возникают альтернативные варианты и всякие усовершенствования - это естественно.

Вот от флуда, действительно, неплохо бы почистить.

Автор - Формуляр
Дата добавления - 18.09.2012 в 17:33
Паттттт Дата: Вторник, 18.09.2012, 17:48 | Сообщение № 118
Группа: Заблокированные
Ранг: Новичок
Сообщений: 43
Репутация: -17 ±
Замечаний: 100% ±

Quote (Формуляр)
Цитата, Паттттт писал(а):Так я и считаю нужным объединить именно принципы! Т.е. совместить оба принципа в одной функции. Или так нельзя?
Можно, если знаешь как. В чём конкретно предложение?
Пока все "идеи" в стиле "Надо вам, мыши, ёжиками стать."Формуляр

Как я уже писал, я очень плохо разбираюсь в VBA
У Вас же, Алекса и Nerv прекрасно получается составлять коды в VBA
Поэтому я просто предложил объединить принципы обоих функций. Просто анализируя обе функции, я выяснил, что они друг друга дополняют. Я думаю, что надо, чтобы в функции реализовывался принцип сравнения по:
1. сравнение на предмет полного совпадениятекста в стоблцах;
2. если не совпало - принципы анализа по дидам (с выборным Q как у Вас, Формуляр), по ключевым словам (у Вас, Формуляр), первым 3-4 и/или последним 3-4 буквам каждого текста (т.е. поиск искомого текста в столбце по его первым или последним буквам (в количестве 3-4, можно сделать выборную переменную), по словам (ну например северо-запад ищется поочереди сначала по слову север, затем - по слову запад), по расшифровке (МГУ надо искать как по сокращённому варианту (МГУ), так и по полному (Московский Государственный Университет)(с учётом падежей), с возможностью поиска по точному сопадению искомого слова со словом из столбца, в котором ищем (скажем если мы ищем КС, то нужно иметь возможность задать совпадение так, чтобы оно совпало с ООО "КС", а не с, например, ОАО "Ксенофон"), с отбросом в обоих текстах (искомом и столбце, в котором ищем) знаков препинания и лишних пробелов (т.е. фразы сравниваются так, будто в них удалены все знаки препинания и лишние пробелы).
Вы же всё-равно пишете, что все решения надо дорабатывать.
Может что-то получится с учётом моего мнения.
 
Ответить
Сообщение
Quote (Формуляр)
Цитата, Паттттт писал(а):Так я и считаю нужным объединить именно принципы! Т.е. совместить оба принципа в одной функции. Или так нельзя?
Можно, если знаешь как. В чём конкретно предложение?
Пока все "идеи" в стиле "Надо вам, мыши, ёжиками стать."Формуляр

Как я уже писал, я очень плохо разбираюсь в VBA
У Вас же, Алекса и Nerv прекрасно получается составлять коды в VBA
Поэтому я просто предложил объединить принципы обоих функций. Просто анализируя обе функции, я выяснил, что они друг друга дополняют. Я думаю, что надо, чтобы в функции реализовывался принцип сравнения по:
1. сравнение на предмет полного совпадениятекста в стоблцах;
2. если не совпало - принципы анализа по дидам (с выборным Q как у Вас, Формуляр), по ключевым словам (у Вас, Формуляр), первым 3-4 и/или последним 3-4 буквам каждого текста (т.е. поиск искомого текста в столбце по его первым или последним буквам (в количестве 3-4, можно сделать выборную переменную), по словам (ну например северо-запад ищется поочереди сначала по слову север, затем - по слову запад), по расшифровке (МГУ надо искать как по сокращённому варианту (МГУ), так и по полному (Московский Государственный Университет)(с учётом падежей), с возможностью поиска по точному сопадению искомого слова со словом из столбца, в котором ищем (скажем если мы ищем КС, то нужно иметь возможность задать совпадение так, чтобы оно совпало с ООО "КС", а не с, например, ОАО "Ксенофон"), с отбросом в обоих текстах (искомом и столбце, в котором ищем) знаков препинания и лишних пробелов (т.е. фразы сравниваются так, будто в них удалены все знаки препинания и лишние пробелы).
Вы же всё-равно пишете, что все решения надо дорабатывать.
Может что-то получится с учётом моего мнения.

Автор - Паттттт
Дата добавления - 18.09.2012 в 17:48
Формуляр Дата: Пятница, 21.09.2012, 10:17 | Сообщение № 119
Группа: Друзья
Ранг: Ветеран
Сообщений: 832
Репутация: 255 ±
Замечаний: 0% ±

Excel 2003, 2013
Quote (Паттттт)
я просто предложил объединить принципы обоих функций
Принципы "просто" не объединяются.
Разные подходы дают разные метрики.
По длине больше подходит огурец, а по толщине - баклажан. И как их дальше объединять?


Excel 2003 EN, 2013 EN
 
Ответить
Сообщение
Quote (Паттттт)
я просто предложил объединить принципы обоих функций
Принципы "просто" не объединяются.
Разные подходы дают разные метрики.
По длине больше подходит огурец, а по толщине - баклажан. И как их дальше объединять?

Автор - Формуляр
Дата добавления - 21.09.2012 в 10:17
Serge_007 Дата: Пятница, 21.09.2012, 10:26 | Сообщение № 120
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
[offtop]
Цитата (Формуляр)
Как их дальше объединять?

Очень просто
Баклажан и огурец = багурец
Персик и дыня = пердыня
Мандарин и дыня = мандыня
Семечки и помидоры = семидоры
и т.д.

Comedy Club ©[/offtop]


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение[offtop]
Цитата (Формуляр)
Как их дальше объединять?

Очень просто
Баклажан и огурец = багурец
Персик и дыня = пердыня
Мандарин и дыня = мандыня
Семечки и помидоры = семидоры
и т.д.

Comedy Club ©[/offtop]

Автор - Serge_007
Дата добавления - 21.09.2012 в 10:26
Мир MS Excel » Вопросы и решения » Готовые решения » Простая метрика сходства текстовых строк (Нечеткий поиск - варианты решения)
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!