Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 56998|Yanıt: 2

[Kaynak] Dizi benzerlik algoritmasını C# dilinde uygulayın

[Bağlantıyı kopyala]
Yayınlandı 23.04.2019 12:59:18 | | | |
Son zamanlarda, ele alınması gereken bir sorun var; yani kullanıcının girdiği diziyle sistemin elde ettiği diziyi karşılaştırmak için; hata çok büyük değilse, sistem gereksinimleri karşıladığını düşünecek ve bir eşik belirlemek en iyisidir.
CAPTCHA tanıma yaparken, karakter kodlarının benzerliğini karşılaştırmalı ve ilke ile C# uygulamasını kaydetmek için "mesafeyi düzenleme algoritması" kullanmalısınız.

Baidu Ansiklopedisi'ne göre:

Düzenleme mesafesi, Levenshtein mesafesi (düzenleme mesafesi olarak da bilinir) olarak da bilinir, iki dizi arasında birinden diğerine geçiş yapmak için gereken minimum düzenleme sayısıdır ve mesafe ne kadar büyükse, o kadar farklıdırlar. İzinli düzenleme işlemleri, bir karakteri başka bir karakterle değiştirmeyi, bir karakter eklemeyi ve karakteri kaldırmayı içerir.

Örneğin, kediyi kelimesini oturmak kelimesine çevirin:

sitten (k→s)

Sittin (e→i)

oturmak (→g)

Rus bilim insanı Vladimir Levenshtein bu kavramı 1965 yılında ortaya atmıştır. Bu yüzden Levenshtein Mesafesi adı verilmiştir.

Örneğin

Eğer str1="ivan", str2="ivan" ise, 0'a eşit olarak hesaplanır. Dönüştürülmemiş. benzerlik=1-0/Matematik.Max(str1.uzunluk,str2.uzunluk)=1
Eğer str1="ivan1", str2="ivan2" ise, 1'e eşit olarak hesaplanır. str1'in "1"i "2"ye dönüştürülür, bir karakter dönüştürür, böylece mesafe 1, benzerlik = 1-1/Math.Max(str1.length, str2.length) = 0.8 olur

Uygulama:

  • DNA analizi
  • Yazım kontrolü
  • Konuşma tanıma
  • İntihal tespiti



Algoritma C# dilinde uygulanmıştır:

Test kodu:






Test sonuçlarından şu sonuca varılır ki,uzayveyaNoktalamaTel pozisyonuFarklı şehirlerBenzerliği etkileyen sonuçlarBu nedenle, dizi tanıma karşılaştırılırken, algoritmayı çağırmadan önce diziden tüm boşluklar ve özel sembollerin çıkarılması önerilir

Kaynaklar:Bağlantı girişi görünür.

GitHub'da ayrıca C# dize benzerlik karşılaştırmaları için bir kütüphane var

FuzzyString, günlük çalışmalarım için farklı ızgara modelleri arasında adlandırma kurallarını koordine etmek amacıyla geliştirilen bir kütüphane. Güç sistemine özgü kodu çıkardım ve iki dize arasındaki yaklaşık eşitliği belirlemek için etkili bir dizi uzantısı olarak kullanılabilecek bir şeyi bir araya getirdim. Burada kullanılan tüm algoritmalar çevrimiçi kaynaklardan çıkarılmış, C#'a dönüştürülmüş ve bu kütüphanede derlenmiştir. Başka benzer açık kaynak uygulamaları buldum, ancak bunlar için mevcut değil. NET / C#。 Projenize *.dll eklemek, bu uzantıya ve ApproximatelyEquals() uzantısı altındaki bireysel uzantılara erişim sağlar.



Adres:Bağlantı girişi görünür.

Nuget Kurulumu:

Bu projeye dahil edilen algoritmalar:

  • Hamming mesafesi
  • Jaccard mesafesi
  • Jaro mesafesi
  • Jaro-Winkler mesafesi
  • Levenshtein mesafesi
  • En uzun halka açık
  • Alt dizinin en uzun ortak alt dizisi
  • Örtüşme katsayısı
  • Ratcliff-Obershelp benzerliği
  • Sorensen-Zar mesafesi
  • Tanimoto katsayısı



Kullanım:


Sonuç:



(Son)




Önceki:Yazılım Test Sanatı 3. Baskı pdf
Önümüzdeki:"Veri Analistlerinin Sekiz Yetkinliği" tüm kursu şifrelemez
Yayınlandı 6.05.2019 13:11:34 |
Bilgi geliyor
Yayınlandı 7.09.2021 15:01:05 |
Yanıtladıktan sonra kodu görmek mümkün mü?
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com