Paules-PC-Forum.de Anzeige:

Microsoft Windows Intune: PC-Verwaltung und -Sicherheit in der Cloud: Updateverwaltung, Anti-Virus und vieles mehr!


Zurück   Paules-PC-Forum.de > Programmierung > XProfan > Helfer & Tools > Dlls, Includes, Units & Prozeduren

Dlls, Includes, Units & Prozeduren Alles zu den Themen Dlls, Includes, Units & Prozeduren

EM-Tippspiel

Paule bei Facebook


Paule bei Twitter


Letzte Forenthemen
Gehe zum ersten neuen Beitrag Von Live CD Windowspfad...
Aufrufe: 76, Antworten: 7
Gehe zum ersten neuen Beitrag PPF - Shoppingwahn
Aufrufe: 50888, Antworten: 1392
Gehe zum ersten neuen Beitrag PPF - Spiel "Wörter weiter...
Aufrufe: 26667, Antworten: 4200
Gehe zum ersten neuen Beitrag Polizei warnt per Facebook...
Aufrufe: 10, Antworten: 0
Gehe zum ersten neuen Beitrag Verlust der Internetverbindung
Aufrufe: 8, Antworten: 0
Gehe zum ersten neuen Beitrag [Windows XP-32 bit] Verschlüsselungs Trojaner
Aufrufe: 65, Antworten: 2
Gehe zum ersten neuen Beitrag Rechner fährt herunter,...
Aufrufe: 104, Antworten: 6
Gehe zum ersten neuen Beitrag Bundesliga-Tippspiel Saision...
Aufrufe: 7543, Antworten: 175
Gehe zum ersten neuen Beitrag Gibts denn nichts neues?
Aufrufe: 874, Antworten: 46
Gehe zum ersten neuen Beitrag Windows Oberfläche (Schrift,...
Aufrufe: 184, Antworten: 10
Zeige:





Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 07.11.2010, 16:06   #1 (Direktlink)
Dauergast
 
Benutzerbild von p. specht
 
Registriert seit: 06.02.2009
Ort: Wien, Österreich
Beiträge: 1.078
Standard

Unscharfe String-Vergleiche
=====================

Es ist nicht ganz einfach, Eingaben mit Tippfehlern vom Computer trotzdem erkennen zu lassen. Der Levenshtein-Algorithmus erlaubt zumindest, einfache Preller bzw. Auslassungen zu erkennen. Etwas besser ist bei Datenbanken die SOUNDEX-Funktion, die allerdings meist für Englisch optimiert ist.

Das Gelbe vom Ei ist der Original-Levenshtein jedenfalls noch nicht. Es fehlt z.B. eine Änderung der Kostenbewertung (Variable cost&) in Abhängigkeit von möglichen Hörfehlern (y,ü,i,j ; sh sch ; t d ; p b; k g; h _ ), und vieles anderes mehr. Hier mal eine Basis zum rumspielen:

Code:
'### Alpha Version Code für Paule´s PC Forum ###
'### P. Specht  Nov.2010;  XProfan 11a Interpreter ###
WindowTitle "Levenshtein-Distanz (Stringvergleich)"
Cls @rgb(200,200,100)

proc LD  ' Compute Levenshtein-Distance
parameters s$,t$
s$=lower$(s$):var m&=len(s$)
t$=lower$(t$):var n&=len(t$)
declare d&[m&,n&],i&,j&,cost&,mi&,c&
case m& = 0 : return n&
case n& = 0 : return m&
i&=0 : while i&<=m& : d&[i&,0]=i& : inc i& : endwhile
j&=0 : while j&<=n& : d&[0,j&]=j& : inc j& : endwhile
i&=1
WHILE i&<=m&
    j&=1
    While j&<=n&
      cost&=1
      case Mid$(s$,i&,1)=Mid$(t$,j&,1):cost& = 0
        mi&=d&[i&-1,j&]+1
        c&=d&[i&,j&-1]+1
        case c&<mi& : mi&=c&
        c&=d&[i&-1,j&-1]+cost&
        case c&<mi& : mi&=c&
      d&[i&,j&]=mi&
   inc j&
   EndWhile
inc i&    
ENDWHILE
return d&[m&,n&]
Endproc

' Input Loop
declare str1$,str2$
While 1
Locate 10,10 : print "String1  =                                   ";
Locate 12,10 : print "String2  =                                   ";
Locate 14,10 : print "Ergebnis =                                   ";
Locate 10,21 : input str1$ : case str1$="" : End
Locate 12,21 : input str2$
Locate 14,21 : Print LD(str1$,str2$)
WaitInput
EndWhile
END
__________________
Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,XPSE,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB2:USB3
p. specht ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 07.11.2010, 21:05   #2 (Direktlink)
Weiß worum´s geht
 
Registriert seit: 02.09.2009
Ort: Bayern
Alter: 36
Beiträge: 148
Standard

Ein sehr guter Algorithmus in diesem Bereich, der vor allem mit deutschen Wörtern sehr gut funktioniert, ist die sogenannte "Kölner Phonetik".

Kölner Phonetik ? Wikipedia
__________________
˙˙˙ɯnɹ ɥɔsןɐɟ sǝןןɐ ˙˙˙ɹnʇɐʇsɐʇ ǝnǝu ssıǝɥɔs
commänder ist offline   Mit Zitat antworten
Alt 10.11.2010, 13:51   #3 (Direktlink)
Super-Moderator
 
Benutzerbild von Jac de Lad
 
Registriert seit: 06.02.2009
Ort: Coswig
Alter: 27
Beiträge: 1.159
Standard

Hm, ok, aber wie errechne ich dann die Ähnlichkeit zweier Wörter, die ich in Zahlenkolonnen umgewandelt habe?
__________________
XProfan-Profi (XProfan X2+XPIA)
http://jacdelad.bplaced.net
http://jacdelad.square7.ch
Jac de Lad ist offline   Mit Zitat antworten
Alt 11.11.2010, 00:02   #4 (Direktlink)
Dauergast
 
Benutzerbild von p. specht
 
Registriert seit: 06.02.2009
Ort: Wien, Österreich
Beiträge: 1.078
Standard

@commänder: Danke - Super Hinweis!

@Jaq: A) Beziehst du Dich jetzt auf Levenshtein (Die Zahl die da rauskommt ist eine Art Verwandtschaftsmaß zwischen zwei Worten): Du setzt einfach einen Treshold level und prüfst das Ergebnis, ob diese zulässige Fehlergrenze überschritten ist oder nicht.

