Python nltk подсчитывает частоту слов и фраз

Я использую NLTK и пытаюсь добиться подсчета словосочетания до определенной длины для конкретного документа, а также частоты каждой фразы. Я токенизирую строку, чтобы получить список данных.

from nltk.util import ngrams
from nltk.tokenize import sent_tokenize, word_tokenize
from nltk.collocations import *


data = ["this", "is", "not", "a", "test", "this", "is", "real", "not", "a", "test", "this", "is", "this", "is", "real", "not", "a", "test"]

bigrams = ngrams(data, 2)

bigrams_c = {}
for b in bigrams:
    if b not in bigrams_c:
        bigrams_c[b] = 1
    else:
        bigrams_c[b] += 1

приведенный выше код дает и выводит это так:

(('is', 'this'), 1)
(('test', 'this'), 2)
(('a', 'test'), 3)
(('this', 'is'), 4)
(('is', 'not'), 1)
(('real', 'not'), 2)
(('is', 'real'), 2)
(('not', 'a'), 3)

что частично то, что я ищу.

У меня вопрос: есть ли более удобный способ сделать это, скажем, до 4 или 5 фраз без дублирования этого кода только для изменения переменной count?

Ответы на вопрос(2)

Ваш ответ на вопрос