Задание на проверку закона Ципфа

Возьмите длинный текст на русском языке. С помощью NLTK токенизируйте его (word_tokenize) и используйте FreqDist для вычисления частотного словаря.

  1. Нарисуйте график зависимости частоты слова от его ранка ( порядкового номера слова в частотном словаре, где слова упорядочены по убыванию частоты). Должен получиться рисунок, похожий на гиперболу.
  2. Нарисуйте график логарифма частоты от логарифма ранка. Должен получиться рисунок, похожий на прямую, наклоненную на $-45^\circ$.
  3. Нарисуйте еще один такой же график, но при условии, что перед вычислением частот слова были приведены к начальной форме с помощью pymorphy2. В случае, если pymorphy2 предлагает несколько начальных форм, выберите первую.
  4. Постройте линию регрессии логарифма частоты от логарифма ранка. Для этого сделайте следующее:
     # импортируем numpy
     import numpy as np
     # Импортируем класс LinearRegression из библиотеки scikit-learn
     from sklearn.linear_model import LinearRegression
        
     # допустим, нам нужно подобрать k и b для y = kX + b + error
     # вводим значения X и y
     X = np.array([1, 2, 3, 4, 5, 6])
     y = np.array([3, 5, 7, 9, 11, 13])
        
     # запускаем алгоритм поиска k, b. Обратите внимание на
     # X.reshape(-1,1) это превращает матрицу-строку в матрицу-столбец.
     reg = LinearRegression().fit(X.reshape(-1,1), y)
       
     # и вот так можно достать значения k и b из reg:
     print("k = ", reg.coef_)
     print("b = ", reg.intercept_)
    

Выведите коэффициент `$\alpha$, как он был обозначен в конспекте, сравните его с 1.