Autor Beitrag
Die Brotmafia
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 110

Win XP Suse Linux 9.3
Delphi 7 Enterprise, Delphi 2005
BeitragVerfasst: Do 06.03.08 21:43 
Also, für mein Programm benötige ich eine Wortliste mit quasi allen deutschen Wörtern. Eine solche habe ich gefunden, zwar ist es eine Wortliste mit deutschen und englischen Wörtern, das stört mich aber nicht übermäßig. Das Problem: Jedes der Wörter sollte in einer eigenen Zeile stehen. Nur jeweils 1 Wort pro Zeile ohne irgendwelche sonderzeichen oder sonst was, lediglich das Wort. Die Wortliste sieht z.B. so aus:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
Abbindebeschleuniger {m} [constr.] :: curing accelerator
Abbinden {n} (von Beton) [constr.] :: setting
Abbindeplatz {m}; Abbindelager {n} [constr.] :: curing area
Abbindeverzögerer {m} [constr.] :: curing retardant
Abbindewärme {f} [constr.] :: maturing heat
Abbindezeit {f} [constr.] :: setting time
Abbindezeit {f} (bei Zement) [constr.] :: water curing
Abbildung {f} | Abbildungen {pl} :: map; mapping | maps; mappings
Abbildung {f} [math.] | Abbildungen {pl} | konforme Abbildung :: mapping; map; transformation | mappings; maps; transformations | conformal map; conformal mapping
Abbildungsbreite {f}; Klangkörperausdehnung {f} (Akustik) :: apparently source width; auditory source width
Abbildungsfehler {m} | Abbildungsfehler {pl} :: aberration; image defect | aberrations; image defects
Abbildtheorie {f} [phil.] :: image theory; picture theory; representation theory
Abbildungsmaßstab {m} :: magnification
Abbildungsoptik {f} :: imaging optics
Abbildungsregister {n} | Abbildungsregister {pl} :: image register | image registers
Abbildungsverzeichnis {n} | Abbildungsverzeichnisse {pl} :: table of figures; register of illustrations | tables of figures; registers of illustrations
Abbitte {f} | jdm. Abbitte leisten; jdm. Abbitte tun | Abbitte leisten :: apology | to ask sb.'s pardon | to apologize


Die Wortliste (6 mb groß und sehr viele Wörter) ist nebenbei unter dict.tu-chemnitz.de/doc/faq.de.html downloadbar.

Jetzt würde ich gerne ein Delphi Programm schreiben welches mir daraus eine vernünftige Wortliste macht, d.h. die ganzen speziellen sachen wie "{n} {m} {f} ; [constr.] :: |" usw. weg macht und dann, falls in einer Zeile 2 Wörter sind diese so umschreibt das die Wörter auf je 1 Wort pro Zeile verteilt werden.

Theoretisch stelle ich es mir so vor:

Delphi geht eine Zeile der Liste durch. Dabei bearbeitet es buchstabe für buchstabe, kommt ein bestimmtes Zeichen wie "{ } ; { : |" vor, wird dieses gelöscht, ebenso bei bestimmten Zeichenketten wie "{f} {phil.] [math.]" welche auch verschwinden sollten.

Nach meiner Überlegung sollte es auch genügen, nicht nach Zeichenketten zu schauen sondern nur die Sonderzeichen auszufiltern und nach jedem Leerzeichen das nächste Wort in eine neue Zeile zu schreiben. Wenn dann z.B. von "{phil.]" nach aussortieren noch phil übrig bleibt (und das Wort will ich ja nicht haben) kann ich immer noch einen extra-Part programmieren welcher nachprüft welche Wörter häufig vorkommen und dann diese dann löscht.

Falls er auf ein Leerzeichen stößt (da 2 Wörter ja immer durch ein Leerzeichen getrennt werden) weis er, dass nun ein neues Wort beginnt und er demnach eine neue Zeile mit dem Wort ab der Leerzeile einfügen soll.

So in etwa stelle ich es mir vor :-) Ich weis allerdings nicht, wie ich buchstabe für buchstabe scanne bzw. nach bestimmten zeichenketten suchen lasse. Im Prinzip will ich erstmal alles in ein Memo laden und dann von da aus das filtern anfangen.

Sind meine Überlegungen bis jetzt richtig?

Danke!

Moderiert von user profile iconNarses: Titel geändert: es geht ja nicht um´s Sortieren, sondern um eine Modifikation des Listeninhaltes! :idea:

_________________
Brot für die Welt, Kuchen für mich!
Popov
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1655
Erhaltene Danke: 13

WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
BeitragVerfasst: Do 06.03.08 21:56 
Du denkst dir das zu kompliziert. Um ehrlich zu sein würde ich kein Programm dafür schreiben, sondern mit einem Textprogramm mit Makrofunktion bearbeiten.

