Hallo ihr Lieben,
ich bin neu in diesem Forum und habe so etwas noch nie gemacht. Ich studiere Linguistik und muss einen Grundkurs namens Programmieren absolvieren. In diesem Kurs ist es meine Aufgabe wöchentliche Assignments zu bewerkstelligen und letzendlich 70% der Aufgaben richtig zu beantworten. Dementsprechend ist mein Druck ziemlich hoch. Ich hoffe hier auf Hilfe von euch. Ihr, die, vermutlich viel besser als ich, sich in Python viel besser auskennt.
Das soll auch keinetfalls so rüberkommen, dass ich meine Aufgabe eintrage und euch machen lasse. Ich denke einfach nur, dass ich das in einfachen Worten besser verstehe, als in hochkomplexen Ausformulierungen.
Die Aufgabe lautetet wie folgt:
Schreibt eine Funktion, die die Textkonkordanz (Fundstellen aller Worter im Dokument) fur einen gegebenen Text berechnet. Als Argument bekommt die Funktion die entsprechende Textdatei und zuruckgeben sollte sie ein Dictionary, das als Schlussel ein Wort und als Wert eine Liste dessen Vorkommen enthalt. Die Vorkommen realisiert ihr am Besten als ein Tupel aus Zeilen- und Spaltenangabe, wobei die Spalten einfach aussagen, um das wievielte Wort in der Zeile es sich handelt.
Zur Veranschaulichung hier mal ein Beispiel, wie ein Teil des Dictionaries fur eine sehr kleine Textdatei aussehen konnte:
{..., 'day' : [(23,2)], 'not' : [(34,1),(67,4)], 'here' : [(32,4)], ...}
Dieses Dictionary wurde beinhalten, dass das Wort 'day' einmal vorkommt und das zweite Wort in Zeile 23 ist, das Wort 'not' zweimal vorkommt, und zwar in Zeile 34 als erstes Wort und in Zeile 67 als viertes Wort usw.
Eine Textdatei ('Alice in Wonderland'), die ihr verwenden konnt, haben wir euch beigefugt. Ihr konnt euch auch selbst eine raussuchen, wenn ihr wollt, aber beachtet, dass es nicht sowas wie unsere Tiger-Korpus-Datei sein sollte, wo immer nur ein Wort pro Zeile steht - sonst waren die Spaltenangaben sinnlos.
Tipp: Um die Konkordanz eines bestimmten Wortes zu erhalten, konnt ihr dann einfach nur das Dictionary an der Stelle dieses Wortes ausgeben. Wenn ihr z.B. nur die Vorkommen von dem Wort 'water' haben wollt, konntet ihr Folgendes schreiben:
concordance = compute concordance('alice.txt') print concordance['water'] Euer Output sollte dann folgendermaen aussehen (so konnt ihr auch uberprufen, ob euer Programm korrekt funktioniert): [(582, 1), (1969, 4)]. Und noch ein weiterer Beispielaufruf: print concordance['tea'] Output: [(1677, 10), (1784, 4), (1834, 4), (1931, 4), (3110, 5)]
Meine Idee ist nun:
1. alle wörter aus dem text in eine liste überführen
2. Die liste bereinigen, denn doppelte wörter würden hier auch doppelt vorkommen
3. Für jedes wort aus der liste im text schauen, an welchen stellen es vor kommt und die koordinaten eintragen
Ich beginne mit:
text_file = open("filename.dat", "r")
lines = text_file.read().split(' ')
print lines
print len(lines)
text_file.close()
Aber so richtig weiter weiß ich leider nicht. Hat jemand von euch eine Idee?
Lieben Gruß, Ließa
ich bin neu in diesem Forum und habe so etwas noch nie gemacht. Ich studiere Linguistik und muss einen Grundkurs namens Programmieren absolvieren. In diesem Kurs ist es meine Aufgabe wöchentliche Assignments zu bewerkstelligen und letzendlich 70% der Aufgaben richtig zu beantworten. Dementsprechend ist mein Druck ziemlich hoch. Ich hoffe hier auf Hilfe von euch. Ihr, die, vermutlich viel besser als ich, sich in Python viel besser auskennt.
Das soll auch keinetfalls so rüberkommen, dass ich meine Aufgabe eintrage und euch machen lasse. Ich denke einfach nur, dass ich das in einfachen Worten besser verstehe, als in hochkomplexen Ausformulierungen.
Die Aufgabe lautetet wie folgt:
Schreibt eine Funktion, die die Textkonkordanz (Fundstellen aller Worter im Dokument) fur einen gegebenen Text berechnet. Als Argument bekommt die Funktion die entsprechende Textdatei und zuruckgeben sollte sie ein Dictionary, das als Schlussel ein Wort und als Wert eine Liste dessen Vorkommen enthalt. Die Vorkommen realisiert ihr am Besten als ein Tupel aus Zeilen- und Spaltenangabe, wobei die Spalten einfach aussagen, um das wievielte Wort in der Zeile es sich handelt.
Zur Veranschaulichung hier mal ein Beispiel, wie ein Teil des Dictionaries fur eine sehr kleine Textdatei aussehen konnte:
{..., 'day' : [(23,2)], 'not' : [(34,1),(67,4)], 'here' : [(32,4)], ...}
Dieses Dictionary wurde beinhalten, dass das Wort 'day' einmal vorkommt und das zweite Wort in Zeile 23 ist, das Wort 'not' zweimal vorkommt, und zwar in Zeile 34 als erstes Wort und in Zeile 67 als viertes Wort usw.
Eine Textdatei ('Alice in Wonderland'), die ihr verwenden konnt, haben wir euch beigefugt. Ihr konnt euch auch selbst eine raussuchen, wenn ihr wollt, aber beachtet, dass es nicht sowas wie unsere Tiger-Korpus-Datei sein sollte, wo immer nur ein Wort pro Zeile steht - sonst waren die Spaltenangaben sinnlos.
Tipp: Um die Konkordanz eines bestimmten Wortes zu erhalten, konnt ihr dann einfach nur das Dictionary an der Stelle dieses Wortes ausgeben. Wenn ihr z.B. nur die Vorkommen von dem Wort 'water' haben wollt, konntet ihr Folgendes schreiben:
concordance = compute concordance('alice.txt') print concordance['water'] Euer Output sollte dann folgendermaen aussehen (so konnt ihr auch uberprufen, ob euer Programm korrekt funktioniert): [(582, 1), (1969, 4)]. Und noch ein weiterer Beispielaufruf: print concordance['tea'] Output: [(1677, 10), (1784, 4), (1834, 4), (1931, 4), (3110, 5)]
Meine Idee ist nun:
1. alle wörter aus dem text in eine liste überführen
2. Die liste bereinigen, denn doppelte wörter würden hier auch doppelt vorkommen
3. Für jedes wort aus der liste im text schauen, an welchen stellen es vor kommt und die koordinaten eintragen
Ich beginne mit:
text_file = open("filename.dat", "r")
lines = text_file.read().split(' ')
print lines
print len(lines)
text_file.close()
Aber so richtig weiter weiß ich leider nicht. Hat jemand von euch eine Idee?
Lieben Gruß, Ließa
Zuletzt bearbeitet: