Zu scheinst aus meinen Worten zu schließen, dass die „mir bekannte Forschung“ bloß noch keinen Weg gefunden hat, das von Dir gestellte Problem zu lösen. Was Du nicht zu verstehen scheinst, ist, dass das Problem nicht in der Forschung, sondern in Deiner Forderung liegt.
Im Grunde kannst Du gar nicht genau beschreiben, was das System können soll. Du beschreibst umgangssprachlich, was Du Dir als Ergebnis vorstellst, aber nicht einmal das präzisierst Du. Vor allem aber übersiehst Du, dass Du in dieser Beschreibung allerlei Hintergrundwissen einfließen lässt, das Du nicht explizit machst.
Du forderst von dem System im Grunde, menschliches Verhalten zu immitieren. Wenn Du aber nicht in der Lage bist, (1) dieses Verhalten genau zu beschreiben, und (2) das Hintergrundwissen, das Du als Mensch besitzt, auch dem System zur Verfügung zu stellen, dann muss Dein Vorhaben scheitern.
Was Du tatsächlich tun kannst, habe ich Dir bereits anhand von ein paar Ansätzen beschrieben. Aus den beschriebenen Gründen habe ich leider keinen Vorschlag für eine semantische Kontext- oder Sinn-Analyse, wie sie Dir vorschwebt. Ein einfacher, rein lexikalischer Ansatz wäre folgender:
* Zunächst würde ich mir eine Wörterbuchdatei besorgen, die alle wesentlichen Wörter enthält, die Du erkennen möchtest. Indem Du Deine Texte mithilfe dieses Wörterbuchs aussiebst, erkennst Du bereits einen Großteil der Fehler. („Diemstag“ beispielsweise.)
* Dann legst Du eine Datenstruktur an, die Wörter, zusammen mit zusätzlichen statistischen Informationen, speichern kann. Alternativ auch eine Struktur, die Wortpaare speichern kann und wie oft diese Paare gemeinsam vorkommen - und in welchem Maximalabstand voneinander.
* Dann würde ich einen Parser schreiben, der Deine Texte nach Wörtern splittet. In einem Trainingsdurchlauf mit einer größeren Anzahl Deiner eigenen Texte speicherst Du die vorkommenden Wörter sowie alle Zusatzinformationen, die Dir einfallen (Häufigkeit, Häufigkeit von Wortpaaren, Häufigkeit von Wortpaaren mit bestimmten Maximalabständen usw.).
* Und schließlich tust Du für einen vorliegenden Testsatz das Analoge: Du splittest nach Wörtern und prüfst in Deiner vorher angelegten Wort-Datenbank, ob beispielsweise das Vorkommen eines Wortes gleich nach einem anderen wahrscheinlich oder unwahrscheinlich ist. Oder ob z.B. die Wörter „Peter“ und „Meeting“ oft in einem gewissen Maximalabstand voneinander vorkommen.
Das ist ein ganz einfaches lexikalisches Verfahren, das wirklich nur programmiert werden muss. An mehreren Punkten in diesem Ablauf kann man nun intelligente Methoden einbauen: Beispielsweise kann man Wörter auf vorhersehbare Tippfehler (Buchstabendreher, Auslassungen…) testen und die falschen Wörter als Synonyme zu den richtigen behandeln. Oder man könnte die gefundenen Wörter als Knoten in ein Bayessches Netz einbauen und versuchen, komplexere statistische Zusammenhänge zu entdecken.
Man könnte sogar - und das könnte durchaus in die Richtung gehen, die Dir vielleicht vorschwebt - mithilfe von Maximum Likelihood Methoden versuchen, aus den gefundenen Wörtern einen zugrundeliegenden Kontext zu extrahieren. Ein einfaches BN mit einer geringen Anzahl an Knoten könnte dazu durchaus in der Lage sein.
Beispiel: Ein Netzwerk bestehend aus einem Ursprungsknoten, der drei Folgeknoten besitzt. In den Folgeknoten lässt Du Abfolgen von jeweils drei aufeinanderfolgenden Wörtern (oder auch nur Substantiven) durchlaufen, der Ursprungsknoten soll aus diesen drei Wörtern einen Kontext ableiten.
All das sind aber keine Standardprobleme, für die es fertige Standardfilter und Standardalgorithmen gibt. Manche der auftretenden Probleme muss man kreativ lösen. (In der Praxis haben wir oft mehrere Stunden nur damit verbracht, Perl-Scripte zu schreiben, um einen Datensatz so aufzubereiten, dass wir ihn statistisch verarbeiten konnten.)