Heuristik zum Sprachen erkennen

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Heuristik zum Sprachen erkennen

Beitrag von Christian »

Hat jemand eine Idee für eine Heuristik um Sprachen zu erkennen ?
Ich will also wissen ob ein Text in deutsch, english, italienisch u.s.w. geschrieben ist. Ohne dort grossartig mit Wortlisten oder Datenbanken zu hantieren.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Benutzeravatar
theo
Beiträge: 10871
Registriert: Mo 11. Sep 2006, 19:01

Re: Heuristik zum Sprachen erkennen

Beitrag von theo »

Christian hat geschrieben:Hat jemand eine Idee für eine Heuristik um Sprachen zu erkennen ?
Ich will also wissen ob ein Text in deutsch, english, italienisch u.s.w. geschrieben ist. Ohne dort grossartig mit Wortlisten oder Datenbanken zu hantieren.
Du bist ja lustig.
Als erstes würde ich mal die Eigenheiten der Alphabete anschauen.
z.B öäü - > Deutsch
éàè Franz oder Italienisch wobei Ital. folgende Buchstaben z.B. nicht im Alphabet hat.
j k w x y
Franz aber nicht Ital: ç

etc pp.

Kann aber immer nur eine Annäherung sein.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Eine annäherung auf 95% reicht mir schon ;) Heuristik eben.
Das mit den sonderzeichen is schon ne sehr gute idee.
Artikel sind ach noch im Bereich des möglichen. Wenn noch jemand ideen ha, immer her damit ;).

Vllt gibts ne Tabelle wo Bereiche von Unicodezeichen zusammen gefasst sind ?
sprich 1567-1973 = Japanisch, 653-695 = Deutsche umlaute und sonderzeichen sowas in der art oder ne API Funktion die das kann, wird warscheinlich niemand kennen aber man kann ja mal fragen.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

Es gibt doch auch, zum bspw. zur dechiffrierung Häufigkeitsverteilungen. (Bspw. treten im Deutschen e und n am häufigsten auf.)

Man bräcuhte dazu halt geeignete Listen, wie diese: http://www-dm.informatik.uni-tuebingen. ... noalph.pdf" onclick="window.open(this.href);return false;

Man könnte also die Häufigkeit der einzelnen Buchstaben zählen, und diese dann mit den Häufigkeitstabellen der Unterschiedlichen Sprachen abgleichen.
Johannes

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Fürs deusche gut und schön aber wo die anderen Häufigkeiten herbekommen ?
Ich denke das wird zu aufwendig.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

Kommt drauf an, was für Sprachen. Am einfachsten einfach mal irgend nen Text von ner Webseite oder so selbst durchzählen zu lassen, dafür gibts ja fertige Programme.

Die Frage wäre ja, was willst du eigentlich alles damit Abdecken?
Johannes

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Soviel wie möglich :) Was sich denk ich mal über die Unicode Geschichten machen liesse. Praktisch geht es hauptsächlich darum die Sprache von Mails zu erkennen. ´s prometheus kann ja mittlerweile mit pop3 Konten umgehn und da versuch ich nat. Spam zu filtern. Spam kann man ziemlich gut über die landes sprache filtern ;).
Die 2. Anwendung ists Thalia erkennen zu lassen in welcher Sprache mit ihr gesprochen wird und entsprechende Fragekataloge zu verwenden.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Benutzeravatar
theo
Beiträge: 10871
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Christian hat geschrieben:Soviel wie möglich :) Was sich denk ich mal über die Unicode Geschichten machen liesse. Praktisch geht es hauptsächlich darum die Sprache von Mails zu erkennen. ´s prometheus kann ja mittlerweile mit pop3 Konten umgehn und da versuch ich nat. Spam zu filtern. Spam kann man ziemlich gut über die landes sprache filtern ;).
Die 2. Anwendung ists Thalia erkennen zu lassen in welcher Sprache mit ihr gesprochen wird und entsprechende Fragekataloge zu verwenden.
Spam kommt bei mir immer Englisch oder mal Deutsch an. Kann mich nicht erinnnern jemals Russischen oder Japanischen Spam bekommen zu haben.

Ausserdem brauchst du wahrscheinlich schon relativ viel Text um eine Wahrscheinlichkeit zu errechnen. Mit zwei drei Sätzen wird das kaum ohne Wortlisten zu machen sein.

Benutzeravatar
theo
Beiträge: 10871
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Das mit den Unicode Tabellen hatte ich mal zusammengestellt (und wieder gefunden? ;-)
Vielleicht kannste das ja brauchen.
Die Demo habe ich in der GTK2 IDE gemacht. Die Zeichen sind zweimal Kyrillisch (Russisch) und dreimal Hangul (Koreanisch).
Auf Win musste das vielleicht anders eingeben oder die Zeichen von File laden.
Vielleicht verwurschtelt sie auch der Browser.

Code: Alles auswählen

type TUnicodeRange=record
S:Cardinal;
E:Cardinal;
PG:String[50];
end;
 
const
MaxUnicodeRanges=153;
UnicodeRanges:array[0..MaxUnicodeRanges] of TUnicodeRange = (
 
(S:$0000;E:$007F;PG:'Basic Latin'),
(S:$0080;E:$00FF;PG:'Latin-1 Supplement'),
(S:$0100;E:$017F;PG:'Latin Extended-A'),
(S:$0180;E:$024F;PG:'Latin Extended-B'),
(S:$0250;E:$02AF;PG:'IPA Extensions'),
(S:$02B0;E:$02FF;PG:'Spacing Modifier Letters'),
(S:$0300;E:$036F;PG:'Combining Diacritical Marks'),
(S:$0370;E:$03FF;PG:'Greek and Coptic'),
(S:$0400;E:$04FF;PG:'Cyrillic'),
(S:$0500;E:$052F;PG:'Cyrillic Supplement'),
(S:$0530;E:$058F;PG:'Armenian'),
(S:$0590;E:$05FF;PG:'Hebrew'),
(S:$0600;E:$06FF;PG:'Arabic'),
(S:$0700;E:$074F;PG:'Syriac'),
(S:$0750;E:$077F;PG:'Arabic Supplement'),
(S:$0780;E:$07BF;PG:'Thaana'),
(S:$07C0;E:$07FF;PG:'NKo'),
(S:$0900;E:$097F;PG:'Devanagari'),
(S:$0980;E:$09FF;PG:'Bengali'),
(S:$0A00;E:$0A7F;PG:'Gurmukhi'),
(S:$0A80;E:$0AFF;PG:'Gujarati'),
(S:$0B00;E:$0B7F;PG:'Oriya'),
(S:$0B80;E:$0BFF;PG:'Tamil'),
(S:$0C00;E:$0C7F;PG:'Telugu'),
(S:$0C80;E:$0CFF;PG:'Kannada'),
(S:$0D00;E:$0D7F;PG:'Malayalam'),
(S:$0D80;E:$0DFF;PG:'Sinhala'),
(S:$0E00;E:$0E7F;PG:'Thai'),
(S:$0E80;E:$0EFF;PG:'Lao'),
(S:$0F00;E:$0FFF;PG:'Tibetan'),
(S:$1000;E:$109F;PG:'Myanmar'),
(S:$10A0;E:$10FF;PG:'Georgian'),
(S:$1100;E:$11FF;PG:'Hangul Jamo'),
(S:$1200;E:$137F;PG:'Ethiopic'),
(S:$1380;E:$139F;PG:'Ethiopic Supplement'),
(S:$13A0;E:$13FF;PG:'Cherokee'),
(S:$1400;E:$167F;PG:'Unified Canadian Aboriginal Syllabics'),
(S:$1680;E:$169F;PG:'Ogham'),
(S:$16A0;E:$16FF;PG:'Runic'),
(S:$1700;E:$171F;PG:'Tagalog'),
(S:$1720;E:$173F;PG:'Hanunoo'),
(S:$1740;E:$175F;PG:'Buhid'),
(S:$1760;E:$177F;PG:'Tagbanwa'),
(S:$1780;E:$17FF;PG:'Khmer'),
(S:$1800;E:$18AF;PG:'Mongolian'),
(S:$1900;E:$194F;PG:'Limbu'),
(S:$1950;E:$197F;PG:'Tai Le'),
(S:$1980;E:$19DF;PG:'New Tai Lue'),
(S:$19E0;E:$19FF;PG:'Khmer Symbols'),
(S:$1A00;E:$1A1F;PG:'Buginese'),
(S:$1B00;E:$1B7F;PG:'Balinese'),
(S:$1D00;E:$1D7F;PG:'Phonetic Extensions'),
(S:$1D80;E:$1DBF;PG:'Phonetic Extensions Supplement'),
(S:$1DC0;E:$1DFF;PG:'Combining Diacritical Marks Supplement'),
(S:$1E00;E:$1EFF;PG:'Latin Extended Additional'),
(S:$1F00;E:$1FFF;PG:'Greek Extended'),
(S:$2000;E:$206F;PG:'General Punctuation'),
(S:$2070;E:$209F;PG:'Superscripts and Subscripts'),
(S:$20A0;E:$20CF;PG:'Currency Symbols'),
(S:$20D0;E:$20FF;PG:'Combining Diacritical Marks for Symbols'),
(S:$2100;E:$214F;PG:'Letterlike Symbols'),
(S:$2150;E:$218F;PG:'Number Forms'),
(S:$2190;E:$21FF;PG:'Arrows'),
(S:$2200;E:$22FF;PG:'Mathematical Operators'),
(S:$2300;E:$23FF;PG:'Miscellaneous Technical'),
(S:$2400;E:$243F;PG:'Control Pictures'),
(S:$2440;E:$245F;PG:'Optical Character Recognition'),
(S:$2460;E:$24FF;PG:'Enclosed Alphanumerics'),
(S:$2500;E:$257F;PG:'Box Drawing'),
(S:$2580;E:$259F;PG:'Block Elements'),
(S:$25A0;E:$25FF;PG:'Geometric Shapes'),
(S:$2600;E:$26FF;PG:'Miscellaneous Symbols'),
(S:$2700;E:$27BF;PG:'Dingbats'),
(S:$27C0;E:$27EF;PG:'Miscellaneous Mathematical Symbols-A'),
(S:$27F0;E:$27FF;PG:'Supplemental Arrows-A'),
(S:$2800;E:$28FF;PG:'Braille Patterns'),
(S:$2900;E:$297F;PG:'Supplemental Arrows-B'),
(S:$2980;E:$29FF;PG:'Miscellaneous Mathematical Symbols-B'),
(S:$2A00;E:$2AFF;PG:'Supplemental Mathematical Operators'),
(S:$2B00;E:$2BFF;PG:'Miscellaneous Symbols and Arrows'),
(S:$2C00;E:$2C5F;PG:'Glagolitic'),
(S:$2C60;E:$2C7F;PG:'Latin Extended-C'),
(S:$2C80;E:$2CFF;PG:'Coptic'),
(S:$2D00;E:$2D2F;PG:'Georgian Supplement'),
(S:$2D30;E:$2D7F;PG:'Tifinagh'),
(S:$2D80;E:$2DDF;PG:'Ethiopic Extended'),
(S:$2E00;E:$2E7F;PG:'Supplemental Punctuation'),
(S:$2E80;E:$2EFF;PG:'CJK Radicals Supplement'),
(S:$2F00;E:$2FDF;PG:'Kangxi Radicals'),
(S:$2FF0;E:$2FFF;PG:'Ideographic Description Characters'),
(S:$3000;E:$303F;PG:'CJK Symbols and Punctuation'),
(S:$3040;E:$309F;PG:'Hiragana'),
(S:$30A0;E:$30FF;PG:'Katakana'),
(S:$3100;E:$312F;PG:'Bopomofo'),
(S:$3130;E:$318F;PG:'Hangul Compatibility Jamo'),
(S:$3190;E:$319F;PG:'Kanbun'),
(S:$31A0;E:$31BF;PG:'Bopomofo Extended'),
(S:$31C0;E:$31EF;PG:'CJK Strokes'),
(S:$31F0;E:$31FF;PG:'Katakana Phonetic Extensions'),
(S:$3200;E:$32FF;PG:'Enclosed CJK Letters and Months'),
(S:$3300;E:$33FF;PG:'CJK Compatibility'),
(S:$3400;E:$4DBF;PG:'CJK Unified Ideographs Extension A'),
(S:$4DC0;E:$4DFF;PG:'Yijing Hexagram Symbols'),
(S:$4E00;E:$9FFF;PG:'CJK Unified Ideographs'),
(S:$A000;E:$A48F;PG:'Yi Syllables'),
(S:$A490;E:$A4CF;PG:'Yi Radicals'),
(S:$A700;E:$A71F;PG:'Modifier Tone Letters'),
(S:$A720;E:$A7FF;PG:'Latin Extended-D'),
(S:$A800;E:$A82F;PG:'Syloti Nagri'),
(S:$A840;E:$A87F;PG:'Phags-pa'),
(S:$AC00;E:$D7AF;PG:'Hangul Syllables'),
(S:$D800;E:$DB7F;PG:'High Surrogates'),
(S:$DB80;E:$DBFF;PG:'High Private Use Surrogates'),
(S:$DC00;E:$DFFF;PG:'Low Surrogates'),
(S:$E000;E:$F8FF;PG:'Private Use Area'),
(S:$F900;E:$FAFF;PG:'CJK Compatibility Ideographs'),
(S:$FB00;E:$FB4F;PG:'Alphabetic Presentation Forms'),
(S:$FB50;E:$FDFF;PG:'Arabic Presentation Forms-A'),
(S:$FE00;E:$FE0F;PG:'Variation Selectors'),
(S:$FE10;E:$FE1F;PG:'Vertical Forms'),
(S:$FE20;E:$FE2F;PG:'Combining Half Marks'),
(S:$FE30;E:$FE4F;PG:'CJK Compatibility Forms'),
(S:$FE50;E:$FE6F;PG:'Small Form Variants'),
(S:$FE70;E:$FEFF;PG:'Arabic Presentation Forms-B'),
(S:$FF00;E:$FFEF;PG:'Halfwidth and Fullwidth Forms'),
(S:$FFF0;E:$FFFF;PG:'Specials'),
(S:$10000;E:$1007F;PG:'Linear B Syllabary'),
(S:$10080;E:$100FF;PG:'Linear B Ideograms'),
(S:$10100;E:$1013F;PG:'Aegean Numbers'),
(S:$10140;E:$1018F;PG:'Ancient Greek Numbers'),
(S:$10300;E:$1032F;PG:'Old Italic'),
(S:$10330;E:$1034F;PG:'Gothic'),
(S:$10380;E:$1039F;PG:'Ugaritic'),
(S:$103A0;E:$103DF;PG:'Old Persian'),
(S:$10400;E:$1044F;PG:'Deseret'),
(S:$10450;E:$1047F;PG:'Shavian'),
(S:$10480;E:$104AF;PG:'Osmanya'),
(S:$10800;E:$1083F;PG:'Cypriot Syllabary'),
(S:$10900;E:$1091F;PG:'Phoenician'),
(S:$10A00;E:$10A5F;PG:'Kharoshthi'),
(S:$12000;E:$123FF;PG:'Cuneiform'),
(S:$12400;E:$1247F;PG:'Cuneiform Numbers and Punctuation'),
(S:$1D000;E:$1D0FF;PG:'Byzantine Musical Symbols'),
(S:$1D100;E:$1D1FF;PG:'Musical Symbols'),
(S:$1D200;E:$1D24F;PG:'Ancient Greek Musical Notation'),
(S:$1D300;E:$1D35F;PG:'Tai Xuan Jing Symbols'),
(S:$1D360;E:$1D37F;PG:'Counting Rod Numerals'),
(S:$1D400;E:$1D7FF;PG:'Mathematical Alphanumeric Symbols'),
(S:$20000;E:$2A6DF;PG:'CJK Unified Ideographs Extension B'),
(S:$2F800;E:$2FA1F;PG:'CJK Compatibility Ideographs Supplement'),
(S:$E0000;E:$E007F;PG:'Tags'),
(S:$E0100;E:$E01EF;PG:'Variation Selectors Supplement'),
(S:$F0000;E:$FFFFF;PG:'Supplementary Private Use Area-A'),
(S:$100000;E:$10FFFF;PG:'Supplementary Private Use Area-B')
 
 
);
 
 
Function GetUnicodePageName(WC:WideChar):String;
var i:integer;
begin
 Result:='';
 for i:=0 to MaxUnicodeRanges do
  if (Word(WC)>=UnicodeRanges[i].S) and (Word(WC)<=UnicodeRanges[i].E) then
  begin
   Result:=UnicodeRanges[i].PG;
   Exit;
  end;
