[Playlisten] [Impressum und Datenschutzerklärung]

12C.4 ähnliche klingende Wörter finden; Soundex-Algorithmus


CC-BY-NC-SA 3.0

Tempo:

Anklickbares Transkript:

dasSoundexverfahrenich möchte nach ähnlich klingenden Namen suchen können oder nach ähnlich klingenden Wörtern suchen könnenwenn ich zum Beispielum Eier finden will möchte ich auch nachMeyer suchen könnenoder nachMeyersuchen können dass es so der Gedanke ähnlich klingenden Namen er gleich oder ähnlich klingenden Namen oder ähnliche Begrifferichtig findendannmit einer Eingabeund der Gedanke ist man baut einen gemeinsamenCoachaus diesen Namen ein gemeinsamerCoachähnliche Wörter ähnlich klingende Wörter sollenauf einen gemeinsamen Code gemeldet werden?? Sound Access ein klassisches Verfahren für dasBeispiel Wikipedia ist Britneydas Wort Whitney wird übersetztinden KotB sechs drei fünfam Songtext gibt ganz viele verschiedene Regeln ich vergesse mit den wichtigsten Regeln an erste Regel Sinn in den ersten Buchstabender Bart stehen tolldiese Zahlen hier Partner mit einer Tabelle die stehen für Lautezum SchlussTabelle mitsechs verschiedenenZiffern die zum Schluss rauskommenPunkt sechsbei den BuchstabenB FP und VZiffer einsIV kommt er nicht vorbei den Buchstaben C GJKS X und Z das klingt alles nach CKwie auch immereine Ziffer zwei kommt auch nicht vorD und Tder meiste Ziffer drei ?? vernichtetdas es dieses hier das C wird da die dreiein L und den ich vorüber vier NNmit Nena Hammer das Ziffer fünf das ist das Endeund erist die sechster sechste sechs davonals ich die von vorne durch Anwaltsbuchstabebleibt stehendas er wird zur sechsdie taucht nicht auf Vokale tauchen gar nicht auf fliegen Rausvokalvorne beim stehen an erster Stelle aber in den Vokale fliegen raussind sie nicht lokal auf das Y taucht nirgendwo auf was nicht auftaucht PflichthausCwird die Nummer dreiinbitte Nummer fünfauf drei Stellen alsoich nehme mir den Rest des Worts gehen Tabelle rein und baue damit drei Stellen und nur drei Stellen alle übrigen lass ich weg was übersetzt wird also nur der Anfang des Wortes nur drei Stellen oder Ziffernnur dreidas Wort länger wirddas ich den Rest weg wenn das Wort zu kurz ist macht man nulllassen sich leichter programmieren sie Fang S-Bahn mit null null null und setzen entziffern ein wenn sie welche findendannOriginal SonderregelungenWort zu kurzdas Wort zu kurz istnur dannstaratandereZiffer null statt eins bis sechsundman wiederholt es auch nichts wenn wir zu den doppelt tieferen Ständern schreibt man nicht drei drei hintereinanderkeine Ziffer doppeltdas wird ja oft von der Aussprache nur unwesentlichenUnterschied machen Doppel CD Doppel die einfach die einfach diemehr oder minder keine Ziffer Doppelpunktdas ist schon mal die wesentlichen Regeln es gibt noch mehr aber was ich übertreibeso etwas umgehen eine Funktion zu schreiben nimmt eine beliebige Zeichenketteund baut daraus eine Zeichenkette mit vier Zeichen nach diesen Regeln erstmalsdann könnte man diese Funktion nehmenum nach ähnlich klingendenWörtern zu suchen?? erstmals ohne Funktionals ich starte mit einer ZeichenkettenachweisenZeichenkette ist das vielleicht ?? ich Daten ZeichenketteunterstehtdemTestfall haben wirund dazwischen kommt irgendwas und zum Schluss kommt eine Zeichenkette raus könnt ihr schon anlegenZeichenkette mit dem Kot der Sten vier Zeichen drinRaumKomma dass es immer selber zusammenbasteln sowas Diversity sinnvollerweise initialisierenwas die dahinter?? Punkt ich machedas ?? soll so funktioniert das zum Schluss im Kotder Soundexportstehtwenn ich sowas danach als Funktion habenund ich möchte wissen ob zweiWörteretwa ähnlich klingen rufe ich die Funktion für das eine Wortaufrufdie Funktion für das andere Wort auf und vergleichen die Codes die dabei rauskommen wenn die Codes gleich sindgegen die Wörter anscheinend einziemlichelementares Verfahren ist auch schon antikes gibt ähnliches Verfahren für Deutsch unterbrochen aber vielmehrEinträge dieser Tabelle also dieses Verfahren ist für Englisch gedacht nicht für Deutsch gedachtdas also mit klein und Großbuchstabengelten klarkleines Ngroßes N das soll egal seinwobei in einem normalen Wort ja keine GroßbuchstabenVorkommen werdensodieser Code den kann man ja schon ganz nett initialisierenich weiß dass siedie Nullstelle in diesem Codes es von null sein sollPunkt wenn wir so hinschreibenist das Ding zu initialisierenes von nulles soll mit dem ersten Buchstaben anfangenund dann soll es weitergehen der Einfachheit halbermit dem Symbol nullund dem Symbol oder dem Symbol nullsound damit das IC Zeichenketteist sonst mit der Zahl null aufführenwie Zahlen oder hinten können Sie auch schreiben alsBackslashnullUmsatzes aufwendig macheneinfach die Zahlenschreiben kannwas ich hätte gerne für diesen Code eine Zeichenkettebesteht die besteht aus dem ersten Buchstabenmeines Originalboardsnull sterben zu wollen vordersten Buchstabendann kommt dreimal das Symbol nulldie Nummerdes Zeichens null und dann kommt die null um zu sagen?? die Zeichenketteinder erste Buchstabesollte eigentlichein Großbuchstabesein immer das sollte man jetzt einen Schimmer sofort verändern das ist nicht immer richtig Jesu sein Großbuchstabenstellt sich vor ich hätte jakeinen Namensondern irgendein anderes englisches Wort wird es im Kleinbuchstabenanfangendass wir das aller erste Sorgen Sie dafür dass davon ein Großbuchstabensteht ich höre ja in der Aussprache nicht ob es davon ein kleiner Großbuchstabenerster Schrittan den ersten Buchstaben zum Großbuchstabenzu machenund erst dann die zweite?? schon Tabellen gebaut genauso funktionierendass man in den Buchstaben zu Großbuchstaben machenesvon jetzt an mehreren Stellen vor das man Kleinbuchstabenzwar zwei zu Großbuchstabenmachen muss ??vorne will ich nun Großbuchstabenhaben auf jeden Fall?? und hinten soll's egal sein Kleinbuchstaben oder Großbuchstabenstehen das Beispiel sind sich vor McDonald'splötzlichen großes Ddrin das auch richtig behandelnsoll egal großes R kleines D istwie schreibt man eine Minifunktionsschargroß Neues müsse kryptische Zeichen egal groß Schatz setzt eine Funktiondie Kleinbuchstabenso Großbuchstabenmachtoder schreibt das wirklich zu klein zu groß kleinen zugroß so an Funktionen Kleinbuchstaben zu Großbuchstabenmeisten hatten das also wenn das Zeichenzwischenklein Ader Nummer des Zeichens klein Aundder Nummer des Zeichens klein Zliegt sozwischen diesen beiden Nummern liegen dann haben wirein KleinbuchstabenWissen korrigierenwie korrigiere ich ich subtrahieren?? klein Adie Nummer des Zeichens klein Aund ich addiere die Nummer des Zeichensgroß A das ist einesimple Art wie man das korrigiert kriecht wenn sie hier die Nummer des Zeichens klein Ahätten in Zziehen sie die abreden nur raus addieren die Nummer des Zeichens groß Aund haben die Nummer des Zeichens groß Amit ?? klein A Ha haben sondern Wesen sie ein zweiter das heißt im Ergebnis haben sie eins mir groß Bund so weiter muss funktionierenso nehme kein Kleinbuchstabenhabenden Kinder sorgen Nachwuchsturnunser Original zurückdas es eine Funktion die KleinbuchstabenGroßbuchstabenmachtdie welche sofort mal anist das Thema da erledigtwird man durch diese Zeichenkettedurchgehen müssen Buchstabe für Buchstabe offensichtlichBayer hinausgeht ?? durch den Kot durchgucken was ist eigentlich was raffinierter istaneine for-SchleifewahrscheinlichihrZeichen für Zeichen durcherweitern müssen Komma was man so durch diese Zeichenkette das Signal des ?? glaub ich auch größtenteils wirdich gehe durch die Originalzeichenkettedurch ihn gleich eins den ersten Buchstaben habe ich schon erledigtso lange wie ich noch nicht am Ende der Zeichenketteangelangt bin ungleich null ?? Punkt solange ich noch nicht am Ende der Zeichenkette angelangt binineiner Schrittenund jetzt muss ich eben nachgucken das aktuelle Zeichendannwelchewelchen Code hätte das aktuelle Zeichenwenn der Code nicht derselbe ist wieder mit einer vor Speicher hinabum diesen Code abzuspeichernfür die am geschicktesten ein ganzes Gezwitscher ?? Cases wird sehr unübersichtlichglaube ich ?? am geschicktestendiese Tabelletatsächlich auchdiese Tabelle ja auch tatsächlich als Tabelle anzulegen??amScharellevon mir ausgerade zählensie istsechs Zeilenhochund eins zwei drei vier fünf sechs sieben achtSpalten bereitsseinen hochweitenWaldso jede Spalte hat acht Einträge schreibe des Teufels und Terminhintermir einfach einlauter Nullen dass die Nummerzeichenkommt ja nicht vorbin ich am Ende der Zeichenkette deshalb kommt die null als Zeichen nicht vor Punktjetzt kann ich meine Tabelle eintragenwie SPVnatürlich die Nummer LeerzeichenBFPPunktVCGJKQS X setztÜbung erhaltenSiedortKomma KirKafuEssexselbstKomma bei dem nur der ?? Weg XXsetzdas aller schlimmstedas ist also alles was ich im S und C anhörtdann kommt die und zehnersten Warnzeichenihrdie ?? und siehaben WLnicht viel drin in der Zeiledann haben wir imM und Nund dann habe und alsletzten dass erein zwei drei vier fünf machtes auch nirgendwodafür einenKuchen über soll S acht sein das sind acht tausend achtdas sind acht ??von der Tabelle gehe ich ausalsoBuchstabe für Buchstabe angucken den ersten Hammer schon geht sie mit eins GroßbuchstabenBuchstabe A anguckenund es in der Tabelle nachguckendass es die Nummer der Zeileplus einsfür die Buchstaben in dieser Zeile möchte ichdieZiffer den Code eins generierenfür diese den Code zwei und so weiter in welcher Zeile steht mein Buchstabe B Wort vorkommtdie Zeit plus eins abspeichernes sei denn das Zeichen vorher hatte dieselbe Nummer bekommt um ein Kultur vorbei dieselbe das ?? nachweisbarwas sie gerade mit erster die Tabelle abdrucken ob das Zeichen drinnen ist und stellt fest wenn ja in welcher Zeilenoch eine Anmerkung für die Faulen wenn sie die null nicht hinschreibenwenn die automatisch ergänztich habe viel zu viel Arbeit gemacht dirsicher gar nicht hinschreiben?? ?? Maczu gucken ob der Compiler das immer noch mager mag es okay so ist natürlich viel einfacher ohne die neuensobald sie initialisierenbitte alles was sie nicht initialisieren mit Nullen gefülltziehungsweise dass sie sogar statisch damit es richtig doll gefüllt aberwir sind auf jeden Fall auf der sicheren Seite Punktsie geht die Tabelle durch und versuch mal Leerzeichen es von I in großer Kleinschreibung in der Tabelle zu findenersterSchritt besitzt keine gemacht ?? erster Schritt wäre mal das Zeichen Wasser steht in großenBuchstaben zu wandelnPunkt sowas setztNZ ?? Z ist gleichklein zu groß??von es von I das Zeichenmeistersteht wenn das Kleinbuchstabe Smachen Großbuchstaben draußendas mir immer die erste Maßnahmesomit gegen zwei vor Schleifendurch meinRL durchsicherheitshalber das noch malwas hier steht wenn sie das Recht anlegenist die Größesoll sechs hoch und acht breit seindas heißt nicht dass jetzt einigte sichauf ?? zugreifen sondern dass sie sagt nur wie groß es wirdich nehme eineVariablein ?? war von mir aus eine Variable mit der ich durch die ZeilengeheNotezeiledas Ding hat sechs Zeilennetzesalso nur fünfdas ist die Einrichtungdann gehe ichauch noch die Spaltendurchden SBnicht sehr geschickt benannt aber wurde ich eigentlich durch die klein HachtB plus plusversucheich das Zeichen der zu findenist das Zeichenaus der Zeichenkettedasselbe wie das was in der Tabelle stehtan der StelleKomma an der Stelle A für die Zeile und die Spaltesteht das Zeichendann weiß ich dass der nächste Coachdie Nummer der Zeile plus eins wäreeinmal speichern ihrZiel nicht das warso dein Ding mal im Kot abwenn ich das Zeichen gefunden habe merk ich mir als CoachdieNummerder Zeile plus einsKomma zeigenwenn sie das Zeichen C findenist der CodezeilenullZeile eins der Cortes zwei wenn sie das Zeichen D findenist der Codezeile neue Zeile eins seine zweiein zwei drei ?? das Zeichen D finden ist der Code drei und so weiter immer eins mehr als die Zeiledas es jetzt nicht effizientenFragen schonkomme ich da jetzt mit Rex Rausrexaus zwei voraus?? mit einem Black kommt aus dem Inneren Voraustrickskönnen auch bis zweite ich lass es bei der so stehenuns heute noch hinter Ineffizientein Schleifen abbrechen Klammer zuso hier jetzt das Zeichen was ich als nächstes speichernmüsstees sei denndas Zeichen davor ist das See bisher kein kein Symbol wiederholt werden mit den doppelten Buchstaben habensollen Zimmer soll ich noch mal die Zahl kommenPunkt das ist also nicht für Buchstabe verdoppelt ist oder nichtseist bevor ich das Ding abspeicheremüsste ich noch checkenmüsste Prüfenistes davor was anderes ich hab jetzt also ?? ist davor ein anderesan andere gut Nummer eine andere Zifferist davor eine andere Ziffer Fragezeichendas ?? ausbuchstabierenwenn das der Fall ist dann werde ich dieses Zeichen speichernin meinem Coach Code vonKomma woaber auch noch ist gleich zehnwenn davon andere Ziffer ist merk ich mir dasokay das soll merken woinsGansenabund wenn die Notestelle von den Codeaber schon gesetzt wenngleich eins davonan der Stelle N werde ich das setzen und danach werde ich dienächste Stelle benutzenkann es sein das ich hier schon fertig bin mit endlos plus das heißt ich muss hierdas angucken ?? die Fortsetzungsbedingungjene Vorstädte eine Fortsetzungsbedingungman soll ich weitermachen wenn ich nicht eine der Zeichenkette bin undwenn ich hier noch nicht alle aufgefüllthabe Nnull eins zweidreisolange entkleinerist als vierhabe ich noch nicht alle aufgefülltdiese zusammengesetzteBedingung hier das gab auch eine Frage also zwischen den beiden SemikolonKomfortmuss irgendetwas stehen das war wieder falsch wirdwenn sich diese eine Bedingung hierbei drei Seiten Programmcodestreckt egalwenn da was wahres oder was falsches rauskommtist der Compiler wirklichdieses Ebene Nummer kompliziertfor-Schleife mach ich so lange wieich nicht am Ende bin der Zeichenketteder Original Zeichenkette undich auch hier in meinem Code noch nicht durch solange macht die for-Schleifejetzt fehlt mir der noch ist davor eine andere Zifferwas muss ich hier tunwas schreibe ich da ?? tatsächlich als Bedingung eingenau ist sie ungleich dem Eintrag davor zieht ungleich dem Eintrag davor Kot vonN minus einsN minus eins immer gefährlich aus in C wird das funktionierenkann ich hier Ärger haben sich irgendwelche Sonderfälle betrachten wenn ich das hier macheoder geht das immer klarich möchte eigentlich nicht wenn ich diese Stelle fülle mit einer Ziffer völlig die ja wenn ich diese Stelle fülle möchte ich nicht gucken ob diese Ziffer gleich dem Buchstaben da vorne ist das wir bis Ende ziemlicham ?? offen steht davon immer Buchstabe wenn ich komische Wörter habe in welchem Markennamenkönnen durch passives davon schon Ziffer steht das Werk ganz schlimm und ich im Sinne des Erfinders ??ich würde gernedas aller erste Mal passiertwürde ich nicht vergleichen ob die Stelle davon andere Ziffer enthält in die er sich den Intel sowieso keine ZifferSeite die man hatte komische Wörter eingegebenhier würde ich sagenwenn N gleicheins ist oderdas Geldwenn ich zum ersten Mal zwei Ziffer rein schreibe das über einen gleich einsoderweiter hinten in N größer wird aber ich ?? andere Ziffer reinschreiben wollen würde dann dasPunktdas könnte es jetzt sein mal sehen?? Fehler sicher schon mal komischGirlsneuer ?? für Ausländer ausdas sieht noch nicht richtig aus Carvalhowie auchja interessantich habe was verbocktwas ist da schief warumsichblödsinnige Zeichen in meinem Ergebnis Codeform stimmt das Ergebniscode nichtgenau dieser seine Zeichenkette werdenwas ich abspeichereist aberdie jeweilige Zahl Speicherzahlenvoneinsbis sechs ?? in meine Zeichenketteals die Versuche nachSymbolemit der Nummer eins bis sechs zu generieren lassen sich blödsinnige muss den plus die Nummer des Symbols nullich möchte aus der Zahl wirklich die Nummer eines Symbols machenes der VersuchAusführensechs null dreinächstehat Wikipedia noch was anderes raus als sechs null drei der Salon auch falsch bestimmtdie sechs stehen die drei Kohlevorkommendie Null sollte natürlich nicht vorkommt ?? null am Ende ist auch okayaber diese null jetzt aber Fehlerwie kommt die Null in der Mitte zustande was ist da faulgenau wenn ich ein Vokal habeoder enger an das Zeichen was nicht in der Tabelle vorkommtläuft dieSchleife hierdurchfindet nicht in der TabelleC bleibt null in das schöne istwenn er was findet wird sie eins bis sechs Rennen nichts findet bleibt zehn null?? nichts findet will ich aber auch nichts ein Fragezeichenhier prüfe ich gefälligst erst mal ist sie nicht null hatte überhaupt was gefundenund dann prüfe ich ob es der erstedie erste Ziffer ist in den Code schreibe ich in jedem Fallund es nicht die erste Ziffer es ob sie verschieden ist von der davorso sitzen insgesamt auszusammen stimmensechs drei drei??immer noch falls das mit der Verdopplung funktioniert Beistrichihr müsste das Ding doch eigentlich mit kriegen das es vorher auchden Code drei hattewahrscheinlich sich mit zu kriegen dass das vorher auch den Code drei hatte was ist daran fauldas Problem ist dieses hier was ich in Kornspeichersind ja die Nummern von Symbolen immer die Umrechnungjährlich nicht die Umrechnung in Code steht die Nummer des Symbols IC steht noch eine nackte Zahl vergleiche die nackte Zahl mit der Nummer des Symbols und ist natürlich verschiedendannfolgendes gefällt mir besser dass ich nicht zum Rechen auf Symbole da mache sodass es Umrechnungssymboleda machedann habe ich ein für alle Malab da die Nummer von Symbolen und er müsse jetzt das doppelte C hinkriegenAusrüsterunten hinsechs drei fünfund letzter Testwas ist wenn ichhier nurRezeptewerdendamit den Zehnten aufhören??sechster nullsein soweit zu funktionierenKomma dass ich als Funktion geschriebenenHausaufgabe schreiben das man als Funktionund auf diese Weise kann man völlig willig die AussprachevonZeichenkettenansatzweiseuntersuchen sind zwei Zeichenketten gleich ausgesprochen oder verschieden