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

Вид: 56998|Ответ: 2

[Источник] Реализовать алгоритм сходства строк на C#

[Скопировать ссылку]
Опубликовано 23.04.2019 12:59:18 | | | |
Недавно возникла проблема, которую нужно решить, то есть сравнить строку, введённую пользователем, и строку, полученную системой, если ошибка не очень велика, система сочтёт её соответствующей требованиям, и лучше установить порог.
При распознавании CAPTCHA нужно сравнивать сходство кодов символов и использовать «алгоритм дистанции редактирования» для записи принципа и реализации на C#.

Согласно энциклопедии Baidu:

Расстояние до редактирования, также известное как расстояние Левенштейна (также известное как расстояние редактирования), — это минимальное количество правок, необходимых для перехода между двумя струнами, и чем больше расстояние, тем больше они различаются. Разрешённые редактирование включают замену одного символа другим, вставку символа и удаление символа.

Например, преобразите слово «котёнок» в «сидячий»:

Ситтен (K→s)

Ситтин (E→i)

сидя (→g)

Российский учёный Владимир Левенштейн предложил эту концепцию в 1965 году. Отсюда и название Левенштейнская дистанция.

Например

Если str1="ivan", str2="ivan", то он вычисляется равным 0. Не конвертировался. similarity=1-0/Math.Max(str1.length,str2.length)=1
Если str1="ivan1", str2="ivan2", то вычисляется равным 1. «1» из str1 преобразует в «2», преобразует символ, так что расстояние равно 1, сходство = 1-1/Math.Max(str1.length, str2.length) = 0.8

Применение:

  • Анализ ДНК
  • Проверка орфографии
  • Распознавание речи
  • Обнаружение плагиата



Алгоритм реализован на C#:

Тестовый код:






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

Ресурсы:Вход по гиперссылке виден.

На GitHub также есть библиотека для сравнения сходства строк на C#

FuzzyString — это библиотека, разработанная для моей ежедневной работы с целью координации наименований между различными сетчатыми моделями. Я удалил код, специфичный для системы питания, и собрал то, что можно эффективно использовать как расширение строк, чтобы определить приблизительное равенство между двумя струнами. Все используемые здесь алгоритмы были извлечены из онлайн-источников, конвертированы в C# и скомпилированы в эту библиотеку. Я нашёл несколько других похожих открытых реализаций, которые недоступны для . NET / C#。 Добавление *.dll в ваш проект даст вам доступ к этому расширению и отдельным расширениям под расширением ApproximatelyEquals().



Адрес:Вход по гиперссылке виден.

Установка NUGET:

Алгоритмы, включённые в этот проект:

  • Дистанция Хэмминга
  • Расстояние Жаккар
  • Расстояние Джаро
  • Дистанция Яро-Винклера
  • Дистанция Левенштейна
  • Самая длинная публика
  • Самая длинная общая подстрока подпоследовательности
  • Коэффициент перекрытия
  • Сходство Рэтклиффа и Обершельпа
  • Расстояние Соренсена-Дайса
  • Коэффициент Танимото



Применение:


Результат:



(Конец)




Предыдущий:Искусство тестирования программного обеспечения, 3-е издание pdf
Следующий:«Восемь компетенций аналитиков данных» не шифрует полный курс
Опубликовано 06.05.2019 13:11:34 |
Знания идут
Опубликовано 07.09.2021 15:01:05 |
Можно ли увидеть код после ответа?
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com