end;
 
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
var WSU:UTF8STring;
WS:WideString;
i:Integer;
begin
WSU:='дл우리글';
WS:=UTF8Decode(WSU);
For i:=1 to Length(WS) do
Memo1.Lines.Add(GetUnicodePageName(WS));
end;

(Button1Click separat, weil der Forum-Highlighter die Zeichen verwurschtelt)

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Du bis ja n held theo, ich hab zwar mal angefangen zu suchen aber was wirklich fertiges findet man ja net. Aber das is ja der hammer.
Spam kommt bei mir immer Englisch oder mal Deutsch an. Kann mich nicht erinnnern jemals Russischen oder Japanischen Spam bekommen zu haben.
Aber die Japaner und Chinesen bekommen garantiert unendlich viel englischen spam.
Dort ists dann wieder richtig schön filterbar.
Stimmt aber schon zwischen Europäischen Sprachen und englisch unterscheiden ist noch etwas dümmer.

Mein Windows Widgetset compilier ich schon seit Monaen ständig mit Unicode an, benuz durchgehend unicode.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Benutzeravatar
theo
Beiträge: 10871
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Hab's noch kurz für den Hausgebrauch verbessert.

Code: Alles auswählen

threadvar UCPageStats: array[0..MaxUnicodeRanges] of Integer;
 
