在处理文本的时候,首先要做的是读取一下文本文件,一般的方法如下:
corpus = open('这个位置放文件绝对路径', 'r').readlines()
将这个文本文件按行读取,每行一个元素放到一个list中。但是需要将整个文本文件先全部装入内存中。
如果文本文件太大,不能一次性读入内存怎么办。要使用Python中的迭代器,一次读取一个成员,然后对这个成员进行某种操作就可以了。
具体方法如下:
class Load_Corpus_with_Iteration(object): # 使用迭代器读取语料库
def __init__(self, path):
self.path = path
def __iter__(self):
for line in open(self.path):
yield line.split()
corpus = Load_Corpus_with_Iteration('/Users/John/Desktop/yelp_dataset_challenge_academic_dataset/review_text.txt')
for item in corpus:
print item
我没有将全部的文本文件装入内存,而是每次只指向迭代器的下一个指针位置,对这个指针位置进行某种操作(上面的代码中进行了split()操作),操作完后,内存的指针不变,等待下一次操作。在主函数中,我们生成了一个对象corpus并使用for循