Programmieraufgabe: Textfilter (anhand Wortzahl)

Status
Für weitere Antworten geschlossen.

PcHunter

Ensign
Registriert
März 2009
Beiträge
213
Hey Community,

Ich suche ein Programm/Filter/Addon, dass es mir ermöglicht Textabschnitte (also ein Abschnitt von Semikolon zu Semikolon, Punkt zu Punkt, Komma zu Punkt etc.) von genau 72 Wörtern rauszufiltern.

Und zwar stehe ich derzeit kurz vor meiner Latinumsprüfung und unsere Dozentin hat sich ein wenig verquatscht :-) Natürlich gibt's die Möglichkeit einzelne Sektionen via Copy&Paste bei Word, OpenOffice oder http://www.woerter-zaehlen.de/ zu analysieren aber das ist bei den Textmassen viel zu aufwendig.

Meine Programmierfähigkeiten sind leider ein wenig eingerostet und ich bin mir gar nicht sicher ob es so überhaupt Funktionen gibt, die so direkt Wörter zählen können aber ansich müsste es doch machbar sein ein Wort anhand der Leerzeichen zu identifizieren?

Ich würd mich über jegliche Antworten freuen

mfG
 
Hi,

öhm...was genau willst du machen? Sorry, aber ich verstehe die Anforderung nicht. Du möchtest aus einem Text immer 72 Wörter herausfiltern? Oder wie? Und was dann? Bitte um genaue Erklärung, dann kann man dir helfen.

VG,
Mad
 
Ich verstehe nicht 100% was du machen möchtest. Kannst du mal einen kurzen Beispieltext und das gewünschte Ergebnis posten?

Ansonsten klingt das auf den ersten Blick nach etwas das mit Regular Expressions zu lösen sein könnte
 
such dir in einer Sprache deiner Wahl ne Funktion die dir nen String bei nem bestimmten Zeichen splittet und in ein Array schreibt.
 
Im Endeffekt will ich einen kompletten lat. Text von irgendeiner Seite (zB. http://home.arcor.de/robert.cramer/Uebungstexte.htm) in ein Programm parsen, welches mir dann im Endeffekt nur Passagen ausspuckt die genau 72 Wörter zählen.

Als Passage mein ich einen Abschnitt von Wörtern der durch jegliche Satzzeichen begrenzt ist (zB. entweder durch Punkt-Punkt, Komma-Komma, Semikolon-Semikolon, Punkt-Komma, Komma-Punkt, Semikoln-Punkt etc.)

Ein konkretes Beispiel finde ich nicht aber vielleicht verdeutlicht es das hier:

[./,/;/-] 72 Wörter [./,/;/-]
 
Ich habe mal ein kleines Beispiel in python gebastelt. Statt 72 Wörter habe ich zur vereinfachung 3 gewählt. Direkt vor und hinter den 3 Wörtern muss ein ";" stehen. Das lässt sich natürlich erweitern.
Geht das in die Richtung was du möchtest?
Code:
import re
text=";bla bli blo;muh meh;gaga oh lala;"
matches=re.findall(";(\w+ \w+ \w+);",text)
print matches
Gibt aus:
Code:
['bla bli blo', 'gaga oh lala']
und "muh meh" wird ignoriert, weil es nur 2 Wörter sind.
 
Ja, definitiv.
Ich hab hier mal ein ganz kreativen Testext geschrieben:
bli bla blu. bli bla blu bli, bla blu bli bla blu. bli bla blu bli bla, blu bli bla blu bli bla blu, bli bla blu bli bla blu bli bla blu bli bla blu bli bla, blu bli bla blu bli bla blu bli bla blu bli bla blu bli bla blu bli bla blu bli bla blu bli bla blu bli bla blu bli bla blu bli bla, blu bli bla blu bli bla blu bli bla blu bli bla blu. bli bla blu bli bla blu bli bla blu bli bla blu.

Der 3te Satz ist genau 72 Wörter lang, funktioniert das auch? Oder kommt er dann durch die Kommatas im Satz durcheinander?
 
PcHunter schrieb:
Ja, definitiv.
Ich hab hier mal ein ganz kreativen Testext geschrieben:
bli bla blu. bli bla blu bli, bla blu bli bla blu. bli bla blu bli bla, blu bli bla blu bli bla blu, bli bla blu bli bla blu bli bla blu bli bla blu bli bla, blu bli bla blu bli bla blu bli bla blu bli bla blu bli bla blu bli bla blu bli bla blu bli bla blu bli bla blu bli bla blu bli bla, blu bli bla blu bli bla blu bli bla blu bli bla blu. bli bla blu bli bla blu bli bla blu bli bla blu.

Der 3te Satz ist genau 72 Wörter lang, funktioniert das auch? Oder kommt er dann durch die Kommatas im Satz durcheinander?

Das geht mit der richtigen Regular Expression sicher auch, aber der Teufel steckt bei sowas immer im Detail.
Ich bin mit der Syntax momentan nicht mehr ganz vertraut, aber ich schau mal weiter.
Ergänzung ()

Code:
import re
text="bli bla blu. bli bla blu bli, bla blu bli bla blu. bli bla blu bli bla, blu bli bla blu bli bla blu, bli bla blu bli bla blu bli bla blu bli bla blu bli bla, blu bli bla blu bli bla blu bli bla blu bli bla blu bli bla blu bli bla blu bli bla blu bli bla blu bli bla blu bli bla blu bli bla, blu bli bla blu bli bla blu bli bla blu bli bla blu. bli bla blu bli bla blu bli bla blu bli bla blu."
matches=re.findall("((?:\w+(?:, | )){71}\w+)[.,;-]",text)
print matches

Das matcht jetzt auf den mittleren Teil. Die 72 Wörter dürfen durch " " oder ", " getrennt sein, und mit . , ; oder - enden.

Schwieriger wird's wenn man noch deine Bedingung:
"Als Passage mein ich einen Abschnitt von Wörtern der durch jegliche Satzzeichen begrenzt ist (zB. entweder durch Punkt-Punkt, Komma-Komma, Semikolon-Semikolon, Punkt-Komma, Komma-Punkt, Semikoln-Punkt etc.)"
beachten möchte, aber da ist für mich auch fraglich ob das notwendig ist.
 
Sonst heißt es immer "Wir machen hier keine Hausaufgaben für euch", aber wenn einer bei einer Abschlussklausur bescheißen will, ist das ganz cool und alle helfen mit?

Tolle Sache.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben