AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Tolleranter String-Vergleich

Ein Thema von Florian H · begonnen am 24. Jul 2004 · letzter Beitrag vom 25. Jul 2004
Antwort Antwort
Florian H

Registriert seit: 30. Mär 2003
Ort: Mühlacker
1.043 Beiträge
 
Delphi 6 Professional
 
#1

Tolleranter String-Vergleich

  Alt 24. Jul 2004, 17:01
Hi,

ich habe 2 Strings und möchte prüfen, ob die beiden annährern das gleiche enthalten.
Also z.B. bei "Guten Tag" sollte der Alogrithmus erkennen, dass "Gutn Tag" fast das selbe ist.
Ich hab da erst an diesen einen Alog. gedacht der die abweichenden Zeichen in einem String zählt (Hallo und Holla --> 2) aber da wäre das PRoblem, dass wenn ein Buchstabe z.B. fehlt, alle nachfolgenden Zeichen falsch gewertet würden. Abgesehen davon habe ich dessen name vergessen

Viele Grüße
Florian
Florian Heft
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Tolleranter String-Vergleich

  Alt 24. Jul 2004, 17:06
Meinst du vielleicht Hier im Forum suchenLevenshtein Bei Google suchenLevenshtein

Das lustige an dem Namen ist, dass eine Suchmaschine ebendiesen Algorithmus anwenden muss, um was zu finden, weil kein Mensch das Wort richtig schreibt
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Florian H

Registriert seit: 30. Mär 2003
Ort: Mühlacker
1.043 Beiträge
 
Delphi 6 Professional
 
#3

Re: Tolleranter String-Vergleich

  Alt 24. Jul 2004, 17:14
ja genau den meine ich (wie soll ich mir sowas merken können ^^)
Der kann sogar das erkennen von "HAllo" und "xHAllo" = 1 richtig.

nur gibts das auch schon fertig als Delphi-Unit o.Ä.?

Google liefert leider fast nur PHP-Funktionsreferenzen...
Florian Heft
  Mit Zitat antworten Zitat
Florian H

Registriert seit: 30. Mär 2003
Ort: Mühlacker
1.043 Beiträge
 
Delphi 6 Professional
 
#4

Re: Tolleranter String-Vergleich

  Alt 24. Jul 2004, 17:30
ok

Delphi-Quellcode:
unit Levenshtein;
//Objeto que calcula la distancia de Levenshtein entre 2 cadenas.
//Alvaro Jeria Madariaga. 04/10/2002
//barbaro@hotpop.com
interface
uses sysutils, Math;
type
  Tdistance = class(TObject)
  private
    function minimum(a, b, c: Integer): Integer;
  public
    function LD(s, t: string): Integer;
  end;

implementation

function Tdistance.minimum(a, b, c: Integer): Integer;
var mi: Integer;
begin
  mi := a;
  if (b < mi) then
    mi := b;
  if (c < mi) then
    mi := c;
  Result := mi;
end;

function Tdistance.LD(s, t: string): Integer;
var
  d: array of array of Integer;
  n, m, i, j, costo: Integer;
  s_i, t_j: char;
begin
  n := Length(s);
  m := Length(t);
  if (n = 0) then begin
      Result := m;
      Exit;
    end;
  if m = 0 then begin
      Result := n;
      Exit;
    end;
  setlength(d, n + 1, m + 1);
  for i := 0 to n do
    d[i, 0] := i;
  for j := 0 to m do
    d[0, j] := j;
  for i := 1 to n do
    begin
      s_i := s[i];
      for j := 1 to m do
        begin
          t_j := t[j];
          if s_i = t_j then costo := 0 else costo := 1;
          d[i, j] := Minimum(d[i - 1][j] + 1, d[i][j - 1] + 1, d[i -1][j - 1] + costo);
        end;
    end;
  Result := d[n, m];
end;
end.
danke
Florian Heft
  Mit Zitat antworten Zitat
Benutzerbild von FriFra
FriFra

Registriert seit: 19. Apr 2003
1.291 Beiträge
 
Delphi 2005 Professional
 
#5

Re: Tolleranter String-Vergleich

  Alt 25. Jul 2004, 17:05
Soundex wäre auch eine Lösung für Dein Problem
Elektronische Bauelemente funktionieren mit Rauch. Kommt der Rauch raus, geht das Bauteil nicht mehr.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz