Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 56998|Відповідь: 2

[Джерело] Реалізувати алгоритм подібності рядків у C#

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

Згідно з енциклопедією Baidu:

Відстань редагування, також відома як відстань Левенштейна (також відома як відстань редагування), — це мінімальна кількість правок, необхідна для переходу між двома рядками, і чим більша відстань, тим більше вони відрізняються. Операції з дозволеним редагуванням включають заміну одного символу іншим, вставку символу та видалення символу.

Наприклад, перетворіть слово кошеня на сидячий:

Сіттен (K→s)

Сіттін (E→i)

сидіння (→g)

Російський вчений Володимир Левенштейн запропонував цю концепцію у 1965 році. Звідси й назва Левенштейнська відстань.

Наприклад

Якщо str1="ivan", str2="ivan", то це обчислюється як дорівнює 0. Не конвертований. схожість=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