Willst du wirklich jedes deutsche Wort haben? Nehmen wir man diese Zeile:

ausblenden Quelltext
1:
Abbildung {f} | Abbildungen {pl} :: map; mapping | maps; mappings					


Letztendlich ist das nur ein Wort, das andere ist die Mehrzahl davon. Kompliziert wird das ganze wegen solcher Zeilen:

ausblenden Quelltext
1:
Abbitte {f} | jdm. Abbitte leisten; jdm. Abbitte tun | Abbitte leisten :: apology | to ask sb.'s pardon | to apologize					


Hier ist "jdm. Abbitte leisten; jdm. Abbitte tun" nur die Beschreibung und nicht das Wort.

_________________
Popov
DeadlyAppearance
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 113

Win 7
Delphi 2010 Arch., C# VS 2008
BeitragVerfasst: Do 06.03.08 22:02 
Also was du mit den 2 Wörtern pro Zeile meinst ist mir nicht so ganz klar.
Wenn dann handelt es sich nur im Plural oder ähnliches was ich beim Drüberfliegen gesehen habe.
Brauchst du auch diese? Schreib maln Beispiel bitte.

Ansonsten:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
var
  test : string;
begin
  test := 'Aalbutt {m} :: plaice';

  ShowMessage(Copy(test,0,Pos(' ',test)-1));
end;

_________________
Als du auf die Welt kamst, weintest du, und um dich herum freuten sich alle. Lebe so, daß, wenn du die Welt verläßt, alle weinen und du allein lächelst.
Die Brotmafia Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 110

Win XP Suse Linux 9.3
Delphi 7 Enterprise, Delphi 2005
BeitragVerfasst: Fr 07.03.08 11:08 
Kannst du das Textprogramm mit der Makro-Funktion bitte genauer beschreiben? Woher krieg ich sowas, wie funktioniert das? Das mit dem Abbitte leisten und Abbitte tun: Ich würde einfach jedes Wort in eine eigene Zeile schreiben. Dann steht da:

Abbitte
leisten
Abbitte
tun

Danach lass ich das ganze durchfiltern das jedes Wort welches Mehrfach vorkommt gelöscht wird sodass nur noch ein einzelnes dasteht, dann ist die Sache in Ordnung.

Abbitte
leisten
tun

Geht ja nur darum das ich ein Memo mit einem anderen vergleiche, Zeile für Zeile. Im einen Memo stehen wörter, im anderen auch. Wenn jetzt aber im einen Memo in einer Zeile ein Wort steht wie "Abbitte" und im anderen steht "
Abbildung {f}" dann kann ich nicht sagen "if Memo1.Lines[0] = Memo1.Lines[0] then" weil die Wörter dann eben nicht gleich sind.

Danke :)
Popov
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1655
Erhaltene Danke: 13

WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
BeitragVerfasst: Fr 07.03.08 22:57 
Also wenn du das wirklich so machen willst, also jedes deutsche Wort, dann mach es so:

1. alles nach ab den zwei Doppelpunkten "::" abschneiden, denn ab da ist alles auf englisch
2. Alles was sich innerhalb von geschweiften "{...}" oder eckigen "[...]" Klammern befindet raus schneiden.

Was übrig bleibt sind deutsche Wörter

Ab hier alles in Wörter zerlegen, wobei Leerzeichen die Trennzeichen sind.

Ist also nicht schwer.

Das einzig problematische wird die Zeit und die Größe der Datei sein. Ich weiß nicht ob du das in einer einzigen Datei mit Delphi geladen kriegst. Aber auch wenn, du willst dann alle Wörter auf doppelte Namen überprüfen? Das wird richtig dauern.

Außerdem ist das ein Mixtext. Zum Teil sind es Wörter, dann Sprüche und dann Nochwas. Dann gibt es veraltete Wörter und Erklärungswörter, z. B. "Groß" und "große Kanne".

Letztendlich wirst du Müll herstellen wenn du das machst was du machen willst.

_________________
Popov
Die Brotmafia Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 110

Win XP Suse Linux 9.3
Delphi 7 Enterprise, Delphi 2005
BeitragVerfasst: Sa 08.03.08 13:11 
Also, will englische und deutsche Wörter. Es geht mir einfach darum eine Liste zu haben welche möglichst viele deutsche und / oder auch englische Wörter enthält. Quasi alle, welche im Sprachgebrauch vorkommen. Das das dann ein paar Stunden dauern wird ist mir klar. Bitte gebt mir noch einen Vorschlag wie ich das "Filtern" machen kann, danke! Also, dass er quasi die Wörter Buchstabe für Buchstabe durch geht und dann filtert.