En sık kullanılan sözcükleri bulmak için 'FreqDist' işlevine büyük bölünmüş bir liste iletmeye çalışıyorum. Nasıl nltk.FreqDur geçmek için büyük bir bölünmüş liste veya dosya
ben aşağıdaki gibi turşu kullanarak liste splitted: Artıkimport 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()
Ben aşağıdaki gibi bir sınıf operatörü kullanarak dosyaları aktarmak istiyorum: bu şekilde yapıyor, ne yazık ki
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)
Bu hatayı aldım: Bu sorunun nasıl çözüleceği konusunda bir fikri var mı?
Python 2'deki yineleyiciler 'next' yöntemini tanımlamalıdır (alt çizgi yoktur). – vaultah
Yani yaptığım şey python 3'te çalışacaktı, değil mi? – alexmulo
'__next__', Python 3'te çalışırdı, evet. Yine de, Python 3'te cPickle yok. – vaultah