На странице представлен фрагмент

Реши любую задачу с помощью нейросети.

Шаги решения:
1. Создаем функцию `freq`, которая принимает два аргумента: строку `s` и число `n`. Внутри функции разбиваем строку на слова и создаем список n-грам. Затем создаем словарь, где ключами будут быть n-грамы, а значениями – их частота в строке `s`. Возвращаем этот словарь.
2. Создаем функцию `sortFreq`, которая принимает словарь `dic`. Внутри функции сортируем словарь по убыванию частоты и возвращаем отсортированный словарь.
3. Создаем функцию `normFreq`, которая принимает словарь `dic`. Внутри функции проходим по каждому элементу словаря, вычисляем нормированную частоту `Fnorm` как `f(x)/N`, где `f(x)` – частота элемента `x` в словаре `dic`, а `N` – общее количество элементов в словаре. Затем вычисляем `imp` как `Fnorm * 1000000`. Преобразуем словарь `dic` в список кортежей вида `(слово, частота, Fnorm, ipm)`. Возвращаем этот список.
4. Создаем функцию `rankFreq`, которая принимает список кортежей. Внутри функции проходим по каждому элементу списка и добавляем новый элемент в каждый кортеж, который будет содержать ранг данного элемента. Ранг вычисляется как порядковый номер элемента в списке. Возвращаем измененный список кортежей.
5. В основной программе вызываем функцию `freq` с примером строки и значением `n`. Затем вызываем функцию `sortFreq` для отсортированного словаря. Затем вызываем функцию `normFreq` для получения списка с нормированными частотами. И, наконец, вызываем функцию `rankFreq` для получения списка с рангами. Выводим полученные списки.

Пример кода на Python:

“`python
def freq(s, n):
words = s.split()
ngrams = []
for i in range(len(words)-n+1):
ngrams.append(tuple(words[i:i+n]))
freq_dic = {}
for ngram in ngrams:
if ngram in freq_dic:
freq_dic[ngram] += 1
else:
freq_dic[ngram] = 1
return freq_dic

def sortFreq(dic):
sorted_dic = dict(sorted(dic.items(), key=lambda item: item[1], reverse=True))
return sorted_dic

def normFreq(dic):
total_freq = sum(dic.values())
norm_list = []
for key, freq in dic.items():
Fnorm = freq / total_freq
imp = Fnorm * 1000000
norm_list.append((key, freq, Fnorm, imp))
return norm_list

def rankFreq(lst):
ranked_list = [(elem[0], elem[1], elem[2], elem[3], i+1) for i, elem in enumerate(lst)]
return ranked_list

# Пример использования
s = “это пример текста”
n = 2

frequency = freq(s, n)
sorted_frequency = sortFreq(frequency)
normalized_frequency = normFreq(sorted_frequency)
ranked_frequency = rankFreq(normalized_frequency)

print(“Частотные списки n-грам:”)
for key, value in sorted_frequency.items():
print(key, “:”, value)

print(“Нормированные частоты n-грам:”)
for elem in normalized_frequency:
print(elem[0], “:”, elem[1], “-“, elem[2], “-“, elem[3])

print(“Рангированные частоты n-грам:”)
for elem in ranked_frequency:
print(elem[0], “:”, elem[1], “-“, elem[2], “-“, elem[3], “-“, elem[4])
“`

Эта программа создает частотные списки n-грам, сортирует их по убыванию частоты, вычисляет нормированные частоты и ранги для каждого элемента. Затем выводит полученные списки на экран.