我試圖將一個大的分割列表傳遞給函數'FreqDist'來查找最頻繁的單詞。如何通過nltk.FreqDist一個大的分割列表或文件
我分裂使用鹹菜如下列表:
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()
現在我想用一類操作如下傳遞文件:
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)
不幸的是,這樣做我得到這個錯誤:
TypeError: iter() returned non-iterator of type 'Passer'
有沒有人有任何想法如何解決這個問題?
Python 2中的迭代器必須定義'next'方法(不帶下劃線)。 – vaultah
這就是說,我所做的將在python 3上工作,對吧? – alexmulo
'__next__'可以在Python 3上運行,是的。不過,Python 3中沒有cPickle。 – vaultah