我有一個巨大的文本文件來標記化列表。我有以下代碼適用於小數據集。但是,我在使用與大數據集相同的過程時遇到了問題。我給出了一個小數據集的例子,如下所示。令牌化大量的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