我正在尝试将文档列表(每个文档是令牌列表)转换为Blei Lab主题估算例程通常使用的格式,其中['token1', 'token4', 'token1']
的文档变为{{1 }}。我能够产生独特的计数,但速度非常慢。
2 1:2 4:1
第二行(注释掉,重写为循环以便于阅读)是我的表现非常糟糕的地方。对于每个文档,内部列表理解是在整个token_list = sorted(set([stem for document in clean_tokens for stem in document]))
# token_nums = [[token_list.index(tok) for tok in document] for document in clean_tokens]
token_nums = []
for document in clean_tokens:
document_nums = []
for tok in document:
document_nums.append(token_list.index(tok))
token_nums.append(document_nums)
counters = [Counter(document_nums).items() for document_nums in token_nums]
tok_strs = [' '.join([str(a[0]) + ':' + str(a[1]) for a in count]) for count in counters]
中搜索,以便在整个令牌列表中找到正确的索引。然后必须为每个文档发生这种情况。
如何加快搜索所有这些索引的过程?
如果有更有效的方式来执行整个过程,我也很感激听到这一点。
答案 0 :(得分:1)
使用字典而不是.index,类似这样的
dd = dict((i, k) for k, i in enumerate(token_list))
for document in clean_tokens:
print [dd[x] for x in document]