Anwendung von Sets bringt Reihenfolge durcheinander
Verfasst: Samstag 28. Mai 2011, 17:39
Hallo zusammen,
Ich habe folgenden Programmcode geschrieben:
import nltk
nltk.download()
from nltk.corpus import stopwords
stopwords = stopwords.words('english')
newstopwords = set(stopwords)
porter = nltk.PorterStemmer()
eingabe = 'all the books are lying on the tables each and every single day'
listeingabe = eingabe.split(" ")
seteingabe = set(listeingabe)
print seteingabe
newgesamtliste = seteingabe - newstopwords
print newgesamtliste
listgesamtliste = list(newgesamtliste)
print listgesamtliste
porterstem = [porter.stem(t) for t in listgesamtliste]
print porterstem
Ich nutze hier das ntlk und importiere zunächst das nltk und dann importiere ich eine Liste Englischer Stoppworte. Das Ziel war, dass die Stoppworte aus eingabe abgezogen werden. Wie sich aber zeigte lässt sich das nicht mit Hilfe von Listen realisieren sondern ich muss die Listen in Sets umwandeln. Wenn ich aber die Liste von Eingabe in ein Set umwandel, damit ich dann das Set von Stoppworte davon abziehen kann, dann geht die Reihenfolge von listeingabe verloren und die Worte aus Eingabe erscheinen in seteingabe in einer seltsam zufälligen Reihenfolge.
Es ist aber sehr wichtig, dass die Worte in listgesamtliste auf die dann der Porter-Stemmer angewandt wird in der gleichen Reihenfolge ist, wie in Eingabe nur eben um die Stoppworte bereinigt.
Kann mir einer von euch vielleicht einen Tipp geben, wie ich das schaffen kann?
Herzlichen Dank für eure Hilfe. Ich bin mir auch sicher, dass der Code noch verbessert werden kann, das werde ich auch noch tun.
Viele Grüße,
DetRRG
Ich habe folgenden Programmcode geschrieben:
import nltk
nltk.download()
from nltk.corpus import stopwords
stopwords = stopwords.words('english')
newstopwords = set(stopwords)
porter = nltk.PorterStemmer()
eingabe = 'all the books are lying on the tables each and every single day'
listeingabe = eingabe.split(" ")
seteingabe = set(listeingabe)
print seteingabe
newgesamtliste = seteingabe - newstopwords
print newgesamtliste
listgesamtliste = list(newgesamtliste)
print listgesamtliste
porterstem = [porter.stem(t) for t in listgesamtliste]
print porterstem
Ich nutze hier das ntlk und importiere zunächst das nltk und dann importiere ich eine Liste Englischer Stoppworte. Das Ziel war, dass die Stoppworte aus eingabe abgezogen werden. Wie sich aber zeigte lässt sich das nicht mit Hilfe von Listen realisieren sondern ich muss die Listen in Sets umwandeln. Wenn ich aber die Liste von Eingabe in ein Set umwandel, damit ich dann das Set von Stoppworte davon abziehen kann, dann geht die Reihenfolge von listeingabe verloren und die Worte aus Eingabe erscheinen in seteingabe in einer seltsam zufälligen Reihenfolge.
Es ist aber sehr wichtig, dass die Worte in listgesamtliste auf die dann der Porter-Stemmer angewandt wird in der gleichen Reihenfolge ist, wie in Eingabe nur eben um die Stoppworte bereinigt.
Kann mir einer von euch vielleicht einen Tipp geben, wie ich das schaffen kann?
Herzlichen Dank für eure Hilfe. Ich bin mir auch sicher, dass der Code noch verbessert werden kann, das werde ich auch noch tun.
Viele Grüße,
DetRRG