Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #coding=latin-1
- from __future__ import print_function # use print() in Python 2
- try:
- import Tkinter as tk # Python 2
- from Tkinter import *
- except:
- import tkinter as tk # Python 3
- import codecs # to open() with encoding="latin-1" in Python 2
- class Principal():
- def __init__(self):
- self.you_shall_not_pass = ['de', 'o','a', 'do', 'da', 'em', 'e', 'que', 'ser', 'um', 'uns', 'uma', 'umas', 'por','para', 'nao', 'com', 'se', 'ter', 'seu', 'sua', 'seus', 'suas','como',
- 'estar','sim', '-', 'os', 'as', 'no', 'ao', 'na', '.', 'mas', 'era', 'lhe', 'ele', 'mais','dos', 'ela', 'ele', 'muito','ja','eu','sobre','das','tinha','quando','sem','la','num',
- 'depois','entao','nos','esta','ainda','numa','onde','foi','tao','estava','entre','dum','so','grande','disse','todo','pela','agora','pelo','me','toda', 'havia', 'tudo', 'ou','ate',
- 'ha','nem','logo','ia','sempre','duas','tambem','mesmo','ali','aos','tem','fora','aquele','tu','meu','duma','aquela','e,','outra','essa','outro','isto','esse','assim','quem','ele,',
- 'apenas','todos','pouco','nas','diante','ai','sob','tinham','coisas','aqui','pois','porque','ir','te','nunca','depois','lado','tres','mao','vez','sim,','desde','isso','fazer','este']
- ##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS
- #Aqui introduzir os tags no mesmo exato formato aqui demonstrado: o primeiro membro do dicionário terá de ser 'azz' e todas as keys do dicionário terão de estar atribuídas ao nome do tag (também aqui preceder o nome do tag por self.)
- #Depois de adicionado o dicionário de um novo tag, adicionar à lista de tags os tags adicionados, separados por vírgulas e todos utilizando o prefixo self.
- self.nobreza = {'azz':'nobreza','d.': 'nobreza', 'senhor': 'nobreza', 'prata': 'nobreza', 'senhora': 'nobreza', 'salao': 'nobreza', 'respeito': 'nobreza', 'senhoras': 'nobreza',
- 'principe': 'nobreza', 'rei': 'nobreza', 'criado': 'nobreza', 'propria': 'nobreza', 'proprio': 'nobreza', 'perfume': 'nobreza', 'poder': 'nobreza'}
- self.catolicismo = {'azz':'catolicismo','alma': 'catolicismo', 'respeito': 'catolicismo', 'alem': 'catolicismo', 'espirito': 'catolicismo', 'silencio': 'catolicismo', 'graca': 'catolicismo', 'santa': 'catolicismo',
- 'santo': 'catolicismo', 'alto': 'catolicismo', 'coracao': 'catolicismo', 'luz': 'catolicismo', 'senhora': 'catolicismo', 'senhor': 'catolicismo', 'bem': 'catolicismo', 'pai': 'catolicismo',
- 'amor': 'catolicismo', 'novo': 'catolicismo', 'nova': 'catolicismo', 's.': 'deus', 'homens': 'catolicismo', 'vida': 'catolicismo', 'familia': 'catolicismo', 'igreja': 'catolicismo'}
- self.arquitetura = {'azz':'arquitetura','jantar': 'arquitetura', 'camara': 'arquitetura', 'casa': 'arquitetura', 'janela': 'arquitetura', 'quarto': 'arquitetura', 'cor': 'arquitetura', 'luz': 'arquitetura',
- 'mesa': 'arquitetura', 'canto': 'arquitetura', 'casas': 'arquitetura', 'porta': 'arquitetura', 'sala': 'arquitetura', 'jardim': 'arquitetura', 'salao': 'arquitetura', 'escada': 'arquitetura', 'paredes': 'arquitetura'}
- self.fisica = {'azz':'fisica','universo': 'fisica', 'teoria': 'fisica', 'tempo': 'fisica', 'particulas': 'fisica', 'raios': 'fisica', 'trabalho': 'fisica', 'temperatura': 'fisica',
- 'luz': 'fisica', 'forca': 'fisica', 'energia': 'fisica', 'materia': 'fisica', 'buraco': 'fisica', 'espaco': 'fisica', 'velocidade': 'fisica', 'estrela': 'fisica', 'materia': 'fisica',
- 'relatividade': 'fisica', 'estrelas': 'fisica', 'buracos': 'fisica', 'ondas': 'fisica', 'leis': 'fisica', 'teorias': 'fisica', 'gravidade': 'fisica', 'forcas': 'fisica', 'particula': 'fisica',
- 'gravitacional': 'fisica', 'espaco-tempo': 'fisica', 'mecanica': 'fisica', 'distancia': 'fisica', 'raios': 'fisica', 'quarks': 'fisica', 'sol': 'fisica', 'expansao': 'fisica', 'colapso': 'fisica',
- 'quantica': 'fisica', 'radiacao': 'fisica', 'eletroes': 'fisica', 'newton': 'fisica', 'einstein': 'fisica', 'singularidade': 'fisica', 'spin': 'fisica', 'densidade': 'fisica'}
- self.politica = {'azz':'politica', 'bem': 'politica', 'contra': 'politica', 'homens': 'politica', 'estado': 'politica', 'poder': 'politica', 'povo': 'politica', 'rei': 'politica',
- 'tempo': 'politica', 'armas': 'politica', 'tempos': 'politica', 'necessario': 'politica', 'modo': 'politica', 'principados': 'politica', 'principado': 'politica', 'soldados': 'politica', 'fortuna': 'politica',
- 'virtude': 'politica', 'razao': 'politica', 'acoes': 'politica', 'necessidade': 'politica', 'razoes': 'politica', 'estados': 'politica', 'vida': 'politica', 'reino': 'politica', 'estado': 'politica',
- 'senhor': 'politica', 'cidade': 'politica', 'inimigos': 'politica', 'governo': 'politica', 'guerra': 'politica', 'leis': 'politica', 'exercito': 'politica', 'armas': 'politica', 'internacional': 'politica',
- 'historia': 'politica', 'movimento': 'politica', 'revolucao': 'politica', 'exploracao': 'politica', 'nacoes': 'politica', 'burgueses': 'politica', 'classe': 'politica', 'associacao': 'politica', 'dominacao': 'politica',
- 'trabalho': 'politica', 'partido': 'politica', 'operario': 'politica', 'desenvolvimento': 'politica', 'progresso': 'politica', 'oposicao': 'politica', 'capital': 'politica', 'social': 'politica',
- 'politica': 'politica'}
- self.filosofia = {'azz':'filosofia', 'contra': 'filosofia', 'deus': 'filosofia', 'homem': 'filosofia', 'cristianismo': 'filosofia', 'conceito': 'filosofia', 'vida': 'filosofia', 'mundo': 'filosofia',
- 'modo': 'filosofia', 'moral': 'filosofia', 'historia': 'filosofia', 'poder': 'filosofia', 'vontade': 'filosofia', 'fe': 'filosofia', 'sentimento': 'filosofia', 'realidade': 'filosofia', 'realidade': 'filosofia',
- 'verdade': 'filosofia', 'morte': 'filosofia', 'espirito': 'filosofia', 'humanidade': 'filosofia', 'forma': 'filosofia', 'valores': 'filosofia', 'valor': 'filosofia', 'consciencia': 'filosofia', 'odio': 'filosofia',
- 'conceitos': 'filosofia', 'semelhante': 'filosofia', 'religiao': 'filosofia', 'razao': 'filosofia', 'doutrina': 'filosofia', 'estado': 'filosofia', 'possivel': 'filosofia', 'forte': 'filosofia', 'pressuposto': 'filosofia',
- 'argumento': 'filosofia', 'prazer': 'filosofia', 'socrates': 'filosofia', 'cidade': 'filosofia', 'justica': 'filosofia', 'respeito': 'filosofia', 'virtude': 'filosofia', 'metafisica': 'filosofia', 'mal': 'filosofia',
- 'belo': 'filosofia', 'alma': 'filosofia', 'etica': 'filosofia', 'pensar': 'filosofia', 'raciocinio': 'filosofia', 'filosofia': 'filosofia', 'filosofia': 'filosofia', 'sabedoria': 'filosofia'}
- self.portugal = {'azz':'portugal', 'portugal': 'portugal', 'portugues': 'portugal', 'portuguesa': 'portugal', 'lisboa': 'portugal', 'porto': 'portugal', 'mafra': 'portugal', 'sintra': 'portugal',
- 'alentejo': 'portugal', 'braganca': 'portugal', 'braga': 'portugal', 'santarem': 'portugal', 'barcelos': 'portugal', 'leiria': 'portugal', 'viseu': 'portugal', 'acores': 'portugal', 'madeira': 'portugal',
- 'tejo': 'portugal', 'douro': 'portugal', 'mondego': 'portugal', 'coimbra': 'portugal', 'aveiro': 'portugal', 'algarve': 'portugal', 'evora': 'portugal', 'setubal': 'portugal', 'portugueses': 'portugal'}
- self.lista_de_tags=[self.nobreza, self.catolicismo, self.arquitetura, self.fisica, self.politica, self.filosofia, self.portugal]
- ##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS
- #Aqui introduzir os livros com através da adição do prefixo self., igualando à enumeração das palavras do tag, sendo SEMPRE o primeiro membro da lista o nome da obra (NÃO MEXER NISTO ANTES DE ADICIONAR TODOS OS TAGS)
- self.maias = ['maias', 'nobreza']
- self.lista_de_livros=[self.maias]
- ##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS##TAGS
- self.recomendados = []
- self.livro1 = 'erro'
- self.livro2 = 'batata.txt'
- self.dicionario1 = {}
- self.dicionario2 = {}
- def read_dictionario(self, filename):
- result = {}
- lista = codecs.open(filename, 'r', encoding='latin-1').read().split()
- for word in lista:
- if word in self.you_shall_not_pass:
- continue
- if word in result:
- result[word] += 1
- else:
- result[word] = 1
- return result
- def palavras_repetidas(self):
- self.dicionario1 = self.read_dictionario(self.livro1)
- global sorted_dict
- sorted_dict = [(k,v) for v,k in sorted([(v,k) for k,v in self.dicionario1.items()], reverse=True)]
- with open('teste.txt', 'w') as f:
- for item in sorted_dict:
- f.write(str(item))
- self.limit1 = 0.0003 * self.palavras_totais(self.livro1)
- #print(sorted_dict)
- return sorted_dict
- def palavras_totais(self, filename):
- f = open(filename, 'r').read().split()
- total = 0
- for word in f:
- total += 1
- #total = len(f)
- return total
- def comparar(self):
- self.dicionario2 = self.read_dictionario(self.livro2)
- result = []
- self.limit1 = 0.0003 * self.palavras_totais(self.livro1)
- self.limit2 = 0.0003 * self.palavras_totais(self.livro2)
- for key in self.dicionario1:
- if key in self.dicionario2:
- if ((self.dicionario1[key]> self.limit1 and ((self.dicionario2[key])> self.limit2))):
- txt = u'{}: {}, {}'.format(key, self.dicionario1[key], self.dicionario2[key])
- result.append(txt)
- return result
- def tags(self):
- self.livro1_tag = []
- for key in self.dicionario1.keys():
- for tag in self.lista_de_tags:
- if self.dicionario1[key] > self.limit1 and key in tag:
- self.livro1_tag.append(tag['azz'])
- return self.livro1_tag
- def similar(self):
- self.index = 0
- for tag in self.livro1_tag:
- for livro in self.lista_de_livros:
- for tag2 in livro:
- if tag2 == tag:
- self.index +=1
- if self.index >= 1:
- self.recomendados.append(livro[0])
- return self.recomendados
- class MainWindow():
- def __init__(self):
- self.master = tk.Tk()
- self.master.title('App')
- self.e1 = tk.Entry(self.master)
- self.e1.pack()
- self.e2 = tk.Entry(self.master)
- self.e2.pack()
- self.b1 = tk.Button(self.master, text='Submeter', command=self.submeter)
- self.b1.pack()
- self.b2 = tk.Button(self.master, text='Comparar', command=self.comparar)
- self.b2.pack()
- # ------------------------------------------------------------
- self.frame1 = tk.Frame(self.master)
- self.frame1.pack()
- self.scrollbar1 = tk.Scrollbar(self.frame1)
- self.scrollbar1.pack(side='right', expand=True, fill='y')
- self.txt1 = tk.Text(self.frame1, yscrollcommand=self.scrollbar1.set)
- self.txt1.pack(side='left')
- self.scrollbar1.config(command=self.txt1.yview)
- self.clear1 = tk.Button(self.master, text='Clear', command=self.clear1)
- self.clear1.pack()
- # ------------------------------------------------------------
- self.frame2 = tk.Frame(self.master)
- self.frame2.pack()
- self.scrollbar2 = tk.Scrollbar(self.frame2)
- self.scrollbar2.pack(side='right', expand=True, fill='y')
- self.txt2 = tk.Text(self.frame2, yscrollcommand=self.scrollbar2.set)
- self.txt2.pack(side='left')
- self.scrollbar2.config(command=self.txt2.yview)
- self.clear2 = tk.Button(self.master, text='Clear', command=self.clear2)
- self.clear2.pack(side='left', fill=BOTH)
- # ------------------------------------------------------------
- self.txt3 = tk.Text(self.frame1)
- self.txt3.pack()
- self.tag = tk.Button(self.frame2, text='Ver Tags', command=self.tags)
- self.tag.pack()
- self.txt4 = tk.Text(self.frame2)
- self.txt4.pack()
- self.txt4.tag_config(self.frame2,background="black", foreground="green")
- self.master.configure(background='grey')
- self.frame1.configure(background='grey')
- self.frame2.configure(background='grey')
- self.verrecomendados = tk.Button(self.master, text = 'Ver Recomendados', command = self.ver_recomendados)
- self.verrecomendados.pack()
- self.principal = Principal()
- def run(self):
- self.master.mainloop()
- def clear1(self):
- self.txt1.delete(1.0, 'end')
- def clear2(self):
- self.txt2.delete(1.0, 'end')
- def submeter(self):
- self.principal.livro1 = self.e1.get() +'.txt'
- result = self.principal.palavras_repetidas()
- for line in result:
- self.txt1.insert('end', line)
- self.txt1.insert('end', "\n")
- def comparar(self):
- self.principal.livro1 = self.e1.get() +'.txt'
- self.principal.livro2 = self.e2.get() +'.txt'
- result = self.principal.comparar()
- for line in result:
- self.txt2.insert('end', line)
- self.txt2.insert('end', "\n")
- def tags(self):
- tag = self.principal.tags()
- self.txt3.insert('end', tag)
- def ver_recomendados(self):
- self.txt4.insert('end', self.principal.similar())
- # ---------------------------------------------------------------------
- MainWindow().run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement