Thread Textnormalisierung...Hilfe! (18 answers)
Opened by Gast at 2008-06-26 17:45

moritz
 2008-06-26 19:31
#111568 #111568
User since
2007-05-11
923 Artikel
HausmeisterIn
[Homepage]
user image
Gast+2008-06-26 17:17:34--
Wenn ein bestimmtes Wort innerhalb eines Satzes (also nicht am Satzanfang) immer kleingeschrieben wird, und es taucht plötzlich am Satzanfang auf, ist aber da großgeschrieben, dann soll Perl dieses Wort am Satzanfang in Kleinbuchstaben umwandeln. So benötigt man keinerlei sprachliches Wissen.

...

Zunächst könnte man doch alle verschiedenen kleingeschriebenen Wörter im Text in einem Hash ablegen, in etwa so:

...

Jetzt möchte ich nur alle Wörter am Satzanfang betrachten, also alle großgeschriebenen Wörter, die nach einem Punkt kommen. Wenn ein solches Wort identisch ist mit einem Wort aus dem Hash und sich nur in der Schreibung unterscheidet, dann soll dieses Wort am Satzanfang eben kleingeschrieben werden. Aber ich weiß nicht, ob sowas a) geht und b) wies geht. Meine Versuche warn bisher erfolglos.


Also ein vielversprechender Ansatze wäre, den Text erst in Tokens zu zerlegen. Ein Token ist in deinem Fall ein Wort oder ein Satzzeichen.

Dann läufst du deine Tokens, und schaust bei jedem Wort, ob es vor einem Satzzeichen oder am Anfang des Strings steht. Wenn das nicht der Fall ist, speicherst du das in einem Hash.

Dann gehst du nochmal durch die Tokens, und ersetzt alles, was du ersetzten willst.

Auf diese Art kannst du was, was in Regexes kompliziert ist (also z.B. Lookaround und andere Art von Kontextsensitivität) vermeiden und es stattdessen in normalem Code machen. Dann brauchst du nur noch Regexes, um den String in Tokens zu zerlegen.

View full thread Textnormalisierung...Hilfe!