Нечеткое сопоставление, показатель достоверности, C#

Я пытаюсь рассчитать показатель достоверности того, что строка появляется в подмножестве гораздо большего набора.

Скажем, у меня есть 10 слов в исходном списке, и я сопоставляю новое слово со всеми 10 словами. Каждое совпадение возвращает оценку сходства. Я установил порог, чтобы игнорировать любую оценку сходства ниже 70%. Итак, в конце у меня осталось мое входное слово, возможно, совпадающее с 3 словами в моем списке.

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

  1. Категория 1 - сходство 70% - вероятность 33,3%.
  2. Категория 2 - сходство 75% - вероятность 33,3%.
  3. Категория 3 - сходство 80% - вероятность 33,3%.

((0,70) * (0,333)) + ((0,75) * (0,333)) + ((0,80) * (0,333)) = 75% достоверно.

Каков наилучший метод расчета уровней достоверности?

РЕДАКТИРОВАТЬ: Лучший образец по запросу

Оригинальный набор слов

  1. Привет
  2. Помощь
  3. Ад
  4. Проблема
  5. Мир
  6. Океан
  7. Животное
  8. Морковь
  9. Коричневый
  10. Чернить

Сопоставьте новое слово - Вертолет с исходным набором слов. Сопоставление возвращает 3 слова из исходного набора с оценкой сходства более 70%. Были возвращены следующие слова: 1. Привет — схожесть 70% 2. Помощь — схожесть 75% 3. Ад — схожесть 80%

Я хочу подсчитать балл, который покажет, насколько я уверен, что helpicopter соответствует возвращенным словам.

Ответ: на [ссылка] http://social.msdn.microsoft.com/Forums/en-US/sqlintegrationservices/thread/ff9fc38e-8ca3-4d9a-b505-dfbe37910b17


person zeencat    schedule 15.05.2012    source источник
comment
Не могли бы вы опубликовать исходную проблему? Нет особого смысла в том, что вы пытаетесь сделать без какой-либо информации.   -  person SimpleVar    schedule 15.05.2012
comment
В зависимости от вашего алгоритма проверки сходства, предполагая, что он вернет 100% только в случае совпадения, тогда вероятность, очевидно, равна 100%, если хотя бы одно сходство равно 100%, и 0% в противном случае. Может быть, вы пытаетесь вычислить, насколько хорош мой алгоритм проверки сходства?   -  person SimpleVar    schedule 15.05.2012
comment
Я пытаюсь рассчитать, насколько я уверен, что мое слово относится к любой категории, возвращенной с оценкой сходства выше установленного порога.   -  person zeencat    schedule 15.05.2012


Ответы (1)


Ваши вероятности неверны (или не являются вероятностями). Похоже, вы предположили, что ваше слово соответствует одному из трех верхних показателей сходства (если это так, ваш уровень достоверности де-факто составляет 100%...) . Кроме того, оценки вероятности и сходства не являются независимыми, поэтому ваш расчет также ошибочен, если вы ищете что-либо, основанное на вероятности/статистике.

На самом деле вы вычислили среднее "сходство" для первых трех случаев. Если это приемлемо в качестве вашего (нестатистического) уровня достоверности, то все в порядке. Но вам придется сделать это самостоятельно - нет никакой математической основы для того, что вы пытаетесь сделать. Чтобы помочь в дальнейшем, вам нужно будет предоставить нам гораздо больше информации о:

  • Как рассчитывается ваша оценка сходства.
  • Какова вероятность того, что ваше слово соответствует чему-то в списке из 10 для начала.
  • Насколько похожи 10 слов в вашем списке.
  • и т.д.

Редактировать после вашего редактирования:

Ваши три оценки «похожести» далеко не независимы, потому что сами по себе три слова очень «похожи». И в любом случае любой алгоритм, который говорит, что «вертолет» на 80% похож на «ад», не очень хорош. Я бы сказал, что уровень достоверности в этом случае довольно близок к нулю....!

