Чтобы скрипт заработал, нужно соединить две части скрипта: а) мое начало и б) продолжение из другого кода, который искал результат по всему тексту. Заранее спасибо. Вот код:
import os from math import log """Функции про логарифмы - для последующего подсчета устойчивости словосочетаний""" def logL(p,k,n): if p == 0: return (n - k) * log(1 - p) elif p == 1: return k * log(p) else: return k * log(p) + (n - k) * log(1 - p) def logLikehoodRatioBinormal(k1, n1, k2, n2): p1 = k1 / n1 p2 = k2 / n2 p = (k1 + k2) / (n1 + n2) return 2 * (logL(p1, k1, n1) + logL(p2, k2, n2) - logL(p, k1, n1) - logL(p, k2, n2)) """Этот скрипт открывает текстовый файл и составляет список стихов""" fileObj = open('C:/Texts/Verses/1.txt', 'r+', encoding='utf-8') verseList = fileObj.readlines() words = [] A = {} B = {} AB = {} N = 0 """Нужно, чтобы каждый элемент в списке verseList нарезался на слова и с ними работал следующий код как с элементами words""" for i in verseList: words.extend(i in verseList.split()) print(words) for i in range(len(words) - 1): pair = words[i], words[i + 1] try: AB[pair] += 1 except KeyError: AB[pair] = 1 try: A[pair[0]] += 1 except KeyError: A[pair[0]] = 1 try: B[pair[1]] += 1 except KeyError: B[pair[1]] = 1 N += 1 raitings = [] for pair in AB: ab = AB[pair] anotb = A[pair[0]] - ab notab = B[pair[1]] - ab notanotb = N-A[pair[0]] - B[pair[1]] + ab raitings.append((pair, logLikehoodRatioBinormal(k1 = ab, n1 = ab + anotb, k2 = notab, n2 = notab + notanotb))) raitings.sort(key = lambda x: x[1], reverse = True) for el in raitings[:20]: print(el)