Hallo leute !!!
Ich muss einen Text z.b :
Es war einmal ein Mann und eine Frau, die wünschten sich schon lange vergeblich ein Kind, endlich machte sich die Frau Hoffnung der liebe Gott werde ihren Wunsch erfüllen. Die Leute hatten in ihrem Hinterhaus ein kleines Fenster, daraus konnte man in einen prächtigen Garten sehen, der voll der schönsten Blumen und Kräuter stand;
Und diesen Text muss ich tokenisieren ich muss die Groß- und Kleinschreibung normalisieren z.b. Wörter die normalerweise klein geschrieben werden (für) und die nur am Satzanfang oder nach Punkt großgeschrieben werden sollen klein anfangen aber die Nomen sollen so sein und am Ende muss die Ausgabe muss so aussehen z.b:
es
war
einmal
ein
Mann
und
Frau
,
und so weiter
ich weiß aber nicht WIE
Danke im Voraus
Tokenisieren!
Falls ihr reguläre Ausdrücke benutzen dürft und `s` für den Satz steht:
Dies passt auf alle nicht-alphanummerischen Zeichen, dh alles, was kein Buchstabe, kein Unterstrich und keine Zahl ist (`\W`). Zudem können mehrere solcher Zeichen aufeinander folgen (`+`). All diese Fundstellen werden nun als Trenner benutzt, an dem eben gesplittet wird. Übrig bleibt das, was links und rechts von den Trennern steht, also die eigentlichen Wörter. Zum Nachlesen siehe re.
Den Part mit dem Normalisieren habe ich aus deinem Kauderwelsch leider nicht übersetzen können.
Code: Alles auswählen
import re
re.split(r'\W+', s)Den Part mit dem Normalisieren habe ich aus deinem Kauderwelsch leider nicht übersetzen können.
Das stelle ich mir sehr schwierig vor:lolo hat geschrieben: Also Wörter, die normalerweise kleingeschrieben werden und nur am Satzanfang mit großem Anfangsbuchstaben vorkommen, sollen am Satzanfang mit einem Kleinbuchstaben beginnen
"Fallen sind immer blau, oder?"
"Fallen wir gerade aus dem 20. Stock?"
Wie kommt man also auf das "normalerweise"?
also ich habe das mit dem auflisten hingekriegt :
for tag in textliste:
print tag + ' ',
print
aber ich kann das mit klein- und großschreibung nicht.
Also ich meine damit das hier :
Text vor der Tokenisierung und Normalisierung:
In den alten Zeiten, wo das Wünschen noch geholfen hat, lebte ein König, dessen Töchter waren alle schön, aber die jüngste war so schön, daß die Sonne selber, die doch so vieles gesehen hat, sich verwunderte so oft sie ihr ins Gesicht schien. Nahe bei dem Schlosse des Königs lag ein großer dunkler Wald, und in dem Walde unter einer alten Linde war ein Brunnen: wenn nun der Tag recht heiß war, so ging das Königskind hinaus in den Wald und setzte sich an den Rand des kühlen Brunnens: und wenn sie Langeweile hatte, so nahm sie eine goldene Kugel, warf sie in die Höhe und fieng sie wieder; und das war ihr liebstes Spielwerk.
Nun trug es sich einmal zu, daß die ...
Text nach der Tokenisierung und Normalisierung:
in den alten Zeiten, wo das Wünschen noch geholfen hat, lebte ein König, dessen Töchter waren alle schön, aber die jüngste war so schön, daß die Sonne selber, die doch so vieles gesehen hat, sich verwunderte so oft sie ihr ins Gesicht schien. nahe bei dem Schlosse des Königs lag ein großer dunkler Wald, und in dem Walde unter einer alten Linde war ein Brunnen: wenn nun der Tag recht heiß war, ...
for tag in textliste:
print tag + ' ',
aber ich kann das mit klein- und großschreibung nicht.
Also ich meine damit das hier :
Text vor der Tokenisierung und Normalisierung:
In den alten Zeiten, wo das Wünschen noch geholfen hat, lebte ein König, dessen Töchter waren alle schön, aber die jüngste war so schön, daß die Sonne selber, die doch so vieles gesehen hat, sich verwunderte so oft sie ihr ins Gesicht schien. Nahe bei dem Schlosse des Königs lag ein großer dunkler Wald, und in dem Walde unter einer alten Linde war ein Brunnen: wenn nun der Tag recht heiß war, so ging das Königskind hinaus in den Wald und setzte sich an den Rand des kühlen Brunnens: und wenn sie Langeweile hatte, so nahm sie eine goldene Kugel, warf sie in die Höhe und fieng sie wieder; und das war ihr liebstes Spielwerk.
Nun trug es sich einmal zu, daß die ...
Text nach der Tokenisierung und Normalisierung:
in den alten Zeiten, wo das Wünschen noch geholfen hat, lebte ein König, dessen Töchter waren alle schön, aber die jüngste war so schön, daß die Sonne selber, die doch so vieles gesehen hat, sich verwunderte so oft sie ihr ins Gesicht schien. nahe bei dem Schlosse des Königs lag ein großer dunkler Wald, und in dem Walde unter einer alten Linde war ein Brunnen: wenn nun der Tag recht heiß war, ...
Eigentlich würde ich erwarten, dass ihr bei so einer Aufgabe zumindest etwas an linguistischem Grundwissen vermittelt bekommen habt. Keine Ahnung, wie da die Techniken sind. Aus dem Bauch heraus würde ich mir eine Liste von Wörtern der deutschen Sprache besorgen und damit dann jedes einzelne Wort abgleichen und ggf verändern. Für die Veränderung stehen die Methoden `capitalize()` bzw `lower()` zur Verfügung, welche auf Zeichenketten anwendbar sind.
EDIT: Wobei ihr ja nur bei Bedarf das Wort klein schreiben sollt, daher also nur `lower()` nehmen müsst.
EDIT: Wobei ihr ja nur bei Bedarf das Wort klein schreiben sollt, daher also nur `lower()` nehmen müsst.
Hier passt etwas nicht. Wenn die einzelnen Wörter Token sein sollen, dann hast du doch am Ende keinen kompletten Text, sondern eine Liste mit Wörtern.lolo hat geschrieben:Text nach der Tokenisierung und Normalisierung:[...]
Mich wundert es im Moment nicht, dass du Schwierigkeiten hast. Du konntest bisher weder die Aufgabe, noch das gewünschte Ergebnis richtig beschreiben. So lange das so bleibt, wirst du auch keinen passenden Algorithmus entwickeln können.
Hallo lolo,
ich hab noch eine andere Idee, wie Du das mit dem Normalisieren machen könntest. Überprüfe doch einfach für jedes Wort, das an einem Satzanfang steht, ob es auch als kleingeschriebene Variante irgendwo im Text auftaucht. Wenn dem so ist, ist es recht wahrscheinlich, dass es sich bei dem Wort am Satzanfang nicht um ein Substantiv handelt, sondern eben um ein Wort, was normalerweise kleingeschrieben wird. Zwar kannst Du mit diesem Ansatz nicht zwischen Fallen/fallen und Fliegen/fliegen unterscheiden, aber im Durchschnitt solltest Du damit schon gute Ergebnisse erzielen.
ich hab noch eine andere Idee, wie Du das mit dem Normalisieren machen könntest. Überprüfe doch einfach für jedes Wort, das an einem Satzanfang steht, ob es auch als kleingeschriebene Variante irgendwo im Text auftaucht. Wenn dem so ist, ist es recht wahrscheinlich, dass es sich bei dem Wort am Satzanfang nicht um ein Substantiv handelt, sondern eben um ein Wort, was normalerweise kleingeschrieben wird. Zwar kannst Du mit diesem Ansatz nicht zwischen Fallen/fallen und Fliegen/fliegen unterscheiden, aber im Durchschnitt solltest Du damit schon gute Ergebnisse erzielen.
