def book_descr(name): toConsider = dt.get_words(name, 'sentenses') #[:NUMBER] C = sum(list(map(lambda t: t[1], dt.get_words(name)))) #print(C) y = np.array(list(map(lambda t: t[1], toConsider))) x = np.array(list(map(lambda t: t[0], toConsider))) y_n = y.copy() for i in range(0, len(y) - D_L): for j in range(max(-D_L, -i), D_L + 1): v = y[i] * np.e**(-(j / 4)**2) y_n[i - j] += v y_n[i + j] += v #C = sum(y) y = y_n / C x = np.log(x) result, _ = curve_fit(norm, x, y, maxfev=10000) return result[0], result[1], result[2]
def diff(*i, by = 'words', function = LOG_FUNCTION): global data1, data2, y data1 = dt.get_words(i[0], by) data2 = dt.get_words(i[1], by) if(type(data1)== dict): data1 = data1. items() if(type(data2)== dict): data2 = data2. items() d_data1 = dict(data1) d_data2 = dict(data2) C0 = sum(list(map(lambda t: t[1], data1))) C1 = sum(list(map(lambda t: t[1], data2))) y = dt.dict_diff(dt.devide_dict(d_data1, C0), dt.devide_dict(d_data2, C1), function) return y
def norm(x, A, B, C): return A*np.e**(-B*(x+C)**2) NUMBER = 700 styles=['-','--','-.',':',''] books = dt.get_all_books() #books = dt.get_books_by("Толстой Лев Николаевич", prop='author') #books = ["Толстой Лев Николаевич#Война и мир#1",# "Толстой Лев Николаевич#Война и мир#2", #"Толстой Лев Николаевич#Война и мир#3", "Толстой Лев Николаевич#Война и мир#4", #"Толстой Лев Николаевич#Анна Каренина", "Тургенев Иван Сергеевич#Отцы и дети", # "Достоевский Федор Михайлович#Преступление и наказание", "Неизвестный автор#Война и мир"] all_y = {} for i in books: toConsider = dt.get_words(i,'sentenses') all_y = dt.sum_dicts(all_y, dict(toConsider)) #[:NUMBER] #C = sum(list(map(lambda t: t[1], dt.get_words(i)))) # print(C) #y = np.array(list(map(lambda t: t[1], toConsider))) # x = np.array(list(map(lambda t: t[0], toConsider))) #C = sum(y) #y = y/C #x = np.log(x) #plt.plot(y)
def norm(x, A, B, C): return A*np.e**(-B*(x+C)**2) NUMBER = 700 D_L = 40 styles=['-','--','-.',':',''] #books = dt.get_all_books() #books = dt.get_books_by("Толстой Лев Николаевич", prop='author') books = ["Толстой Лев Николаевич#Война и мир#1",# "Толстой Лев Николаевич#Война и мир#2", "Толстой Лев Николаевич#Война и мир#3", "Толстой Лев Николаевич#Война и мир#4", "Толстой Лев Николаевич#Анна Каренина", "Тургенев Иван Сергеевич#Отцы и дети", "Достоевский Федор Михайлович#Преступление и наказание", "Неизвестный автор#Война и мир"] for i in books: toConsider = dt.get_words(i,'sentenses')#[:NUMBER] C = sum(list(map(lambda t: t[1], dt.get_words(i)))) print(C) y = np.array(list(map(lambda t: t[1], toConsider))) x = np.array(list(map(lambda t: t[0], toConsider))) y_n = y.copy() for i in range(0,len(y)-D_L): for j in range(max(- D_L, -i), D_L + 1): v = y[i]*np.e**(-(j/4)**2) y_n[i-j] += v y_n[i+j] += v #C = sum(y) y = y_n
#"Толстой Лев Николаевич#Война и мир#3", "Толстой Лев Николаевич#Война и мир#4", #"Толстой Лев Николаевич#Анна Каренина", "Тургенев Иван Сергеевич#Отцы и дети", # "Достоевский Федор Михайлович#Преступление и наказание", "Неизвестный автор#Война и мир"] book_pairs = [("Толстой Лев Николаевич#Война и мир#1", "Достоевский Федор Михайлович#Преступление и наказание"), ("Толстой Лев Николаевич#Война и мир#2", "Толстой Лев Николаевич#Война и мир#1"), ("Толстой Лев Николаевич#Война и мир#1", "Толстой Лев Николаевич#Анна Каренина"), ('Толстой Лев Николаевич#Война и мир#1', 'Стругацкие#Сборник-1'), ("Толстой Лев Николаевич#Анна Каренина", 'Стругацкие#Сборник-1')] all_y = {} for i in book_pairs: data1 = dt.get_words(i[0]) data2 = dt.get_words(i[1]) C0 = sum(list(map(lambda t: t[1], data1))) C1 = sum(list(map(lambda t: t[1], data2))) print(C0, C1) all_y = dt.sum_dicts(dt.devide_dict(dict(dt.get_words(i[0], 'words')), C0), dt.devide_dict(dict(dt.get_words(i[1], 'words')), C1), minus=True) all_y = sorted(list(all_y.items()), key=lambda t: t[0]) y = (np.array(list(map(lambda t: t[1], all_y)))**2)**0.25 plt.plot(y, label=i[0] + ' us ' + i[1]) print(i[0], i[1], sum(y))
styles = ['-', '--', '-.', ':', ''] #books = dt.get_all_books() #books = dt.get_books_by("Толстой Лев Николаевич", prop='author') books = [ "Толстой Лев Николаевич#Война и мир#1", "Толстой Лев Николаевич#Война и мир#2", "Толстой Лев Николаевич#Война и мир#3", "Толстой Лев Николаевич#Война и мир#4", "Толстой Лев Николаевич#Анна Каренина", "Тургенев Иван Сергеевич#Отцы и дети", "Достоевский Федор Михайлович#Преступление и наказание", "Неизвестный автор#Война и мир" ] for i in books: toConsider = dt.get_words(i)[:NUMBER] C = sum(list(map(lambda t: t[1], dt.get_words(i)))) print(C) y = np.array(list(map(lambda t: t[1], toConsider))) #C = sum(y) y = y / C #plt.plot(y) #plt.plot(np.full(NUMBER,1)) #result_ = np.array([5281.0, -14394.0, -2.5, 70.0, 4.5])*y[0]/735.0 try: result, _ = curve_fit(funct, np.arange(NUMBER) + 1, y,