2012-04-15 8 views
0

Dies ist das zweite Mal, dass ich nach Computerlinguistik/Fuzzy String Matching fragen werde, aber diesmal geht es nicht um Stemming.Fuzzy String Vergleich - Erkennen von Kurznamen

Mein erstes Problem war, eine Datenbank mit Fuzzy-String-Matching zu deduplizieren, und das habe ich bereits erreicht. Jetzt muss ich erkennen, ob eine Zeichenkette eine Kurzschrift einer anderen Zeichenkette ist. Zum Beispiel:

  • JOHN ADRIAN FREEMAN WELTER gleich JAF Welter oder JAFWelter
  • MICROSOFT OFFICE zu MS OFFICE gleich
  • Gebäude BLDG gleich

ich derzeit bin mit. Net-Version von SimMetrics für mein erstes Problem. Also, gibt es eine Methode in SimMetrics, die mein Problem lösen kann? Wenn keine, was ist der beste Weg, um dies zu lösen?

Hier ist die in SimMetrics implementiert Metriken:

  • Hamming-Distanz
  • Levenshtein Entfernung
  • Needleman-Wunch Entfernung oder Sellers Algorithmus
  • Smith-Waterman Entfernung
  • Gotoh Entfernung oder Smith-Waterman -Gotoh Abstand
  • Blockieren Sie Entfernung oder L1 Entfernung oder Stadt Block Entfernung
  • Monge Elkan Abstand
  • Jaro Distanzmaß
  • Jaro Winkler
  • SoundEx Distanzmaß
  • Matching Coefficient
  • Dice-Koeffizient
  • Jaccard Ähnlichkeit oder Jaccard-Koeffizient oder Tanimoto-Koeffizient
  • Überlappungskoeffizient
  • Euklidischer Abstand oder L2-Abstand
  • Kosinusähnlichkeit
  • Variational Abstand
  • Hellinger Entfernung oder Bhattacharyya Abstand
  • Informationen Radius (Jensen-Shannon Divergenz)
  • Harmonic Mittelwert
  • Skew Divergenz
  • Verwirrung Probability
  • Tau
  • Fellegi und Sunters (SFS) metrisch
  • TFIDF oder TF/IDF
  • FastA
  • BlastP
  • Maximal Spiele
  • q-Gramm
  • Ukkonen Algorithmen

ich mit all diesen Algorithmen nicht so vertraut bin. Die, die ich hier schon benutzt habe, sind Leveshtein Distance, Needleman-Wunch, Jaro-Winkler, SoundEx und TF/IDF. Und ich denke, diese Algorithmen sind nicht genug, um dieses Kurzschrift-Namensproblem zu lösen

+0

können Sie ein wenig mehr Informationen darüber geben, wie haben Sie das tun: 'Mein erstes Problem war, eine Datenbank dedupliziert Verwendung von Fuzzy-String-Matching, und das habe ich bereits erreicht – zaitsman

Antwort

2

Sie würden höchstwahrscheinlich benutzerdefinierte Methoden benötigen. Hier ist, was ich würde versuchen:

1) JOHN ADRIAN FREEMAN WELTER zu JAF Welter oder JAFWelter gleich

Hier können Sie die ersten Buchstaben der Wörter verwenden, um die Abkürzung zu bekommen. Wenn alle Vorkommnisse so sind, dass das letzte Wort voll ist, gibt dies höchstwahrscheinlich einzigartige Auflösungen, ansonsten besteht die Möglichkeit, dass Sie andere Wortsequenzen finden, die dasselbe Kürzel (z.JAFW: Java als Fremdwort)

2) MICROSOFT OFFICE gleich MS OFFICE

Hier müssen Sie ein Wörterbuch von bekannten Wörtern und erkennen, dass Microsoft zusammen aus Micro gestellt werden und Weiche (vorausgesetzt, beide in Ihrem Wörterbuch sind) und verwenden Sie den ersten Ansatz auf diesen

3) Gebäude ist gleich BLDG

Hier müssen Sie ein Wörterbuch der Wörter und cus tom Abkürzungen (Ich glaube nicht, dass Sie eine Regel finden/Algorithmus, der die Abkürzung aller Wörter berechnen kann)

+0

Danke für Ihre Antwort. Eigentlich habe ich einen Algorithmus gemacht, der deiner Antwort in Nr. 1. Aber ich habe aufgegeben, da es mir immer falsche Negative gibt, wenn ich den Schwellenwert niedriger und falsch positive Werte zu hoch setze. Ich werde es dann verbessern. – Jinnean