@Alle: B) Wenns es um "Kölner Phonetik" geht: Meine Umsetzung ist noch immer nicht fertig, weil ich die Resultate erst an offiziellen Ergebnissen verifizieren möchte (man blamiert sich ja nicht sonderlich gerne).

Sinn des Kölner Verfahrens ist es, ein Filter darzustellen, das die Eingabeinterpretation gewissermaßen schwerhörig macht. Da sich Vokale in unterschiedlichen Dialekten oft verändern, werden sie z.B. mit "0" kodiert und, wenn sie nicht am Anfang stehen, einfach weggelassen. Zischlaute wiederum landen in Klasse "3", etc etc.

Achtung: Es sind keine Zahlen, die dabei rauskommen, weil die scheinbar aus Ziffern bestehenden Vergleichsmuster eine führende Null kennen (Wenn nämlich Vokale als erstes Zeichen stehen) - sämtliche Math-Packages würden führende Nullen klarerweise wegschneiden. Weiters haben Integer-Zahlen eine begrenzte Stellenzahl, der Kölner Algorithmus aber nicht, was allgemein als Vorteil gegenüber Soundex() ins Treffen geführt wird.

Wenn man das Ergebnis aber doch unbedingt als Zahl speichern will (meine Überlegungen gingen auch zuerst in diese Richtung), könnte man führende Nullen eventuell als negatives Vorzeichen speichern und dann alles Modulo (höchste Integerzahl/2) nehmen (Vorsicht, Rechte Dritter!).
Es bleibt eine Frage der zeitlichen Performance, ob man die Vergleichsdatenbank um eine Spalte "Klingt wie ..." erweitert und nach Aufrufhäufigkeit index-sortiert (das setzt halt zu Beginn u.U. eine Vorab-Berechnung voraus), oder ob man das ganze "fliegend" hält.

Die Übereinstimmung der erzeugten Muster ist dabei das Kriterium (in Google kommt da z.B. die Meldung "Meinten Sie ....?"). Eine Fehlerschwelle gibts dabei nicht, die ist - optimiert für die Deutsche Sprache - in den Kölner Algorithmus gewissermaßen schon eingebaut.

Ich hoffe, das klang jetzt nicht anmaßend

