Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Text bereinigen: kurze Wörter löschen (https://www.delphipraxis.net/192747-text-bereinigen-kurze-woerter-loeschen.html)

erich.wanker 16. Mai 2017 16:35

Text bereinigen: kurze Wörter löschen
 
Hallo,
eine Frage:

ich hab in einem Textfile einen Text (ziemlicher Buchstaben-Müll..)

Ich ignoriere die ganzen Sonderzeichen wie folgt:
(und schreibe den Text in ein Datenbankfeld..)

Code:
for i := 0 to text_aus_file.Count - 1  do
begin
s:=text_aus_file.Strings[i];

neu:='';
for x := 0 to Length(s)-1 do
begin
 if (s[x] in ['0'..'9','a'..'z', 'A'..'Z','ä','ö','ü','ß','Ä','Ö','Ü',' ']) then neu:=neu+s[x];
end;

TEXT.Edit;
TEXT.FieldByName('TEXT').AsString:=TEXT.FieldByName('TEXT').AsString+neu;
TEXT.Post;

end;
im Text kommen sehr viel Müll vor - Rohdaten von einem EXTREMEN Beispiel:
Zitat:

Sie wurde den Kontrahenten,
weiche handlungs- und verfügungfähig sind, zur Kenntnis
gebracht und von denselben in seiner Gegenwart unterzeichnet.
seht EGHiig
W]Hp de age
EZ
gegen
Ir
sr
die
k ß
Angaben
PP
\
& S S
v RSS
$ k eigen (si i tik N n ut sl Win uit n r un de kn Si e W St We t d W s gene an Site
Eingetragen: Band:
gel ee
3 g i : “ .
& Ü S s ® m Hosen e dere nn In en h Wenn ie n se sh ln on {w'a_$‘ +3 RE



Meine Frage:
Wie kann ich nun Wörter (mit und ohne Zahlen) mit 1, 2, und 3 Wort-Länge auch noch löschen ... so kurze Wörter haben keine Relevanz... mich interessieren nur die Wörter und Zahlen ab 4 Stellen Länge


Vielen Dank für Hinweise

LiGrü
Erich

nahpets 16. Mai 2017 17:04

AW: Text bereinigen: kurze Wörter löschen
 
Sowas?
Delphi-Quellcode:
var
  neu : String;
  s : String;
  bereinigt : String;
begin
  for i := 0 to text_aus_file.Count - 1 do begin
    s := text_aus_file.Strings[i];
    neu := '';
    bereinigt := '';
    for x := 1 to Length(s) do begin
      if (s[x] in ['0'..'9','a'..'z', 'A'..'Z','ä','ö','ü','ß','Ä','Ö','Ü',' ']) then begin
        neu := neu + s[x];
      end;
    end;
    if length(neu) > 5 then begin
      bereinigt := bereinigt + neu;
    end;
  end;
  TEXT.Edit;
  TEXT.FieldByName('TEXT').AsString := bereinigt;
  TEXT.Post;
end;

erich.wanker 16. Mai 2017 17:23

AW: Text bereinigen: kurze Wörter löschen
 
Hallo nahpets,

leider nicht ...

Als Beispiel
Ein String: " a uui ll ooorer Automobil j re 34a Flugzeug kf Schiffssegel"
sollte ergeben: "Automobil Flugzeug Schiffssegel"

- also alle "kurzen Wörter" aus einem String filtern...

nahpets 16. Mai 2017 17:29

AW: Text bereinigen: kurze Wörter löschen
 
so?
Delphi-Quellcode:
var
  neu : String;
  s : String;
  bereinigt : String;
begin
  for i := 0 to text_aus_file.Count - 1 do begin
    s := text_aus_file.Strings[i];
    neu := '';
    bereinigt := '';
    for x := 1 to Length(s) do begin
      case s[x] of
        '0'..'9',
        'a'..'z',
        'A'..'Z',
        'ä','ö','ü','ß','Ä','Ö','Ü' : neu := neu + s[x];
      else
        if length(neu) > 6 then begin
          bereinigt := bereinigt + neu + ' ';
          neu := '';
        end;
      end;
    end;
    TEXT.Edit;
    TEXT.FieldByName('TEXT').AsString := bereinigt;
    TEXT.Post;
  end;
end;

SneakyBagels 16. Mai 2017 17:55

AW: Text bereinigen: kurze Wörter löschen
 
Zitat:

Ein String: " a uui ll ooorer Automobil j re 34a Flugzeug kf Schiffssegel"
sollte ergeben: "Automobil Flugzeug Schiffssegel"
Zitat:

mich interessieren nur die Wörter und Zahlen ab 4 Stellen Länge
Dann hast du aber ein Problem. Denn ooorer hat 6 Zeichen und alles ab 4 interessiert dich doch.

Da musst du wohl mit einem Wörterbuch drüberfahren und Müll aussortieren.

HolgerX 16. Mai 2017 18:06

AW: Text bereinigen: kurze Wörter löschen
 
Hmm..

die Roh-Daten, welche Du uns gezeigt hast, ist das nen CopyPaste aus z.B. dem Windows-Editor?

Oder sind zwischen den Zeichen eventuell weitere (Steuer-) Zeichen, welche nur als Leerzeichen dargestellt werden?

Nur mal so ne Frage.. ;)

Oder kannst Du eine Original-Datei mal komplett anhängen?

p80286 16. Mai 2017 23:17

AW: Text bereinigen: kurze Wörter löschen
 
Das sieht aus wie die OCR vor 20 Jahren. Kannst Du uns die Quelle nennen?
Ich würde für das Wörterbuch plädieren.

Gruß
K-H

SneakyBagels 16. Mai 2017 23:20

AW: Text bereinigen: kurze Wörter löschen
 
Zitat:

Ich würde für das Wörterbuch plädieren.
Genau. Denn ohne wird es ihm wahrscheinlich nicht möglich sein zwischen Müll und Nicht-Müll zu unterscheiden.
Siehe " a uui ll ooorer Automobil j re 34a Flugzeug kf Schiffssegel"
Mindestlänge von 4 erfüllt, aber Müll.

erich.wanker 17. Mai 2017 09:13

AW: Text bereinigen: kurze Wörter löschen
 
Hallo Leute - vielen Dank für die Hinweise :-)

@p80286

Rohdaten sind aus "Tesseract OCR"

- ich verwende ghostscript, um PDF´s (bestehend meist aus gescannte A4 Seiten) in TIFF umzuwandeln...
- und ich verwende tesseract OCR, um TIFF´s in TXT umzuwandeln
- dann lade ich mir die TXT rein ... lösche "Füllwörter" (und, wie mit bei zu..) - da habe ich eine freie Liste online gefunen
und dann speichere ich mir den Rest in eine DB

@HolgerX

JA - die Rohdaten haben weitere Steuerzeichen (Returns und Co) - die ich durch Copy/past (als auch händisch) nicht im Posting habe


@SneakyBagels.
"..Problem "ooorer" hat 6 Zeichen und alles ab 4 interessiert dich doch"

Ja ... Ein Wörterbuch drüberlaufen lassen wäre natürlich perfekt - aber das überschreitet meine Fähigkeiten ;-)
Wie soll ich z.b: Aus "Autm0bll" ein "Automobil" machen ...

Und: Es sind viele Familiennamen und Regions-namen in den Texten - die findet man nicht in einer Wörterbuchliste - und die sind eigentlich meine wichtigsten Indikatoren

p80286 17. Mai 2017 10:44

AW: Text bereinigen: kurze Wörter löschen
 
Dann such mal nach "Kölner Phonetik / Levensthein / Soundex" da solltest Du hier recht schnell fündig werden.

Gruß
K-H
Edith:
http://phonetik.phil-fak.uni-koeln.d...artin_Wilz.pdf

Edith2:
Zitat:

Zitat von erich.wanker (Beitrag 1371724)
Und: Es sind viele Familiennamen und Regions-namen in den Texten - die findet man nicht in einer Wörterbuchliste - und die sind eigentlich meine wichtigsten Indikatoren

Wir hier werden doch wohl eine Liste mit Familiennamen erstellen können?
Und was verstehst Du unter "Regionen" ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:31 Uhr.
Seite 1 von 2  1 2      

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