独特的令牌计数速度

时间:2015-08-31 18:00:44

标签: python nlp

我正在尝试将文档列表(每个文档是令牌列表)转换为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] 中搜索,以便在整个令牌列表中找到正确的索引。然后必须为每个文档发生这种情况。

如何加快搜索所有这些索引的过程?

如果有更有效的方式来执行整个过程,我也很感激听到这一点。

1 个答案:

答案 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]