Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 56998|Odpowiedź: 2

[Źródło] Zaimplementuj algorytm podobieństwa ciągów w C#

[Skopiuj link]
Opublikowano 23.04.2019 12:59:18 | | | |
Ostatnio pojawił się problem, który trzeba rozwiązać, a mianowicie porównanie ciągu wpisanego przez użytkownika z ciągiem otrzymanym przez system; jeśli błąd nie jest duży, system uzna go za spełniający wymagania i najlepiej ustalić próg.
Podczas rozpoznawania CAPTCHA musisz porównać podobieństwo kodów znaków i użyć "algorytmu dystansu edycji", aby zarejestrować zasadę i implementację C#.

Według Encyklopedii Baidu:

Odległość edycji, znana również jako odległość Levenshteina (znana również jako dystans edycji), to minimalna liczba edycji potrzebna do przejścia między dwoma strunami, a im większa odległość, tym większe są one różnice. Operacje edycji z uprawnieniami obejmują zastąpienie jednego znaku innym, wstawienie znaku oraz usunięcie znaku.

Na przykład, przekształć słowo kociak na siedzące:

Sitten (K→s)

Sittin (E→I)

siedzący (→g)

Rosyjski naukowiec Władimir Levenshtein zaproponował tę koncepcję w 1965 roku. Stąd nazwa Odległość Levenshteina.

Na przykład

Jeśli str1="ivan", str2="ivan", to oblicza się go jako równy 0. Nie przekształcony. podobieństwo=1-0/Matematyka.Max(str1.długość,str2.długość)=1
Jeśli str1="ivan1", str2="ivan2", to oblicza się go jako równe 1. "1" ze str1 zamienia się na "2", przekształca znak, więc odległość wynosi 1, podobieństwo = 1-1/Math.Max(str1.length, str2.length) = 0,8

Zastosowanie:

  • Analiza DNA
  • Sprawdzanie pisowni
  • Rozpoznawanie mowy
  • Wykrycie plagiatu



Algorytm jest zaimplementowany w C#:

Kod testowy:






Z wyników testów wynika, żeprzestrzeńlubInterpunkcjaPozycja strunRóżne miastaWyniki wpływające na podobieństwoDlatego podczas porównywania rozpoznawania ciągów znaków zaleca się usunięcie wszystkich spacji i specjalnych symboli w ciągu przed wywołaniem algorytmu

Zasoby:Logowanie do linku jest widoczne.

Na GitHubie jest też biblioteka do porównywania podobieństw strun w C#

FuzzyString to biblioteka stworzona na potrzeby mojej codziennej pracy, aby koordynować konwencje nazewnictwa między różnymi modelami siatki. Usunąłem kod specyficzny dla systemu energetycznego i przygotowałem to, co można skutecznie wykorzystać jako rozszerzenie ciągu do określenia przybliżonej równości między tymi dwoma ciągami. Wszystkie użyte tutaj algorytmy zostały wyodrębnione ze źródeł online, przekonwertowane do C# i skompilowane do tej biblioteki. Znalazłem kilka innych podobnych implementacji open source, które nie są dostępne dla . NET / C#。 Dodanie *.dll do projektu da Ci dostęp do tego rozszerzenia oraz poszczególnych rozszerzeń w ramach rozszerzenia ApproximatelyEquals().



Adres:Logowanie do linku jest widoczne.

Instalacja Nugeta:

Algorytmy uwzględnione w tym projekcie:

  • Odległość Hamminga
  • Odległość Jaccarda
  • Odległość Jaro
  • Odległość Jaro-Winklera
  • Dystans Levenshteina
  • Najdłuższa publiczność
  • Najdłuższy wspólny podciąg podciągu
  • Współczynnik nakładania się
  • Podobieństwo Ratcliff-Obershelp
  • Odległość Sorensena-Dice
  • Współczynnik Tanimoto



Użycie:


Wynik:



(Koniec)




Poprzedni:Sztuka testowania oprogramowania, 3. wydanie pdf
Następny:"Osiem kompetencji analityków danych" nie szyfruje całego kursu
Opublikowano 06.05.2019 13:11:34 |
Wiedza nadchodzi
Opublikowano 07.09.2021 15:01:05 |
Czy można zobaczyć kod po odpowiedzi?
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com