【发布时间】:2018-06-02 08:59:31
【问题描述】:
我有一组文本文档,想计算所有文本文档的二元组数。
首先,我创建一个列表,其中每个元素又是一个列表,表示一个特定文档中的单词:
print(doc_clean)
# [['This', 'is', 'the', 'first', 'doc'], ['And', 'this', 'is', 'the', 'second'], ..]
然后,我从文档中提取二元组并将它们存储在一个列表中:
bigrams = []
for doc in doc_clean:
bigrams.extend([(doc[i-1], doc[i])
for i in range(1, len(doc))])
print(bigrams)
# [('This', 'is'), ('is', 'the'), ..]
现在,我想计算每个唯一二元组的频率:
bigrams_freq = [(b, bigrams.count(b))
for b in set(bigrams)]
一般来说,这种方法是有效的,但它太慢了。 bigrams 列表非常大,总共约 5mio 条目和约 300k 独特的 bigrams。在我的笔记本电脑上,当前的方法花费了太多时间进行分析。
谢谢你帮助我!
【问题讨论】: