AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Text bereinigen: kurze Wörter löschen
Thema durchsuchen
Ansicht
Themen-Optionen

Text bereinigen: kurze Wörter löschen

Ein Thema von erich.wanker · begonnen am 16. Mai 2017 · letzter Beitrag vom 18. Mai 2017
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von erich.wanker
erich.wanker

Registriert seit: 31. Jan 2008
Ort: im schönen Salzburger Land
454 Beiträge
 
Delphi XE4 Professional
 
#1

Text bereinigen: kurze Wörter löschen

  Alt 16. Mai 2017, 16:35
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
Erich Wanker - for life:=1971 to lebensende do begin ..
O
/H\
/ \

Geändert von erich.wanker (16. Mai 2017 um 17:25 Uhr)
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#2

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

  Alt 16. Mai 2017, 17:04
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;
  Mit Zitat antworten Zitat
Benutzerbild von erich.wanker
erich.wanker

Registriert seit: 31. Jan 2008
Ort: im schönen Salzburger Land
454 Beiträge
 
Delphi XE4 Professional
 
#3

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

  Alt 16. Mai 2017, 17:23
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...
Erich Wanker - for life:=1971 to lebensende do begin ..
O
/H\
/ \
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#4

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

  Alt 16. Mai 2017, 17:29
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;
  Mit Zitat antworten Zitat
SneakyBagels
(Gast)

n/a Beiträge
 
#5

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

  Alt 16. Mai 2017, 17:55
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.
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
961 Beiträge
 
Delphi 6 Professional
 
#6

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

  Alt 16. Mai 2017, 18:06
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?
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#7

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

  Alt 16. Mai 2017, 23:17
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
SneakyBagels
(Gast)

n/a Beiträge
 
#8

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

  Alt 16. Mai 2017, 23:20
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.
  Mit Zitat antworten Zitat
Benutzerbild von erich.wanker
erich.wanker

Registriert seit: 31. Jan 2008
Ort: im schönen Salzburger Land
454 Beiträge
 
Delphi XE4 Professional
 
#9

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

  Alt 17. Mai 2017, 09:13
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
Erich Wanker - for life:=1971 to lebensende do begin ..
O
/H\
/ \
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#10

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

  Alt 17. Mai 2017, 10:44
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:
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" ?
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector

Geändert von p80286 (17. Mai 2017 um 11:59 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 21:27 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