procedure GetUnicodePageStats(WS:WideString);
var i,j:integer;
begin
 for i:=0 to MaxUnicodeRanges do UCPageStats[i]:=0;
 for j:=1 to Length(WS) do
  for i:=0 to MaxUnicodeRanges do
   if (Word(WS[j])>=UnicodeRanges[i].S) and (Word(WS[j])<=UnicodeRanges[i].E) then
    begin
    UCPageStats[i]:=UCPageStats[i]+1;
    Break;
    end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var WSU:UTF8STring;
WS:WideString;
i:Integer;
begin
WSU:='mal äh sehen дл우리글';
WS:=UTF8Decode(WSU);
GetUnicodePageStats(WS);
for i:=0 to MaxUnicodeRanges do
if UCPageStats>0 then Memo1.Lines.Add(UnicodeRanges.PG+': '+Inttostr(UCPageStats));
end;

Spuckt aus:

Code: Alles auswählen

Basic Latin: 12
Latin-1 Supplement: 1
Cyrillic: 2
Hangul Syllables: 3

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Beitrag von Euklid »

Christian hat geschrieben:Fürs deusche gut und schön aber wo die anderen Häufigkeiten herbekommen ?
Ich denke das wird zu aufwendig.
Ich finde montas Ansatz garnicht so schlecht - und vom programmiertechnischen her bestimmt weniger aufwendig, als irgendwelche Grammatiken zu prüfen.

