zunächst einmal "sorry" wenn das in euren Augen wieder einer dieser Posts von blöden Studenten ist die keine Ahnung haben aber ich habe ein riesen Problem :K
Ich sitze seit Tagen an einem Programm oder besser gesagt an einer Stelle des Programms wo ich echt nicht mehr weiter weiß. Ich werde mal versuchen es so genau zu erklären wie es nur geht:
Das Programm soll aus einer Liste von Nomen jedes Wort überprüfen, ob dieses nochmal in dieser Liste vorkommt, aber diesmal innerhalb eines anderen Wortes. Dieses "andere" Wort was also aus dem überprüften und einem anderen Wort zusammengesetzt ist, soll das Programm in eine neue Liste schreiben.
Nochmal genauer: Also z.B. findet das Programm das Wort "Milch" und wenn jetzt "Vollmilch" auch in dieser Liste der Nomen steht, soll Vollmilch an eine neue Liste angefügt werden.
Den Anfang des Programms habe ich mal weggelassen da es hier eigentlich nur um die Schleife unten geht. Ich habe vorher den Text (ca 250.000 Token) eingelesen, tokenisiert und dann eben eine Liste an Nomen erstellt (ca 20.000, kein Nomen doppelt).
Hier mal der Code:
Code: Alles auswählen
neu = []
for wort in nomen:
for andereswort in nomen:
if (andereswort.startswith(wort) or andereswort.endswith(wort.lower())) and andereswort != wort:
if not andereswort in neu: neu.append(andereswort)
print neu
Hat evtl. jemand eine Idee woran es liegen könnte dass es soooo lange dauert und was man machen könnte um die for-Schleifen zu vermeiden?