AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Algorithmus zur Identifikation von bestimmten Wörtern
Thema durchsuchen
Ansicht
Themen-Optionen

Algorithmus zur Identifikation von bestimmten Wörtern

Ein Thema von Macpersil · begonnen am 5. Mär 2010 · letzter Beitrag vom 8. Mär 2010
Antwort Antwort
Macpersil

Registriert seit: 20. Feb 2009
Ort: Düsseldorf
21 Beiträge
 
#1

Algorithmus zur Identifikation von bestimmten Wörtern

  Alt 5. Mär 2010, 21:16
Hallo!
Ich schreibe eine Facharbeit im Fach Informatik und meine Aufgabe ist die Entwicklung eines Algorithmus zur Identifikation von bestimmten Wörtern.
Das ist so viel wie eine Autokorrektur von ausgewählten Wörtern...
Zunächst soll sich das ganze auf "begin" "end" und "procedure" beschrenken.

Ich habe auch schon ein paar Ideen aber wirkliche Quellen habe ich im Netz nicht gefunden.

Meine Idee für "tippfehler" ist folgende:

ich weise jedem Buchstaben einen Wert zu und addiere diese dann. Es entsteht eine Summe anhand ich das Wort identifizieren kann... Das ist aber auch nur für tippfehler der fall...

habt ihr vielleicht ideen wie ich wirklich falsch geschriebene wörter korrigieren kann?

Danke!
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Algorithmus zur Identifikation von bestimmten Wörtern

  Alt 5. Mär 2010, 21:48
Der Klassiker ist bei solchen Aufgaben die Levenshtein-Distanz, was schon mal ein ganz netter Ansatz sein dürfte.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Panthrax

Registriert seit: 18. Feb 2005
286 Beiträge
 
Delphi 2010 Enterprise
 
#3

Re: Algorithmus zur Identifikation von bestimmten Wörtern

  Alt 5. Mär 2010, 23:59
Die meisten Algorithmen arbeiten ohne Zusatzinformationen, wie etwa über die Sprache. So ist es etwa für den Levenstein-Algorithmus bedeutungslos, ob er "ABC" mit "ABCD", "Schal" mit "Schall" oder "Français" mit "Française" vergleicht. Tippfehler korrigieren, bedeutet, zunächst aus einer Eingabe ein echtes Wort zu machen, und dann sollte natürlich nur zu solchen Wörtern korrigiert werden, die an diese Stelle passen: "ein vlaues Auto" wird dann "ein flaues Auto" oder besser doch "ein blaues Auto"? Außerdem haben Tippfehler bestimmte Ursachen, die es sich anzusehen lohnt. Im Beispiel liegt V direkt neben F und B.

Ich denke, das waren genug Tipps für mehr als eine Arbeit... Viel Erfolg!
"Es gibt keine schlimmere Lüge als die Wahrheit, die von denen, die sie hören, missverstanden wird."
  Mit Zitat antworten Zitat
invalid_operation
(Gast)

n/a Beiträge
 
#4

Re: Algorithmus zur Identifikation von bestimmten Wörtern

  Alt 6. Mär 2010, 00:55
"habt ihr vielleicht ideen wie ich wirklich falsch geschriebene wörter korrigieren kann?"

NEIN! Denn wir es wirklich könnten, hätten wir es uns (Microsoft/Apple) bereits patentieren lassen!

"ich weise jedem Buchstaben einen Wert zu und addiere diese dann. Es entsteht eine Summe anhand ich das Wort identifizieren kann... Das ist aber auch nur für tippfehler der fall..."

Sprich Quersumme oder was?
Aber welchem Buchstaben weist Du welchen Wert zu?

Sind Deine codierten Buchstabenwerte ASCII, ANSI oder UTF-irgenwas?

"neger" und "regen" bekommen vermutlich die gleichen Quersummen?

Um überhaupt vergleichen zu können, brauchst Du eine sehr umfangreiche Wortliste, über die Du für Deine Zwecke eine Quersummenliste bilden musst?

Wenn eine Rechtschreibkorrektur mittels Quersummen doch nur so einfach wäre...

Dein Thema ist IMHO eher für eine Habilitation geeignet!

Viel Glück!
  Mit Zitat antworten Zitat
Macpersil

Registriert seit: 20. Feb 2009
Ort: Düsseldorf
21 Beiträge
 
#5

Re: Algorithmus zur Identifikation von bestimmten Wörtern

  Alt 8. Mär 2010, 08:37
Danke soweit
@Panthrax
sicher würden neger und regen zum selben Ergebnis führen...
Allerdings habe ich vergessen zu erwähnen, dass ich einen Delphi-Sourcecode bearbeiten soll und dabei nur wenige ausgewählte Wörter identifizieren muss...
Soweit: 'begin' , 'procedure', 'end'

Im endeffekt soll ich ja einen eigenen Algorithmus erarbeiten, die Levenshtein-Distanz ist ganz nett und hat mich auf eine weitere idee gebracht:

ich möchte jetzt nach dem ersten durchlauf mit der Summe die Anzahl der erforderlichen Änderungen berechnen. Also z.B. wieviele änderungen das Wort neger braucht um es regen werden zu lassen.
in diesem Fall ja 5 also recht unwahrscheinlich dass es wirklich das Wort ist welches ich suche...
zudem möchte ich ein zweidimensionales Array als abbild der Tastatur erstellen. Sinn der Sache ist, dass man den Abstand der einzelnen Buchstaben für die Wahrscheinlichkeit eines Tippfehlers verwenden kann.

Außerdem habe ich ein Problem und zwar mit jedem Algorithmus -> ich muss die variabeln außenvor lassen... zu groß ist die wahrscheinlichkeit dass jemand das wort 'ebin' als Variable wählt.



@invaild_operation
Es ist auch wichtig, dass ich offensichtliche Schwächen im Algorithmus habe und ich bin für jede hier erwähnte Schwäche dankbar, denn eine kritische Reflexion muss ich auch verfassen :S


"Um überhaupt vergleichen zu können, brauchst Du eine sehr umfangreiche Wortliste, über die Du für Deine Zwecke eine Quersummenliste bilden musst?"
Könnte ich den Benutzer ja erstellen lassen! Und die Summe berechnen lassen
Genial wäre natürlich wenn jeder User diese automatisch auf einen Server uploaded und andere auf diese Liste dann zurückgreifen also diese beim Programmstart automatisch aktualisieren.



"Dein Thema ist IMHO eher für eine Habilitation geeignet!"
Sag das meinem Lehrer


VIELEN DANK !!!
  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 15:55 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