person David M    schedule 15.05.2012
comment
Я использую Jaro Winkler для вычисления сходства. Сходство и оценка достоверности - две разные вещи. Оценка сходства дает ответ о том, насколько слова в списке похожи на мое введенное слово. Цель состоит в том, чтобы создать компонент ssis, который будет возвращать оценку достоверности и сходства при нечетком сопоставлении. Очень похоже на компонент нечеткой группировки ssis. SQL Server 2012 не поставляется с компонентом Fuzzy Lookup, если вы не инвестируете в корпоративную версию, которую моя компания не хочет делать. Отсюда и этот проект. - person zeencat; 15.05.2012
comment
Расстояние Яро между адом и вертолетом составляет (ручной расчет) 0,683. С включенной шкалой префикса (т. е. расстоянием Яро-Винклера) и стандартным коэффициентом я получаю 0,7781. Хорошо, это довольно близко к 80%. Теперь посмотрите на слова. Как вы думаете, эти слова на 80% похожи? Кроме того, какую точную интерпретацию вы даете уровню уверенности в этом случае? - person David M; 15.05.2012
comment
Вышеприведенное является лишь примером. Мне рекомендовали использовать байесовскую вероятность. Для расчета оценки вероятности/достоверности. Я хочу рассчитать, насколько я уверен, что слово относится к одному из трех совпадений. Для меня это просто 33,3% уверенности в том, чтобы войти в любой из них. Хотя мне сказали, что это слишком просто. - person zeencat; 15.05.2012
comment
Итак, вы ищете какую-то меру вероятности. Проблема в том, что расстояние Джаро-Винклера не является вероятностной мерой, поэтому оно не может быть частью ваших расчетов. Как, впрочем, и реализация SQL Server. Можете ли вы определить, что вы подразумеваете под совпадением в этом примере; каков именно ваш желаемый конечный результат в контексте? - person David M; 15.05.2012
comment
Я пытаюсь сгруппировать нечеткие строки. Компонент ssis «Нечеткое группирование» использует оценку сходства и оценку достоверности для нечеткой группировки входных данных вместе. Он использует алгоритм Яро Винклера для подобия, я не уверен, что он использует для уверенности, но мне сообщили, что это, скорее всего, байесовская теория вероятности. - person zeencat; 15.05.2012
comment
Хорошо, но байесовская вероятность связана с объединением ненезависимых вероятностей (т.е. условных вероятностей). Это бесполезно, когда применяется к произвольному показателю подобия, который не является вероятностью. Так что совет неверный. Ваша группировка может быть нечеткой, но ваше понимание критериев группировки не должно быть нечетким, если вы хотите рассказать нам достаточно, чтобы помочь вам здесь. - person David M; 15.05.2012
comment
Я обнаружил это. Показатель достоверности — это мера вероятности того, что конкретное значение является наилучшим совпадением среди совпадений, найденных в справочной таблице. взято из ссылки. Глядя на это, я думаю, что понимаю, как рассчитать достоверность, и похоже, что простой пример, который я привел выше, является правильным способом ее расчета. - person zeencat; 15.05.2012
comment
Нет, извините. Насколько вероятно = Вероятность. Сходство != Вероятность. Короче говоря, это ваша проблема... - person David M; 15.05.2012
comment
Я должен повторить, что даже если бы ваша мера подобия была вероятностью, ваш расчет был бы ошибочным, потому что вы ограничились тремя лучшими совпадениями и предполагаете, что все они являются равновероятными кандидатами. Более вероятная вероятность совпадения вашего слова с одним из слов в списке, если сходство = вероятность, будет равна 1 - (1 - p1)(1 - p2)(1 - p3).... Но даже это предполагает независимость, которой нет в вашем случае (c.f. hell/help/hello). - person David M; 15.05.2012
comment
Следуя примеру, в случае, если есть только одно слово с расстоянием выше 70% (скажем, с сходством 78%), вы говорите, что вы на 78% уверены, что оно совпадает с вашим словом. Если это результат, которого вы ожидаете, то все в порядке... - person Tallmaris; 15.05.2012
comment
Что, если бы я вернул два слова со сходством выше 70 %? Как тогда мне рассчитать уверенность? - person zeencat; 15.05.2012
comment
Вы не можете. Пожалуйста, смотрите мои предыдущие комментарии. Таллмарис прав, но вы должны прочитать, что он на самом деле написал: Если вы ожидаете именно такого результата, тогда все в порядке. Но в вашем случае вы хотите, чтобы ваш уровень достоверности был вероятностно основан, а он просто не основан на простом расстоянии Яро-Винклера. Вам понадобится способ перевести ваши сходства в вероятности и полностью понять зависимости между этими вероятностями, чтобы идти куда угодно. И у вас не получится этого добиться. Вы просто не сможете найти математическую уверенность... - person David M; 15.05.2012
comment
...уровень, основанный на этом. Все, что вы можете сделать, это принять эти расстояния как относительные меры, попробовать некоторые алгоритмы, чтобы принять решение «да/нет», и посмотреть, какие из них работают для вас. - person David M; 15.05.2012
comment
Спасибо за вашу помощь, это очень ценится. - person zeencat; 15.05.2012