Gibt es Fuzzy-Suche oder String Ähnlichkeitsfunktionen Bibliotheken für C # geschrieben? [geschlossen]

StackOverflow https://stackoverflow.com/questions/83777

  •  01-07-2019
  •  | 
  •  

Frage

Es gibt ähnliche Frage, aber nicht C # -Bibliotheken in Bezug auf die ich in meinem Quellcode verwenden kann.

Vielen Dank für Ihre Hilfe.

Ich habe schon gesehen lucene, aber ich brauche etwas leichter für Ähnliche Strings zu suchen und ohne den Aufwand des Indexierungsteils.

Die Antwort, die ich hat zwei sehr einfache Algorithmen markiert habe, und man benutzt zu LINQ, so ist es perfekt.

War es hilfreich?

Lösung

Levenshtein Abstand Umsetzung:

Ich habe ein .NET 1.1-Projekt, in dem ich das letzteres verwenden. Es ist simpel, aber funktioniert perfekt für das, was ich brauche. Von dem, was ich mich erinnere ein bisschen Zwicken benötigt, aber nichts, was nicht offensichtlich war.

Andere Tipps

Sie können an der sehr beeindruckende Bibliothek auch einen Blick Titel Sam String Metrics http://sourceforge.net/ Projekte / simmetrics / files / . Dazu gehören eine Reihe von Algorithmen.

  • Hamming-Distanz
  • Levenshtein Abstand
  • Needleman-Wunch Abstand oder Sellers Algorithmus
  • Smith-Waterman-Abstand
  • Gotoh Entfernung oder Smith-Waterman-Gotoh Abstand
  • Blockabstand oder L1 Abstand oder City-Blockdistanz
  • Monge Elkan Abstand
  • Jaro Distanzmaß
  • Jaro Winkler
  • SoundEx Distanzmaß
  • Passende Koeffizient
  • Dice-Koeffizient
  • Jaccard Ähnlichkeit oder Jaccard-Koeffizient oder Tanimoto Koeffizient
  • Overlap-Koeffizient
  • euklidischer Abstand oder L2 Abstand
  • Kosinusähnlichkeit
  • Variational Abstand
  • Hellinger Abstand oder Bhattacharyya Abstand
  • Information Radius (Jensen-Shannon Divergenz)
  • harmonischer Durchschnitt
  • Skew Divergenz
  • Verwirrung Wahrscheinlichkeit
  • Tau
  • Fellegi und Sunters (SFS) metrisch
  • TFIDF oder TF / IDF
  • FastA
  • BlastP
  • Maximal Spiele
  • q-Gramm
  • Ukkonen Algorithmen

Sie sind nicht meine eigene Erfindung, aber sie sind meine Favoriten, und ich habe gebloggt nur über sie und veröffentlichte meine eigene gezwickt Versionen von Dice-Koeffizient, Levenshtein Entfernung, Längste gemeinsame Subsequence und Double Metaphone in einem Blog-Eintrag namens Vier Funktionen für Fuzzy String Finding Spiele in C # Extensions .

Haben Sie einen Blick auf Lucene.net ? Es ist eine Portierung der Java Lucene Search Engine API auf die .NET-Plattform. Das Bibliothek bietet viele Suchfunktionen. Ich spielte mit ihm um ein Jahr oder so vor, also nicht mein Vorschlag nehmen, wie auf Tonnen Erfahrungen. Ich sah es in dem Buch Windows Developer Power Tools und nahm es für eine Probefahrt. Sie könnten ihre schauen durch API-Dokumentation zu sehen, ob es so etwas wie die Fuzzy-Suche bietet, für die Sie suchen.

Diese Code Projekt Papier eine Zeichenfolge Ähnlichkeitsfunktion mit der Levenshtein Abstand .

Es gibt die folgende Levenshtein Entfernung Algorithmus, der einen Wert der Ähnlichkeit zweier Strings zuordnet (na ja, der Unterschied tatsächlich), die verwendet werden könnten, um zu bauen: http://www.merriampark.com/ldcsharp.htm

Die Beagle-Projekt für Linux ist in C # (mono) geschrieben und ist eine Google-Desktop wie Suchwerkzeug. Es kann für diese Art von String-Matching dort einen Code hat.

Wenn ich mich richtig erinnere, verwendet es die Lucene Bibliothek zum Suchen und Abrufen von Daten. Vielleicht auch, dass für Ihr Projekt nützlich sein.

Ich habe "Ternary Search Baum Wörterbuch in C #" verwendet ( http: // www .codeproject.com / KB / Rezepte / tst.aspx ) nach ähnlichen Zeichenketten zu suchen.

Regards, Patricio

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top