我正在尝试将财务文件拆分为句子。我有大约 50.000 个包含纯英文文本的文档。总文件大小约为 2.6 GB。
我正在使用PunktSentenceTokenizer
带有标准英语泡菜文件的 NLTK。我还通过提供额外的缩写对其进行了调整,但结果仍然不够准确。
由于 NLTK PunktSentenceTokenizer 基于 Kiss & Struk (2006) 的无监督算法,我正在尝试根据我的文档训练句子标记器,基于nltk punkt 的训练数据格式。
import nltk.tokenize.punkt
import pickle
import codecs
tokenizer = nltk.tokenize.punkt.PunktSentenceTokenizer()
text = codecs.open("someplain.txt", "r", "utf8").read()
tokenizer.train(text)
out = open("someplain.pk", "wb")
pickle.dump(tokenizer, out)
out.close()
不幸的是,在运行代码时,我收到了一个错误,即内存不足。(主要是因为我首先将所有文件连接到一个大文件中。)
现在我的问题是:
- 如何批量训练算法,这会降低内存消耗吗?
- 我可以使用标准的英语泡菜文件并使用已经训练过的对象进行进一步的训练吗?
我在 Core I7 2600K 和 16GB RAM 机器上的 Windows 10 上使用 Python 3.6 (Anaconda 5.2)。