Gruss
__________________
Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,XPSE,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB2:USB3

Geändert von p. specht (11.11.2010 um 00:37 Uhr)
p. specht ist offline   Mit Zitat antworten
Alt 11.11.2010, 06:28   #5 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.092
Standard

Klang es nicht.
Ist wohl nur die Frage, ob man das in einer annehmbaren Geschwindigkeit realisieren kann...
__________________
Gruß, Frank


Webpage http://frabbing.bplaced.net
mit Freeware - Tools, Spiele und Grafiken.
Frabbing ist gerade online   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 11.11.2010, 07:39   #6 (Direktlink)
Super-Moderator
 
Benutzerbild von Jac de Lad
 
Registriert seit: 06.02.2009
Ort: Coswig
Alter: 27
Beiträge: 1.159
Standard

Ich bezog mich auf die Kölner Phonetik. Da kommt am Ende eine Zahlenschlange raus, die ich unmöglich mit "=" oder so vergleichen kann.
__________________
XProfan-Profi (XProfan X2+XPIA)
http://jacdelad.bplaced.net
http://jacdelad.square7.ch
Jac de Lad ist offline   Mit Zitat antworten
Alt 11.11.2010, 15:32   #7 (Direktlink)
Dauergast
 
Benutzerbild von p. specht
 
Registriert seit: 06.02.2009
Ort: Wien, Österreich
Beiträge: 1.078
Standard

Die Ziffern sind Gruppenzugehörigkeitsbezeichner für die einzelnen Laute (Phoneme) eines Wortes. Es entsteht eine Ziffernzeichen-Schlange ("String"). Das selbe machst du für die Einträge Deiner Datenbank, somit hast du einen Suchstring und Vergleichsstrings.
Und die kann man mit "=" vergleichen, oder etwa nicht?
__________________
Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,XPSE,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB2:USB3

Geändert von p. specht (11.11.2010 um 15:38 Uhr)
p. specht ist offline   Mit Zitat antworten
Alt 11.11.2010, 19:47   #8 (Direktlink)
Super-Moderator
 
Benutzerbild von Jac de Lad
 
Registriert seit: 06.02.2009
Ort: Coswig
Alter: 27
Beiträge: 1.159
Standard

Ja schon, aber wenn ein Wort eine Ziffer mehr hat, dann kann ich den String nicht so einfach vergleichen, aber sie sind sich ziemlich ähnlich.
__________________
XProfan-Profi (XProfan X2+XPIA)
http://jacdelad.bplaced.net
http://jacdelad.square7.ch
Jac de Lad ist offline   Mit Zitat antworten
Alt 12.11.2010, 20:18   #9 (Direktlink)
Dauergast
 
Benutzerbild von p. specht
 
Registriert seit: 06.02.2009
Ort: Wien, Österreich
Beiträge: 1.078
Standard

Jaq hat recht: Mit dem Original-Levenshtein kann man nur Tippfehler ausbügeln, während das Kölner Verfahren nur Hörfehler ausbügelt. Sucht man ein Verfahren, daß beides gleichzeitig kann, ist man in Deutsch mit dem PHONEM-Algorithmus gut bedient. PHONEM funktioniert so, daß vor einem Levenshtein-Vergleich Buchstabengruppen austauscht werden: ph wird f, p wird b, t wird d etc., also (fast) gemäß den Regeln, die auch dem Kölner Algorithmus zugrunde liegen.
__________________
Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,XPSE,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB2:USB3

Geändert von p. specht (13.11.2010 um 09:29 Uhr)
p. specht ist offline   Mit Zitat antworten
Antwort

  Paules-PC-Forum.de > Programmierung > XProfan > Helfer & Tools > Dlls, Includes, Units & Prozeduren

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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 an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Hash-Algorithmus MD6 aus SHA-3-Wettbewerb zurückgezogen Info Sicherheitsmeldungen von heise.de 0 02.07.2009 13:50
Stringvergleich Busti C/C++, Visual C++, Visual C++.NET 2 24.11.2005 10:41



Alle Zeitangaben in WEZ +2. Es ist jetzt 11:35 Uhr.


Powered by vBulletin® Version 3.8.7 (Deutsch)
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Powered by vBCMS® 2.7.0 ©2002 - 2012 vbdesigns.de
(c) Paules-PC-Forum.de

::: Impressum :::

Search Engine Optimization by vBSEO 3.3.2