У меня есть набор текстовых документов, и я хочу посчитать количество биграмм по всем текстовым документам.
Сначала я создаю список, в котором каждый элемент снова является списком, представляющим слова в одном конкретном документе:
print(doc_clean)
# [['This', 'is', 'the', 'first', 'doc'], ['And', 'this', 'is', 'the', 'second'], ..]
Затем я извлекаю биграммы в документе и сохраняю их вlist:
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)]
Обычно этот подход работает, но он слишком медленный.Список биграмм довольно большой, всего ~ 5 миллионов записей и ~ 300 000 уникальных биграмм.На моем ноутбуке текущий подход требует слишком много времени для анализа.
Спасибо за помощь!