Ich habe einen großen Korpus als Diktat von 25 Listen gespeichert, die ich mit SKLearns TfidfVectorizer
analysieren möchte. Jede Liste enthält viele Zeichenfolgen. Jetzt interessiere ich mich sowohl für die gesamte Begriffshäufigkeit (tf) im gesamten Korpus als auch für die einzigartigsten Begriffe in jeder Liste der 25 Zeichenfolgen (idf). Das Problem ist, ich habe keine Möglichkeit gefunden, diese Art von Objekt an den TfidfVectorizer zu übergeben. Übergeben der Diktat nur Vektorisiert die Schlüssel, die Übergabe der Werte ergibt eine AttributeError: 'list' object has no attribute 'lower'
(ich denke, es erwartet eine Zeichenfolge.)Verwenden von TfidfVectorizer auf einem Verzeichnis von Listen
Vielen Dank im Voraus.
Update: Jetzt ist mein Vorverarbeitungsschritt einschließlich, die ein dict
der Fläche verwendet, ID-Paare genannt buckets
for area in buckets:
area_docs = []
for value in buckets[area]:
if 'filename_%s.txt' % value in os.listdir(directory):
fin = open(directory+'/filename_%s.txt' % value, 'r').read()
area_docs.append(fin)
buckets[area] = area_docs
corpus = buckets.values()
vectorizer = TfidfVectorizer(min_df=1, stop_words='english')
X = vectorizer.fit_transform(corpus)
idf = vectorizer.idf_
d = dict(zip(vectorizer.get_feature_names(), idf))
sorted_d = sorted(d.items(), key=operator.itemgetter(1))
sorted_d[:50]
'TfidfVectorizer' wird verwendet, um" eine Sammlung von Rohdokumenten in eine Matrix von TF-IDF-Features zu konvertieren ". Es möchte eine Sequenz von Dokumenten. Ihr Wörterbuch scheint irgendwie verarbeitet zu werden, daher ist nicht klar, was Sie von 'TfidfVectorizer' erwarten. –
Danke @ juanpa.arrivillaga. Bearbeitet, um zu reflektieren, dass Listeneinzelteile mehr-Wort Zeichenketten sind (in meinen tatsächlichen Falldokumenten ~ 2000 Wörtern). Die Listen sind im Grunde Subkonzerne. In der Tat möchte ich die markantesten Wörter in einem gegebenen Subcorpus (Liste) kennen. – 6Bacon