Exemplo n.º 1
0
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]
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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)
Exemplo n.º 4
0
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,