Но ты настолько углубился в тему лингвистического анализа вообще и нечёткого поиска в частности, что твой лексикон стал не понятен простым смертным
Да никакого там специального лексикона нету - это всё от косноязычности. Постараюсь привести код и комментарии в приличный вид.
Что касается "лишних" и "недостающих": 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 приближается к одному либо к другому варианту.
Quote (Alex_ST)
Но ты настолько углубился в тему лингвистического анализа вообще и нечёткого поиска в частности, что твой лексикон стал не понятен простым смертным
Да никакого там специального лексикона нету - это всё от косноязычности. Постараюсь привести код и комментарии в приличный вид.
Что касается "лишних" и "недостающих": 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
стоит в примере заменить Пусконаладочная компания "ПУСК" на Пусконаладочная компания "ПУСК" добавим еще немного слов и функция перестанет работать
Стоит уменьшить коэффициент F, например, до 0.1 и функция "заработает" снова. It's magic!
Она и так нормально работает, просто метрика сходства оказывается ниже заданного предела 20%.
Quote (nerv)
Более того, исходя из аргумента выше, ставлю под сомнение надобность F = 1. Считаю, что вся эта метрика сводиться к "вхождение меньшей строки в большую".
Метрика (как явствует из названия темы) предназначена для равнозначного сравнения строк, а не для поиска по ключевым словам. Более того, она предназначалась, не побоюсь признаться, для поиска предложений сходных по смыслу. Это - разные задачи. Тема поиска нужных слов в списке возникла как побочное применение и для этого моя ф-ция подходила плохо. До недавнего времени. Но теперь, вроде, и под эту задачу удалось её приспособить.
Quote (nerv)
стоит в примере заменить Пусконаладочная компания "ПУСК" на Пусконаладочная компания "ПУСК" добавим еще немного слов и функция перестанет работать
Стоит уменьшить коэффициент F, например, до 0.1 и функция "заработает" снова. It's magic!
Она и так нормально работает, просто метрика сходства оказывается ниже заданного предела 20%.
Quote (nerv)
Более того, исходя из аргумента выше, ставлю под сомнение надобность F = 1. Считаю, что вся эта метрика сводиться к "вхождение меньшей строки в большую".
Метрика (как явствует из названия темы) предназначена для равнозначного сравнения строк, а не для поиска по ключевым словам. Более того, она предназначалась, не побоюсь признаться, для поиска предложений сходных по смыслу. Это - разные задачи. Тема поиска нужных слов в списке возникла как побочное применение и для этого моя ф-ция подходила плохо. До недавнего времени. Но теперь, вроде, и под эту задачу удалось её приспособить.Формуляр
Excel 2003 EN, 2013 EN
Сообщение отредактировал Формуляр - Понедельник, 17.09.2012, 22:56
Формуляр Посмотрел твою функцию - работает отлично! Но почему-то аналогом слову АКТИ-Мастер ставит Интерактив (смотри файл в прикреплении) Формуляр Посмотрел твою функцию - работает отлично! Но почему-то аналогом слову АКТИ-Мастер ставит Интерактив (смотри файл в прикреплении) И не только ему.
Формуляр Посмотрел твою функцию - работает отлично! Но почему-то аналогом слову АКТИ-Мастер ставит Интерактив (смотри файл в прикреплении) Формуляр Посмотрел твою функцию - работает отлично! Но почему-то аналогом слову АКТИ-Мастер ставит Интерактив (смотри файл в прикреплении) И не только ему.Паттттт
эта ветка для ГОТОВЫХ или почти готовых алгоритмов
Согласна
Паттттт, Александр (Формуляр) не обязан подгонять свою функцию под Ваши частные нужды. Не будьте так навязчивы. ЕСЛИ он захочет Вам помочь, то поможет без пятикратных напоминаний
Quote (nerv)
эта ветка для ГОТОВЫХ или почти готовых алгоритмов
Согласна
Паттттт, Александр (Формуляр) не обязан подгонять свою функцию под Ваши частные нужды. Не будьте так навязчивы. ЕСЛИ он захочет Вам помочь, то поможет без пятикратных напоминанийPelena
"Черт возьми, Холмс! Но как??!!" Ю-money 41001765434816
Паттттт, Александр (Формуляр) не обязан подгонять свою функцию под Ваши частные нужды. Не будьте так навязчивы. ЕСЛИ он захочет Вам помочь, то поможет без пятикратных напоминаний
А я и не навязываю. К тому же это не частные нужды, - а общие, так как очень часто приходится сравнивать текст написанный по-разному разными людьми, обозначающий одно и тоже. И моя идея объединения основана на том, что обе функции чем-то дополняют друг друга, и если их объединить, то объединённая функция давала бы почти 100% результат. И другие тоже не только коды писали, но и проблемы ставили. А я значит не могу? И потом тема создана, чтобы решениями могли пользоваться те, кто сам кодов написать не может. Но чтобы пользоваться, - надо понимать их. К тому же, как тут писали, эти решения ещё есть куда дорабатывать для общих целей, и говорили о возможности и даже необходимостивысказывания своих идей. И не было сказано, что идеи не могут высказывать те, кто не может сам написать код. Так что я просто поставил проблему, - причём ОБЩУЮ проблему (неужели тебе не приходилось сравнивать списки по 1000 строк в каждом, при том, что фразы в них совпадают не на 100% (как в моём примере (файл из поста 126). И при наличии иногда даже одной ошибки в сравнении результат может оказаться весьма ошибочным (в плане того, для чего нужно провести это сравнение). Поэтому я и предлагаю идею-проблему, - чтобы добиться практически 100% результата работы Ваших решений.
Quote (Pelena)
Паттттт, Александр (Формуляр) не обязан подгонять свою функцию под Ваши частные нужды. Не будьте так навязчивы. ЕСЛИ он захочет Вам помочь, то поможет без пятикратных напоминаний
А я и не навязываю. К тому же это не частные нужды, - а общие, так как очень часто приходится сравнивать текст написанный по-разному разными людьми, обозначающий одно и тоже. И моя идея объединения основана на том, что обе функции чем-то дополняют друг друга, и если их объединить, то объединённая функция давала бы почти 100% результат. И другие тоже не только коды писали, но и проблемы ставили. А я значит не могу? И потом тема создана, чтобы решениями могли пользоваться те, кто сам кодов написать не может. Но чтобы пользоваться, - надо понимать их. К тому же, как тут писали, эти решения ещё есть куда дорабатывать для общих целей, и говорили о возможности и даже необходимостивысказывания своих идей. И не было сказано, что идеи не могут высказывать те, кто не может сам написать код. Так что я просто поставил проблему, - причём ОБЩУЮ проблему (неужели тебе не приходилось сравнивать списки по 1000 строк в каждом, при том, что фразы в них совпадают не на 100% (как в моём примере (файл из поста 126). И при наличии иногда даже одной ошибки в сравнении результат может оказаться весьма ошибочным (в плане того, для чего нужно провести это сравнение). Поэтому я и предлагаю идею-проблему, - чтобы добиться практически 100% результата работы Ваших решений.Паттттт
Сообщение отредактировал Паттттт - Вторник, 18.09.2012, 12:44
если ты до сих пор не заметил, то эта ветка для ГОТОВЫХ или почти готовых алгоритмов, а не для решения твоих проблем
Если ты до сих пор не заметил, то ветка только называется как ГОТОВЫЕ РЕШЕНИЯ, а на самом деле тут как раз именно и решаются разного рода проблемы. Причём я не навязываю решать мою ЧАСТНУЮ проблему. Я ставлю такую же общую проблему, как в начале топа Формуляр и Алекс, которые потом привели функции для решения проблем с возможностью доработки этих функций и высказывания идей, - как их доработать.
Quote (nerv)
если ты до сих пор не заметил, то эта ветка для ГОТОВЫХ или почти готовых алгоритмов, а не для решения твоих проблем
Если ты до сих пор не заметил, то ветка только называется как ГОТОВЫЕ РЕШЕНИЯ, а на самом деле тут как раз именно и решаются разного рода проблемы. Причём я не навязываю решать мою ЧАСТНУЮ проблему. Я ставлю такую же общую проблему, как в начале топа Формуляр и Алекс, которые потом привели функции для решения проблем с возможностью доработки этих функций и высказывания идей, - как их доработать.Паттттт
Сообщение отредактировал Паттттт - Вторник, 18.09.2012, 12:26
Serge_007, тему закрывать, конечно, не надо, она далеко не исчерпана. А вот уши надрать любителям пофлудить, может и стоит.
Quote (Паттттт)
почему-то аналогом слову АКТИ-Мастер ставит Интерактив
АКТИ-Мастер - Закрытое акционерное общество"АКТИ-Мастер": 8*2 совпадающих диад из 40 АКТИ-Мастер - ООО "КБ Интерактив": 5*2 совпадающих диад из 20 И где сходство больше? При F=0 будет работать как поиск по ключевым словам. Видимо, под ваши задачи это подходит больше.
PS. Да! Там к тому же диапазон поиска не дотягивался.
Serge_007, тему закрывать, конечно, не надо, она далеко не исчерпана. А вот уши надрать любителям пофлудить, может и стоит.
Quote (Паттттт)
почему-то аналогом слову АКТИ-Мастер ставит Интерактив
АКТИ-Мастер - Закрытое акционерное общество"АКТИ-Мастер": 8*2 совпадающих диад из 40 АКТИ-Мастер - ООО "КБ Интерактив": 5*2 совпадающих диад из 20 И где сходство больше? При F=0 будет работать как поиск по ключевым словам. Видимо, под ваши задачи это подходит больше.
PS. Да! Там к тому же диапазон поиска не дотягивался. Формуляр
Excel 2003 EN, 2013 EN
Сообщение отредактировал Формуляр - Вторник, 18.09.2012, 15:08
Цитата, Паттттт писал(а):почему-то аналогом слову АКТИ-Мастер ставит Интерактив АКТИ-Мастер - Закрытое акционерное общество"АКТИ-Мастер": 8*2 совпадающих диад из 40 АКТИ-Мастер - ООО "КБ Интерактив": 5*2 совпадающих диад из 20 И где сходство больше? При F=0 будет работать как поиск по ключевым словам. Видимо, под ваши задачи это подходит больше.
PS. Да! Там к тому же диапазон поиска не дотягивался. Формуляр
Большое тебе спасибо.
Я хочу добавить (чисто как своё мнение), что надо бы попробовать объединить твою функцию и FuzzyVlookup (чтобы существовали две функци - твоя и объединённая. Они будут использоваться для разных задач).
Quote (Формуляр)
Цитата, Паттттт писал(а):почему-то аналогом слову АКТИ-Мастер ставит Интерактив АКТИ-Мастер - Закрытое акционерное общество"АКТИ-Мастер": 8*2 совпадающих диад из 40 АКТИ-Мастер - ООО "КБ Интерактив": 5*2 совпадающих диад из 20 И где сходство больше? При F=0 будет работать как поиск по ключевым словам. Видимо, под ваши задачи это подходит больше.
PS. Да! Там к тому же диапазон поиска не дотягивался. Формуляр
Большое тебе спасибо.
Я хочу добавить (чисто как своё мнение), что надо бы попробовать объединить твою функцию и FuzzyVlookup (чтобы существовали две функци - твоя и объединённая. Они будут использоваться для разных задач).Паттттт
Я хочу добавить (чисто как своё мнение), что надо бы попробовать объединить твою функцию и FuzzyVlookup (чтобы существовали две функци - твоя и объединённая. Они будут использоваться для разных задач).
Предложение абсурдное. Чего там можно объединять? Они основаны на разных принципах. Использовать их для разных задач и так никто не запрещает.
Quote (Паттттт)
Я хочу добавить (чисто как своё мнение), что надо бы попробовать объединить твою функцию и FuzzyVlookup (чтобы существовали две функци - твоя и объединённая. Они будут использоваться для разных задач).
Предложение абсурдное. Чего там можно объединять? Они основаны на разных принципах. Использовать их для разных задач и так никто не запрещает.Формуляр
Я хочу добавить (чисто как своё мнение), что надо бы попробовать объединить твою функцию и FuzzyVlookup (чтобы существовали две функци - твоя и объединённая. Они будут использоваться для разных задач). Предложение абсурдное. Чего там можно объединять? Они основаны на разных принципах. Использовать их для разных задач и так никто не запрещает.Формуляр
Так я и считаю нужным объединить именно принципы! Т.е. совместить оба принципа в одной функции. Или так нельзя?
Quote (Формуляр)
Я хочу добавить (чисто как своё мнение), что надо бы попробовать объединить твою функцию и FuzzyVlookup (чтобы существовали две функци - твоя и объединённая. Они будут использоваться для разных задач). Предложение абсурдное. Чего там можно объединять? Они основаны на разных принципах. Использовать их для разных задач и так никто не запрещает.Формуляр
Так я и считаю нужным объединить именно принципы! Т.е. совместить оба принципа в одной функции. Или так нельзя?Паттттт
Серёга, просто тема явно не доросла ещё до ветки "Готовые решения". Тут идёт доработка, дискуссия, обмен идеями, … Может, перенести её в "Вопросы" Всё равно найти зерно истины в почти полутора сотнях постов и пере десятков выложенных файлов практически невозможно.
Серёга, просто тема явно не доросла ещё до ветки "Готовые решения". Тут идёт доработка, дискуссия, обмен идеями, … Может, перенести её в "Вопросы" Всё равно найти зерно истины в почти полутора сотнях постов и пере десятков выложенных файлов практически невозможно.Alex_ST
Всё равно найти зерно истины в почти полутора сотнях постов и пере десятков выложенных файлов практически невозможно.
Не согласен. Практически любое из вложений это готовое решение - бери и пользуйся. А то, что возникают альтернативные варианты и всякие усовершенствования - это естественно.
Вот от флуда, действительно, неплохо бы почистить.
Alex_ST, про "обмен идеями" это тонко подмечено!
Quote (Alex_ST)
Всё равно найти зерно истины в почти полутора сотнях постов и пере десятков выложенных файлов практически невозможно.
Не согласен. Практически любое из вложений это готовое решение - бери и пользуйся. А то, что возникают альтернативные варианты и всякие усовершенствования - это естественно.
Вот от флуда, действительно, неплохо бы почистить.Формуляр
Цитата, Паттттт писал(а):Так я и считаю нужным объединить именно принципы! Т.е. совместить оба принципа в одной функции. Или так нельзя? Можно, если знаешь как. В чём конкретно предложение? Пока все "идеи" в стиле "Надо вам, мыши, ёжиками стать."Формуляр
Как я уже писал, я очень плохо разбираюсь в 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, можно сделать выборную переменную), по словам (ну например северо-запад ищется поочереди сначала по слову север, затем - по слову запад), по расшифровке (МГУ надо искать как по сокращённому варианту (МГУ), так и по полному (Московский Государственный Университет)(с учётом падежей), с возможностью поиска по точному сопадению искомого слова со словом из столбца, в котором ищем (скажем если мы ищем КС, то нужно иметь возможность задать совпадение так, чтобы оно совпало с ООО "КС", а не с, например, ОАО "Ксенофон"), с отбросом в обоих текстах (искомом и столбце, в котором ищем) знаков препинания и лишних пробелов (т.е. фразы сравниваются так, будто в них удалены все знаки препинания и лишние пробелы). Вы же всё-равно пишете, что все решения надо дорабатывать. Может что-то получится с учётом моего мнения.Паттттт
я просто предложил объединить принципы обоих функций
Принципы "просто" не объединяются. Разные подходы дают разные метрики. По длине больше подходит огурец, а по толщине - баклажан. И как их дальше объединять?
Quote (Паттттт)
я просто предложил объединить принципы обоих функций
Принципы "просто" не объединяются. Разные подходы дают разные метрики. По длине больше подходит огурец, а по толщине - баклажан. И как их дальше объединять?Формуляр