我有一个巨大的文本文件来标记化列表。我有以下代码适用于小数据集。但是,我在使用与大数据集相同的过程时遇到了问题。我给出了一个小数据集的例子,如下所示。令牌化大量的python文本
In [1]: text = [["It works"], ["This is not good"]]
In [2]: tokens = [(A.lower().replace('.', '').split(' ') for A in L) for L in text]
In [3]: tokens
Out [3]:
[<generator object <genexpr> at 0x7f67c2a703c0>,
<generator object <genexpr> at 0x7f67c2a70320>]
In [4]: list_tokens = [tokens[i].next() for i in range(len(tokens))]
In [5]: list_tokens
Out [5]:
[['it', 'works'], ['this', 'is', 'not', 'good']]
尽管所有的小数据集的工作这么好,我遇到的问题处理一个巨大的字符串(字符串超过1,000,000列表)使用相同的代码清单列表。由于我仍然可以用In [3]
中的巨大数据集对字符串进行标记,因此它在In [4]
(即在终端中死亡)失败。我怀疑这只是因为文本的正文太大。
我在这里,因此,寻求对程序的改进建议,以获取字符串列表中的一个列表,我有In [5]
。
但是,我的实际目的是计算每个列表中的单词。例如,在上面的小数据集的例子中,我会得到如下的东西。
[[0,0,1,0,0,1], [1, 1, 0, 1, 1, 0]] (note: each integer denotes the count of each word)
如果我不需要将生成器转换为列表以获得所需结果(即字数),那也是很好的。
如果我的问题不清楚,请让我知道。我很乐意尽我所能澄清。谢谢。
我会用一个'设置()'建立的所有字符串的所有字的原始列表,然后通过重复使用一个计数以产生值表。 – beroe
你的电脑有多少内存?另外,我想你的数据集存储在一个文件中,你可以一句一句地加载它吗?你会省下很多内存 – hmicn