Schreib ein Programm und scanne damit für die anderen Häufigkeiten doch einfach Internetseiten von denen du weißt, in welcher Sprache sie geschrieben sind, wie z.B. Seiten des fremdsprachigen Wikipedias. Dürfte doch kein Problem sein?


Euklid

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Dann währe aber wieder eine Datenbank nötig oder nicht ?

Ich habe mal gehört das die Dateigröße von einem Text Aufschluss über die Sprache geben könnte. Das haben Forscher aufjedenfall vor Jahren mal raußgefunden. Aber eine Interessante Frage !

Ich wollte auch schon mal sowas machen.
Ich denke immer noch das ein schlüssel in jeder Sprache gibt. Der eindeutig ist.

Irgendein wert. Irgendwas.

Denn wir wissen ja auch das wenn ein Satzt falsch klingt.
Das liegt wohl an den Context. und genau denn müsste man doch mit Mathe irgendwie herausbekommen.

Wenn ich mir z.b. das Wort ich anschaue. Könnte man es doch irgenwie teilen durch irgendwas z.b.
das dann ein wert rauß kommt. Der genau sagt, das es ein Wort und zwar ein Deutsches.
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Hier fehlt mir echt wieder die Funktion zum ausblenden von Beiträgen von Benutzern ;)

Also die Dateigrösse von texten kann keinen Aufschluss auf die Sprache geben. In meinem fall z.b. Subjektfelder von e-Mails wie soll die länge da bitte rückschlüsse auf die Sprache geben ? Absouluter Quatsch.

Es gibt bei begrenzten Texten wie z.b. der Subjektzeile die im einfachsten Fall aus 1-2 Wörtern bestehen kann keie Chance einen textschlüssel zu finden.

Wir wissen das ein Satz falsch klingt, weil unser Hirn die Wörter erkannt hat und wenn dort etwas drin vorkommt was du nicht kennst oder nicht einordnen kannst klingt es eben falsch.

Buchstaben lassen sich schlecht teilen.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Benutzeravatar
theo
Beiträge: 10871
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Christian hat geschrieben:
Wir wissen das ein Satz falsch klingt, weil unser Hirn die Wörter erkannt hat und wenn dort etwas drin vorkommt was du nicht kennst oder nicht einordnen kannst klingt es eben falsch.

Buchstaben lassen sich schlecht teilen.
Ich hab mal ne Funktion geschrieben, die einen Hinweis darauf geben kann, ob ein Wort "echt" ist.
z.B. kckolpbp oder sowas wird als ungültig erkannt.

Antworten