Ich versuche, eine große aufgeteilte Liste an die Funktion 'FreqDist' zu übergeben, um die häufigsten Wörter zu finden.Wie man nltk.FreqDist eine große gespaltene Liste oder Datei übergibt
I gespaltet die Liste Gurke wie folgt verwendet:
import nltk
import cPickle as pickle
import sys
import os
import itertools as it
for no,i in enumerate(it.islice(it.count(), 3, 33+3, 3)):
if no == 0:
fil = tokens[0:i]
else:
fil = tokens[i-3+1:i+1]
file_name = "/tmp/words/text" + str(no+1) + '.p'
files = open(file_name, "wb")
pickle.dump(fil, files)
files.close()
Jetzt würde ich die Dateien mit einer Klasse Operator wie folgt weitergeben möchte:
class Passer(object):
def __init__(self,path):
self.path = path
def __iter__(self):
return self
def __next__(self):
for fname in os.listdir(self.path):
with open(self.path + "/" + fname, "rb") as f:
fil = pickle.load(f)
yield fil
passer = Passer(path="/tmp/words")
words = nltk.FreqDist(passer)
Leider ist es auf diese Weise tun Ich habe diesen Fehler:
TypeError: iter() returned non-iterator of type 'Passer'
Hat jemand eine Idee, wie dieses Problem zu lösen?
Iteratoren in Python 2 müssen die 'next'-Methode definieren (keine Unterstriche). – vaultah
Das bedeutet, dass das, was ich getan habe, auf Python 3 arbeiten würde, oder? – alexmulo
'__next__' würde auf Python 3 funktionieren, ja. In Python 3 gibt es jedoch kein cPickle. – vaultah