gensim中corpus的格式是:
corpus = "[[(文本1第1个词的id),(文本1第1个词的tf),(文本1第2个词的id),(文本1第2个词的tf),……,(文本1第n个词的id),(文本1第n个词的tf)],
[(文本2第1个词的id),(文本2第1个词的tf),(文本2第2个词的id),(文本2第2个词的tf),……,(文本2第n个词的id),(文本2第n个词的tf)]……,]]"
可以看出,最内层是(id,tf)的元组,外层是一个文本中所有词语的元组数据的列表,最外层是所有文本。
如果corpus占用内存较小,可以直接使用eval()将字符串列表还原为列表格式。
但如果corpus占用内存很大(比如我导出的corpus有600兆,16G的电脑甚至64G电脑都完全搞不定),就需要用到以下的遍历循环还原:
with open(r"corpus.txt", 'r', encoding='utf-8')as f:
content = f1.read()
list1 = content.split('], [')
content_list = []
for each in list1:
each = each.replace('[[', '').replace(']]', '')
# print(each)
each_list = each.split('), (')
each_list1 = []
for item in each_list:
# print(item)
item = item.replace('(', '').replace(')', '').replace(' ','')
item = eval(item) # (1, 2)
# print(item)
each_list1.append(item) # [(), (), ……, ()]
# print(each_list1)
content_list.append(each_list1)
print(list)
这样就能实现大样本的列表还原啦!