renix1

Class with text Python 3.x

Oct 26th, 2016
309
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 42.94 KB | None | 0 0
  1. # coding: utf-8
  2.  
  3. """
  4.    OBS:
  5.    "C:/PythonXx/Lib/site-packages/enchant/share/enchant/myspell"
  6.    NÃO UTILIZE A PALAVRA ARGUMENTO
  7.  
  8.    IMPROVEMENTS:
  9.        Added Shift_LEFT to calculate your score.
  10.        Removed the speech of your score. (was very slow, i'm sorry)
  11.        Graph with base in your score and characters. (can be removed or no, you that know)
  12. """
  13.  
  14. import ftplib
  15. import multiprocessing
  16. from tkinter import *
  17. from tkinter import messagebox
  18. from os import system
  19. from sys import platform, argv, exit
  20.  
  21. # Inicialização do dicionário português Brasileiro
  22. dicionario = enchant.Dict("main")
  23.  
  24. version = '0.0.9A'
  25.  
  26. if len(sys.argv) > 1:
  27.     if sys.argv[1] == '-v':
  28.         print("\n--------------- VERSÃO ---------------")
  29.         print("|\t   Versão: %s            |" % (version))
  30.         print("|     Desenvolvida em: 23/12/2016    |")
  31.         print("|     Desenvolvedor: Reni A. Dantas  |")
  32.         print("--------------- VERSÃO ---------------")
  33.         exit(0)
  34.     elif sys.argv[1] == '-h':
  35.         print("\nPara conseguir obter uma classificação e a lista dos pronomes e mais, você só precisa colar o texto\
  36. e apertar o botão \"Encontrar\". Bem simples e intuitivo.")
  37.         exit(0)
  38.     elif sys.argv[1] == '-vh':
  39.         print("\n--------------- VERSÃO ---------------")
  40.         print("|\t   Versão: %s            |" % (version))
  41.         print("|     Desenvolvida em: 23/12/2016    |")
  42.         print("|     Desenvolvedor: Reni A. Dantas  |")
  43.         print("--------------- VERSÃO ---------------")
  44.         print("\nPara conseguir obter uma classificação e a lista dos pronomes e mais, você só precisa colar o texto\
  45. e apertar o botão \"Encontrar\". Bem simples e intuitivo.")
  46.         exit(0)
  47.     else:
  48.         print("Argumento inválido!\n")
  49.         exit(0)
  50.  
  51. class FalaNota(object):
  52.     def __init__(self, pontos):
  53.         self.__pontos = pontos
  54.  
  55.     def falar(self):
  56.         self.__pontos *= 10
  57.         if self.__pontos > 10:
  58.             self.__pontos = 10
  59.         # Serviço de fala serve tanto para o Windows quanto pra Linux e Mac. ;D
  60.         if platform.startswith('win32'):
  61.             system('nircmd speak text \"Sua nota é %d\"' % (self.__pontos))
  62.         elif platform.startswith('darwin'):
  63.             system("say \"Sua nota é %d\"" % (self.__pontos))
  64.         else:
  65.             system("espeak -vpt+m1 \"Sua nota é %d\"" % (self.__pontos))
  66.  
  67.  
  68. class Janela(object):
  69.     janela = False
  70.  
  71.     def __init__(self, master, pontos=0):
  72.         # DEFINIÇÃO DE FRAMES
  73.         self.pontos = pontos
  74.         self.frame_one = Frame()
  75.         self.frame_one.pack()
  76.         self.frame_one.configure(bg="gray92")
  77.         self.frame_two = Frame()
  78.         self.frame_two.pack()
  79.         self.frame_two.configure(bg="gray92")
  80.         self.frame_three = Frame()
  81.         self.frame_three.pack(fill=X)
  82.         self.frame_three.configure(bg="gray92")
  83.         self.frame_four = Frame()
  84.         self.frame_four.pack()
  85.         self.frame_four.configure(bg="gray92")
  86.         # MODELANDO O CONTAINER COM WIDGETS
  87.         # Texto //usuário
  88.         scroll_texto = Scrollbar(self.frame_one)
  89.         scroll_texto.pack(side=RIGHT, fill=Y, pady=5)
  90.         Label(self.frame_one, text="Seu texto: ", fg="black", bg="gray92").pack(side=TOP)
  91.         self.texto = Text(self.frame_one, height=10, width=45, yscrollcommand=scroll_texto.set, wrap=WORD)
  92.         self.texto.bind("<Shift_L>", self.analisar_tudo)
  93.         self.texto.bind("<KeyPress>", self.contar_palavras)
  94.         self.texto.pack(side=RIGHT, pady=10, padx=10)
  95.         scroll_texto.config(command=self.texto.yview)
  96.         # Itens //pronomes, subs, adj e etc...
  97.         scroll_texto_2 = Scrollbar(self.frame_two)
  98.         scroll_texto_2.pack(side=RIGHT, fill=Y, pady=5)
  99.         Label(self.frame_two, text="Itens: ", fg="black", bg="gray92").pack(side=TOP)
  100.         self.itens = Text(self.frame_two, height=10, width=45, yscrollcommand=scroll_texto_2.set, wrap=WORD)
  101.         self.itens.pack(side=RIGHT, pady=10, padx=10)
  102.         scroll_texto_2.config(command=self.texto.yview)
  103.         encontrar = Button(self.frame_three, text="Encontrar", fg="black", bg="gray92", command=self.analisar_tudo)
  104.         encontrar.bind("<Button>", self.avaliar)
  105.         encontrar.pack(pady=4, side=TOP)
  106.         self.indice_classificatorio = Label(self.frame_four, text="Seu índice classificatorio é F")
  107.         self.indice_classificatorio.pack(side=RIGHT)
  108.         self.palavras = Label(self.frame_four, text="Palavras: 0", bg='black', fg='white')
  109.         self.palavras.pack(side=RIGHT, padx=20)
  110.        
  111.     def contar_palavras(self, event):
  112.         texto = self.texto.get(1.0, END)
  113.         texto = texto.split()
  114.         if len(texto) >= 1:
  115.             self.palavras['text'] = "Palavras: %d" % (len(texto))
  116.  
  117.     def exibir_janela(self, event):
  118.         j2 = JAcima()
  119.         j2.title("Cadastro")
  120.         j2.geometry("%dx%d+%d+%d" % (230, 110, ws / 2, hs / 5))
  121.         j2.resizable(False, False)
  122.  
  123.         def destroy():
  124.             j2.destroy()
  125.  
  126.         if not self.janela:
  127.             self.janela = True
  128.         else:
  129.             destroy()
  130.             self.janela = False
  131.  
  132.     def avaliar(self):
  133.         self.pontos = 0
  134.         palavras_contidas = {}
  135.         acessed = []
  136.         print("Checando índice...\n")
  137.         texto = self.texto.get(1.0, END)
  138.         texto = texto.split()
  139.         self.tam_texto = len(texto)
  140.         for palavra in texto:  # CONTAGEM DE PALAVRAS
  141.             if palavra is acessed:
  142.                 pass
  143.             else:
  144.                 quant = texto.count(palavra)
  145.                 palavras_contidas[palavra] = quant
  146.                 acessed.append(palavra)
  147.         for palavra in texto:  # CLASSIFICAÇÃO
  148.             if dicionario.check(palavra):
  149.                 if palavras_contidas[palavra] > 2:
  150.                     print("aumentando...")
  151.                     self.pontos += (len(palavra) / 10 ** 2.7) + 0.0000000000167
  152.                 else:
  153.                     self.pontos += (len(palavra) / 10 ** 2.435) + 0.0000000000167
  154.             else:
  155.                 print("diminuindo...")
  156.                 self.pontos -= (len(palavra) / 10 ** 2.435) + 0.0000000000167
  157.         if self.pontos < 0:
  158.             self.pontos = 0
  159.         print("Pontos: ", self.pontos)
  160.         print("Palavras e quantidade de vezes utilizadas:\n{}".format(palavras_contidas.items()))
  161.         if self.pontos >= 1:
  162.             self.indice_classificatorio['text'] = "Seu indice classificatório é A"
  163.         elif self.pontos > 0.8:
  164.             self.indice_classificatorio['text'] = "Seu indice classificatorio é B"
  165.         elif self.pontos > 0.6:
  166.             self.indice_classificatorio['text'] = "Seu índice classificatorio é C"
  167.         elif self.pontos > 0.4:
  168.             self.indice_classificatorio['text'] = "Seu indice classificatório é D"
  169.         elif self.pontos > 0.2:
  170.             self.indice_classificatorio['text'] = "Seu índice classificatório é E"
  171.         else:
  172.             self.indice_classificatorio['text'] = "Seu índice classificatorio é F"
  173.         # Instaciamento da classe
  174.         # bot = FalaNota(self.pontos)
  175.         # # Contagem de cores (núcleos)
  176.         # n_cpus = multiprocessing.cpu_count()
  177.         # # Instaciando um worker com processos embasado na quantidade de cores
  178.         # c_cores = lambda n_cpus: 2 if n_cpus <= 3 else n_cpus - 2
  179.         # n_cpus = c_cores(n_cpus)
  180.         # # Aplicando worker
  181.         # process_fala = multiprocessing.Process(target=bot.falar())
  182.         # process_fala.daemon = True
  183.         # process_fala.start()
  184.  
  185.     def analisar_pronomes(self, texto):
  186.         texto = texto.replace(',', '')
  187.         texto = texto.split()
  188.         pronomes = ['meu', 'teu', 'seu', 'nosso', 'vosso',
  189.                     'meus', 'teus', 'seus', 'nossos', 'vossos', 'seus',
  190.                     'minha', 'tua', 'sua', 'nossa', 'vossa', 'sua', 'minhas',
  191.                     'tuas', 'suas', 'nossas', 'vossas', 'suas', 'eu', 'tu', 'ele', 'ela',
  192.                     'nós', 'vós', 'eles', 'elas', 'me', 'te', 'se', 'o', 'a', 'lhe', 'nos',
  193.                     'vos', 'se', 'os', 'as', 'lhes', 'mim', 'comigo', 'ti', 'contigo', 'si', 'ele',
  194.                     'consigo', 'nós', 'conosco', 'vós', 'convosco', 'si', 'eles', 'consigo',
  195.                     'este', 'esse', 'qualquer', 'algo', 'cada', 'algum', 'que?', 'quem?', 'qual?', 'onde', 'cujo'
  196.                                                                                                            'cuja',
  197.                     'qual']
  198.  
  199.         pronomes_contidos = []
  200.  
  201.         for pronome in pronomes:
  202.             if pronome in texto:
  203.                 pronomes_contidos.append(pronome)
  204.         else:
  205.             if len(pronomes_contidos) < 1:
  206.                 return ["não há pronomes"]
  207.             else:
  208.                 for pronome in pronomes_contidos:
  209.                     pass
  210.                 else:
  211.                     return pronomes_contidos
  212.  
  213.     def analisar_substantivos(self, texto):
  214.         texto = texto.replace(',', '')
  215.         texto = texto.replace('.', '')
  216.         texto = texto.split()
  217.         substantivos = ['bode', 'boi', 'cão', 'carneiro', 'cavaleiro', 'cavalheiro',
  218.                         'cavalo', 'compadre', 'frade', 'frei', 'genro', 'homem', 'padrasto', 'padre',
  219.                         'pai', 'veado', 'zangado', 'cabra', 'vaca', 'cadela', 'ovelha', 'amazona',
  220.                         'dama', 'égua', 'comadre', 'freira', 'sóror', 'nora', 'mulher', 'madrasta',
  221.                         'madre', 'mãe', 'cerva', 'abelha', 'amigo', 'amiga', 'chapéu', 'forno',
  222.                         'fogo', 'mão', 'mala', 'nariz', 'navio', 'pedra', 'povo', 'rapaz', 'voz',
  223.                         'amigaço', 'amigalhaço', 'amigão', 'animalaço', 'animalão', 'bocarra',
  224.                         'boqueirão', 'bocaça', 'cabeçorra', 'cabeção', 'canzarrão', 'canaz',
  225.                         'chapelão', 'chapeirão', 'copázio', 'coparrão', 'bola', 'madeira'
  226.                                                                                 'criançona', 'cruzeiro', 'dentão',
  227.                         'dentilhão', 'fogáreu', 'fornalha',
  228.                         'colo', 'cruz', 'dente', 'livro', 'jornal', 'homem', 'mulher', 'gato',
  229.                         'gata', 'criança', 'corja', 'alcateia', 'arquipélago', 'banca', 'bando',
  230.                         'cáfila', 'cancioneiro', 'cardume', 'chusma', 'elenco', 'feixe', 'girândola',
  231.                         'manada', 'junta', 'molho', 'ninhada', 'quadrilha', 'ramalhete', 'recua', 'vara',
  232.                         'armento', 'atilho', 'banda', 'cacho', 'caravana', 'choldra', 'constelação',
  233.                         'coro', 'falange', 'fato', 'erota', 'legião', 'matilha', 'multidão', 'plêiade',
  234.                         'romanceiro', 'rebanho', 'réstia', 'súcia', 'iconoteca', 'panapaná',
  235.                         'balão', 'balões', 'canção', 'canções', 'confissão', 'confissões', 'coração',
  236.                         'corações', 'eleição', 'eleições', 'estação', 'estações', 'fração', 'frações',
  237.                         'gavião', 'gaviões', 'limão', 'limões', 'mamão', 'mamões', 'nação', 'nações',
  238.                         'operação', 'operações', 'questão', 'questões', 'tubarão', 'tubarões', 'leão',
  239.                         'leões', 'varão', 'varões', 'guaraná', 'gambá', 'laringe', 'pernoite', 'sabiá',
  240.                         'diabete', 'fênix', 'língua', 'pessoa', 'luz', 'matéria', 'escola', 'chicletes',
  241.                         'chiclete', 'perna', 'homens', 'mulheres', 'baiano', 'Jorge', 'trupe', 'acrobáta',
  242.                         'cidade', 'crianças', 'asfalto', 'ponte', 'rua', 'caminho', 'viaduto', 'Leblon',
  243.                         'testa', 'escola', 'caneta', 'papel', 'casa', 'flor', 'guarda-roupa', 'girassol',
  244.                         'passatempo', 'pombo-correio', 'folha', 'árvore', 'fruta', 'terra', 'terreiro', 'pedregulho',
  245.                         'folhagem', 'florista', 'saci', 'sereia', 'fada', 'fogo', 'honestidade', 'tristeza',
  246.                         'amor', 'beijo', 'felicidade', 'abraço', 'animal', 'país', 'praça', 'mulher', 'biblioteca',
  247.                         'fauna', 'matilha', 'penca', 'batalhão', 'menino', 'menina', 'sampa', 'ianomânis', 'benjor',
  248.                         'garoto', 'garotos', 'garota', 'garotas', 'meninos', 'meninas', 'batata', 'serviçal',
  249.                         'alegria', 'floresta', 'esgoto', 'cocar', 'pluma', 'plumas', 'forte', 'pistola', 'cano',
  250.                         'pé', 'trabalho', 'lugar', 'local', 'mundo', "puta", "prostituta", "nenhum", "nenhuma",
  251.                         "outro", "outra", "outrem", "vagabunda", "vagabundo", "galinha", "cadela", "algemas", "algema",
  252.                         "imagem", "vídeos", "vídeo", "foto", "fotos", "imagens", "hd", "harddisk", "hds", "harddisks",
  253.                         "freezer", "congelador", "geladeira", "baseado", "pano", "tecido", "tela", "monitor",
  254.                         "computador", "notebook", "macbook", "steve", "jobs", "bill", "gates", "windows", "apple",
  255.                         "microsoft", "mac", "linux", "gnu", "unix", "ubuntu", "debian", "redhat", "suse",
  256.                         "sistema operacional", "operating system", "processador", "memória",
  257.                         "cérebro", "jogo", "cliente", "executável", "olho", "púpila", "púpilas", "olhos",
  258.                         "cabelo", "cabelos", "tornozelo", "tornozelos", "dedos", "unhas", "boné", "bonés",
  259.                         "roupa", "roupas", "casaco", "casacos", "camisa", "camisas", "calça", "calças", "meia",
  260.                         "meias", "hora", "ponteiro", "número", "ps4", "xbox one", "playstation 4", "playstation",
  261.                         "sony", "mmo", "rpg", "fps", "tower", "defense", "macaco", "monkey", "baloons", "merda",
  262.                         "bosta", "cooler", "gabinete", "new", "york", "city", "document", "documento", "planta",
  263.                         "plantas", "pasta", "pastas", "monte", "quarto", "sala", "cozinha", "banheiro", "gcc",
  264.                         "codeblocks", "audacity", "photoshop", "adobe", "gimp", "kdenlive", "python", "c++", "c#",
  265.                         "java", "script", "html5", "html", "css", "steam", "origin", "godot", "darwin", "unix",
  266.                         "perl", "c#", "lua", "sol", "minix", "bsd", "kernel", "ibm", "dell", "acer", "apollo",
  267.                         "os", "ubuntu", "beos", "morphos", "elementary", "mint", "amigaos", "hp", "cpu",
  268.                         "memory", "devices", "applications", "application", "driver", "drivers", "disk", "disco",
  269.                         "memoria", "memória", "network", "networking", "rede", "cia", "fbi", "nsa", "reactos",
  270.                         "react", "android", "gentoo", "funtoo", "ios", "blackberry", "posix", "tron", "oberon",
  271.                         "mainframe", "symbian", "hurd", "realtime", "cisco", "petros", "superdos", "freedos",
  272.                         "solaris", "sinclair", "netware", "skynet", "historia", "history", "people", "pessoas",
  273.                         "pessoa", "caminho", "arte", "art", "way", "mundo", "world", "terra", "earth", "information",
  274.                         "informação", "map", "mapa", "family", "família", "government", "governo", "health", "vida",
  275.                         "saúde", "system", "sistema", "computer", "carne", "meat", "ano", "year", "music", "música",
  276.                         "thanks", "person", "pessoa", "reading", "leitura", "method", "método", "data", "dados",
  277.                         "conhecimento", "teoria", "theory", "understanding", "law", "lei", "bird", "pássaro",
  278.                         "passaro", "literatura", "literature", "problem", "problema", "software", "programa",
  279.                         "control", "controle", "knowledge", "força", "poder", "habilidade", "power", "ability",
  280.                         "economics", "economia", "love", "amor", "internet", "television", "televisão", "science",
  281.                         "ciência", "library", "biblioteca", "fact", "fato", "product", "produto", "idea", "ideia",
  282.                         "temperature", "temperatura", "investment", "investimento", "area", "área", "activity",
  283.                         "atividade", "story", "industry", "indústria", "industria", "media", "thing", "mídia",
  284.                         "média", "thing", "coisa", "oven", "forno", "community", "comunidade", "definition",
  285.                         "definição", "safety", "segurança", "quality", "qualidade", "development", "desenvolvimento",
  286.                         "language", "linguagem", "management", "gerenciamento", "player", "jogador", "variety",
  287.                         "variedade", "video", "vídeo", "week", "semana", "semanas", "weeks", "years", "security",
  288.                         "country", "país", "exam", "exame", "movie", "filme", "organization", "organização",
  289.                         "equipment", "equipamento", "physics", "analysis", "análise", "analise", "policy",
  290.                         "política", "series", "séries", "thought", "basis", "base", "namorado", "namorada",
  291.                         "direction", "direção", "direçao", "direcao", "strategy", "estratégia", "estrategia",
  292.                         "technology", "tecnologia", "tecnológico", "army", "exército", "exercito", "camera",
  293.                         "câmera", "freedom", "liberdade", "paper", "papel", "environment", "ambiente", "child",
  294.                         "criança", "crianca", "instance", "instância", "instancia", "month", "months", "mês",
  295.                         "mes", "meses", "truth", "verdade", "marketing", "market", "university", "loja", "lojas",
  296.                         "markets", "universidade", "universidades", "writing", "article", "artigo", "department",
  297.                         "departamento", "difference", "diferença", "goal", "ponto", "gol", "meta", "objetivo",
  298.                         "news", "notícias", "notícia", "noticias", "noticia", "audience", "audiência", "audiencia",
  299.                         "fishing", "pesca", "growth", "crescimento", "income", "renda", "receita", "salario", "salário",
  300.                         "casamento", "união", "uniao", "matrimônio", "matrimonio", "user", "usuário", "usuario",
  301.                         "combination",
  302.                         "combinação", "combinacao", "combinaçao", "failure", "fracasso", "falha", "meaning",
  303.                         "significado",
  304.                         "medicine", "medicina", "philosophy", "teacher", "professor", "aluno", "communication",
  305.                         "comunicação",
  306.                         "comunicaçao", "comunicacao", "night", "noite", "day", "days", "nights", "dias", "dia",
  307.                         "noites",
  308.                         "energy", "energia", "disease", "doença", "chemistry", "nation", "nação", "naçao", "road",
  309.                         "estrada",
  310.                         "rodovia", "role", "soup", "sopa", "adsvertising", "anúncio", "anuncio", "location", "locação",
  311.                         "sucess",
  312.                         "sucesso", "addition", "adição", "soma", "apartment", "apartamento", "education", "educação",
  313.                         "educaçao",
  314.                         "educacao", "moment", "momento", "painting", "pintura", "politics", "politica", "políticas",
  315.                         "politicas",
  316.                         "político", "politico", "attention", "atenção", "atençao", "atencao", "decision", "decisão",
  317.                         "decisao",
  318.                         "event", "evento", "property", "propiedade", "shopping", "student", "estudante", "secundarista",
  319.                         "wood",
  320.                         "madeira", "competition", "competição", "competiçao", "competicao", "entertainment",
  321.                         "entreterimento",
  322.                         "office", "distribution", "distribuição", "distribuiçao", "distribuicao", "population",
  323.                         "população",
  324.                         "president", "presidente", "unit", "unidade", "métrica", "metrica", "category", "categoria",
  325.                         "cigarette",
  326.                         "context", "contexto", "introduction", "introdução", "introduçao", "introducao", "opportunity",
  327.                         "oportunidade",
  328.                         "perfomance", "desempenho", "driver", "motorista", "ônibus", "carro", "onibus", "van", "flight",
  329.                         "vôo",
  330.                         "voo", "comprimento", "lenght", "magazine", "revista", "newspaper", "jornal", "relationship",
  331.                         "relacionamento",
  332.                         "teaching", "ensino", "cell", "celular", "smartphone", "phone", "tellphone", "telphone",
  333.                         "dealer", "traficante",
  334.                         "negociante", "vendedor", "comprador", "comerciante", "member", "membro", "finding", "lake",
  335.                         "lago", "message",
  336.                         "mensagem", "appearance", "aparência", "aparencia", "association", "associação", "assoaciacao",
  337.                         "associaçao",
  338.                         "concept", "conceito", "customer", "cliente", "consumidor", "death", "morte", "discussion",
  339.                         "discussão", "discussao",
  340.                         "housing", "habitação", "habitacao", "habitaçao", "inflation", "inflação", "inflaçao",
  341.                         "inflacao", "insurance", "seguro",
  342.                         "mood", "humor", "woman", "mulher", "feminino", "feminismo", "feminista", "feminazi", "advice",
  343.                         "conselho", "conselhos",
  344.                         "aconselhamento", "acessoria", "blood", "sangue", "effort", "esforço", "expression",
  345.                         "expressão", "importance", "expressao",
  346.                         "importância", "importancia", "opinion", "opinião", "payment", "pagamento", "reality",
  347.                         "realidade", "responsability",
  348.                         "realidade", "situation", "situação", "situacao", "situaçao", "skill", "skills", "statement",
  349.                         "condição", "condicao",
  350.                         "condiçao", "wealth", "riqueza", "aplicação", "aplicações", "depth", "profundidade", "estate",
  351.                         "patrimônio",
  352.                         "patrimonio", "imobiliário", "imobiliario", "foundation", "fundação", "fundacao", "fundaçao",
  353.                         "grandmother", "avó",
  354.                         "avo", "heart", "coração", "coracao", "coraçao", "perspective", "perspectiva", "photo", "foto",
  355.                         "recipe", "recipiente",
  356.                         "studio", "estúdio", "estudio", "topic", "tópico", "topico", "collection", "coleção", "colecao",
  357.                         "coleçao", "depression",
  358.                         "depressão", "depressao", "imagination", "imaginação", "imaginacao", "imaginaçao", "passion",
  359.                         "paixão", "paixao", "percentage",
  360.                         "porcentagem", "resource", "recursos", "fonte", "recurso", "setting", "definições", "ajustes",
  361.                         "ajuste", "ad", "ads",
  362.                         "agency", "agência", "agencia", "college", "colégio", "colegio", "debt", "débito", "debito",
  363.                         "criticism", "criticismo",
  364.                         "connection", "conexão", "conexao", "description", "descrição", "descriçao", "descricao", "ram",
  365.                         "patience", "paciência",
  366.                         "paciencia", "mineswepper", "secretary", "secretária", "secretaria", "solution", "solução",
  367.                         "solucao", "soluçao", "administration",
  368.                         "administrations", "administração", "administrações", "apsect", "aspecto", "altitude",
  369.                         "longitude", "director", "diretor",
  370.                         "personality", "personalidade", "psicologia", "psicoanálise", "usp", "ufp", "urj", "mackenzie",
  371.                         "fam", "reforma"
  372.                         ]
  373.  
  374.         substantivos_pos = 'Chinelos, vaso, descarga. Pia, sabonete. Escova, creme dental, espuma, creme de barbear, pincel, espuma, gilete, cortina, sabonete, água fria, toalha. Creme para cabelo; pente. Cueca, camisa, abotoaduras, calça, meias, sapatos, gravata, paletó. Carteira, níqueis, documentos, caneta, chaves, lenço, relógio, maços de cigarros, caixa de fósforos. Jornal. Mesa, cadeiras, xícara e pires, prato, bule, talheres, guardanapos. Quadros. Pasta, carro. Cigarro, fósforo. Mesa e poltrona, cadeira, cinzeiro, papéis, telefone, agenda, copo com lápis, canetas, blocos de notas, espátula, pastas, caixas de entrada, de saída, vaso com plantas, quadros, papéis, cigarro, fósforo. Bandeja, xícara pequena. Cigarro e fósforo. Papéis, telefone, relatórios, cartas, notas, vales, cheques, memorandos, bilhetes, telefone, papéis. Relógio. Mesa, cavalete, cinzeiros, cadeiras, esboços de anúncios, fotos, cigarro, fósforo, bloco de papel, caneta, projetos de filmes, xícara, cartaz, lápis, cigarro, fósforo, quadro-negro, giz, papel. Mictório, pia, Táxi. Mesa, toalha, cadeiras, copos, pratos, talheres, garrafa, guardanapo, xícara. Maço de cigarros, caixa de fósforos'
  375.         substantivos_pos = substantivos_pos.lower()
  376.         substantivos_pos = substantivos_pos.split()
  377.  
  378.         for substantivo in substantivos_pos:
  379.             if substantivo == 'de':
  380.                 substantivos_pos.remove('de')
  381.             elif substantivo == 'com':
  382.                 substantivos_pos.remove('com')
  383.             elif substantivo == 'e':
  384.                 substantivos_pos.remove('e')
  385.             elif substantivo == 'para':
  386.                 substantivos_pos.remove('para')
  387.             elif substantivo == 'os':
  388.                 substantivos_pos.remove('os')
  389.             else:
  390.                 pass
  391.  
  392.         substantivos_post = [" acre", "alagoas", "amapá", "amazonas", "bahia", "ceará",
  393.                              "distrito federal", "espírito santo", "goiás", "maranhão", "mato grosso",
  394.                              "mato grosso do sul",
  395.                              "minas gerais", "pará", "paraíba", "paraná", "pernambuco", "piauí", "roraima", "rondônia",
  396.                              "rio de janeiro", "rio grande do norte", "rio grande do sul", "santa catarina",
  397.                              "são paulo",
  398.                              "sergipe", "tocantis", "manaus", "salvador", "fortaleza", "brasília", "vitória", "goiânia",
  399.                              "são luís", "são luis", "luiz", "luíz", "luís", "cuiabá", "campo grande", "belo horizonte",
  400.                              "belém", "joão pessoa", "curitiba", "recife", "teresina", "boa vista", "porto velho",
  401.                              "rio de janeiro",
  402.                              "natal", "porto alegre", "florianópolis", "floripá", "floripa", "aracaju", "palmas",
  403.                              "josé", "reni",
  404.                              "vinicius", "lídia", "carolina", "caroline", "carol", "vitor", "lucas", "higor", "junior",
  405.                              "daniel", "bruno", "bruna", "elisa", "lívia", "ana", "vitória", "milena", "ketlyn",
  406.                              "louise",
  407.                              "alisson", "alison", "wanda", "nascimento", "souza", "sousa", "konig", "alves", "gaione",
  408.                              "janoski", "paiva", "luiza", "luíza", "carvalho", "vitória", "santos", "lira", "bonato",
  409.                              "marchioro", "guimarães", "pavan", "alkimim", "alckimim", "alckimin", "dantas", "cruz",
  410.                              "santana", "tafarel", "rafael", "usain", "bolt", "clarice", "natália", "nathaly", "sofia",
  411.                              "sophia", "daniel", "biel", "gabriel", "kellin", "gianluca", "hilton", "joão", "joao",
  412.                              "dalila", "domingos", "silveira", "felipe", "ferreira", "lopes", "martins", "sena",
  413.                              "marcony", "jairo", "guilherme", "munhoz", "conceição", "arthur", "enzo",
  414.                              "karine", "juliana", "katia", "karine", "karinne", "ribeiro", "leandro", "kevin",
  415.                              "lopes", "lopez", "leonardo", "marcos", "matheus", "mateus", "mariane", "marianne",
  416.                              "mariana", "marianna", "anna", "anne", "annie", "frank", "luciana", "menezes",
  417.                              "margo", "mayck", "maycom", "rafael", "portugal", "bernardino", "bernardo",
  418.                              "carboni", "lobato", "soares", "nayane", "naynne", "nayana", "nayanne",
  419.                              "roni", "stefani", "stephanny", "stephanie", "stephani", "stephany", "stefanie",
  420.                              "krombauer", "rosiane", "louvart", "mozart", "thiago", "tiago", "uriel", "silva",
  421.                              "ricardo", "antonio", "yuri", "iuri", "sullivan", "coutinho", "murilo", "danilo",
  422.                              "gentilli", "léo", "leo", "lins", "linz", "ballmer", "fernanda", "nanda", "ruth",
  423.                              "bertoli",
  424.                              "thamiris", "viick", "vick", "curry", "marinho", "machado", "pedro", "paulo", "juan",
  425.                              "marcelo", "marcello", "marcelinho", "marcellinho", "elaine", "zephyrot", "luciane",
  426.                              "medina", "rezende", "percival", "chill", "nation", "pewdiepie", "felix", "félix",
  427.                              "zayn", "one direction", "justin bieber", "50 cent", "snoop dog", "lil wayne",
  428.                              "the chainsmokers", "blackbear", "jailson", "mendes", "bianca", "larissa", "maria",
  429.                              "davi", "joaquim", "emanuel", "catarina", "lavínia", "beatriz", "rebeca", "emanuelly",
  430.                              "amanda", "alice", "agatha", "gabrielly", "otávio", "rodrigo", "fábio", "ian",
  431.                              "murdock", "emanuel", "francisco", "miguel", "bryan", "henrique", "caio", "benjamin",
  432.                              "lucca", "isaac", "cauã", "reymond", "raymond", "samuel", "sam", "winchester", "dean",
  433.                              "winchester", "nicolas", "heitor", "laura", "valentina", "julia", "rafaela", "heloísa",
  434.                              "andrade", "ana clara", "maria clara", "lorena", "isadora", "gabriela", "isabelly",
  435.                              "sarah", "eduarda", "giovana", "giovanna", "letícia", "marina", "joyce", "maju",
  436.                              "trindade", "edson", "cecília", "rebeca", "melissa", "agata", "kewelin", "sérgio",
  437.                              "will", "ludmilla", "ludmila", "ludmylla", "siqueira", "suffi", "cavalaro",
  438.                              "lemos", "flauzino", "alan", "allan", "drake", "chris", "brown", "akon", "britney",
  439.                              "spears", "rihanna", "tupac", "2pac", "marechal", "costa gold", "haikaiss", "ramos",
  440.                              "tony", "senhorita", "senhora", "senhor", "senhorio", "majestade", "princesa",
  441.                              "princípe", "demônio", "demon", "damon", "deus", "jesus", "ser maior", "física",
  442.                              "português", "geografia", "química", "matemática", "biologia", "engenharia",
  443.                              "fisica", "computação", "inglês", "filosofia", "sociologia", "história",
  444.                              "arquitetura", "centripeta", "encéfalo", "desintegrações"
  445.                                                                       "desintegração", "maravilhosa", "maravilhosas",
  446.                              "maravilhoso",
  447.                              "maravilhosos"]
  448.  
  449.         substantivos += substantivos_pos
  450.         substantivos += substantivos_post
  451.         substantivos_contidos = []
  452.  
  453.         for substantivo in substantivos:
  454.             if substantivo in texto:
  455.                 substantivos_contidos.append(substantivo)
  456.         else:
  457.             if len(substantivos_contidos) < 1:
  458.                 return ["não há substantivos"]
  459.             else:
  460.                 for substantivo in substantivos_contidos:
  461.                     pass
  462.                 else:
  463.                     if 'os' in substantivos_contidos:
  464.                         substantivos_contidos.remove('os')
  465.                     return substantivos_contidos
  466.  
  467.     def analisar_artigos(self, texto):
  468.         texto = texto.replace(',', '')
  469.         texto = texto.replace('.', '')
  470.         texto = texto.split()
  471.         artigos = ['o', 'ao', 'do', 'no', 'pelo', 'a', 'à', 'da', 'na', 'pela'
  472.                                                                         'os', 'aos', 'dos', 'nos', 'pelos', 'as', 'às',
  473.                    'das', 'nas', 'pelas',
  474.                    'um', 'uma', 'uns', 'umas']
  475.  
  476.         artigos_contidos = []
  477.  
  478.         for artigo in artigos:
  479.             if artigo in texto:
  480.                 artigos_contidos.append(artigo)
  481.         else:
  482.             if len(artigos_contidos) < 1:
  483.                 return ["não há artigos"]
  484.             else:
  485.                 for artigo in artigos_contidos:
  486.                     pass
  487.                 else:
  488.                     return artigos_contidos
  489.  
  490.     def analisar_preposicoes(self, texto):
  491.         texto = texto.replace(',', '')
  492.         texto = texto.replace('.', '')
  493.         texto = texto.split()
  494.         preposicoes = ['a', 'de', 'em', 'por', 'per']
  495.  
  496.         preposicoes_contidas = []
  497.  
  498.         for preposicao in preposicoes:
  499.             if preposicao in texto:
  500.                 preposicoes_contidas.append(preposicao)
  501.         else:
  502.             if len(preposicoes_contidas) < 1:
  503.                 return ["não há preposições"]
  504.             else:
  505.                 for preposicao in preposicoes_contidas:
  506.                     pass
  507.                 else:
  508.                     return preposicoes_contidas
  509.  
  510.     def analisar_conjuncoes(self, texto):
  511.         texto = texto.replace(',', '')
  512.         texto = texto.replace('.', '')
  513.         texto = texto.split()
  514.         conjuncoes = ["e", "nem", "mas também", "como também", "bem", "como", "mas",
  515.                       "porém", "todavia", "contudo", "entretanto", "no entanto", "ou", "ora;",
  516.                       "quer", "já", "logo", "portanto", "por isso", "assim", "por conseguinte",
  517.                       "que", "porque", "portanto", "pois", "logo", "mesmo quem",
  518.                       "porque", "uma vez que", "sendo que", "visto que", "como", "tamanho que",
  519.                       "tanto que", "tão que", "tal que", "tal", "qual", "do que", "assim como",
  520.                       "mais... que", "menos... que", "conforme", "segundo", "consoante", "ainda que",
  521.                       "se caso", "contanto que", "a menos que", "emora", "se bem que", "embora", "por mais que",
  522.                       "se que", "salvo se", "à medida que", "à proporção que", "quanto mais", "quanto menos",
  523.                       "a fim de que", "para que", "enquanto", "quando", "sempre que", "logo que", "depois que"
  524.                       ]
  525.  
  526.         conjuncoes_contidas = []
  527.  
  528.         for conjuncao in conjuncoes:
  529.             if conjuncao in texto:
  530.                 conjuncoes_contidas.append(conjuncao)
  531.         else:
  532.             if len(conjuncoes_contidas) < 1:
  533.                 return ["não há conjunções"]
  534.             else:
  535.                 for conjuncao in conjuncoes_contidas:
  536.                     pass
  537.                 else:
  538.                     return conjuncoes_contidas
  539.  
  540.     def analisar_adverbios(self, texto):
  541.         texto = texto.replace(',', '')
  542.         texto = texto.replace('.', '')
  543.         texto = texto.split()
  544.         adverbios = ["ainda", "agora", "amanhã", "anteontem", "à tarde", "à noite",
  545.                      "de repente", "de súbito", "em breve", "de vez em quando", "depois", "hoje", "anteontem",
  546.                      "bastante", "muito", "pouco", "menos", "mais", "demasiadamente", "por completo", "apenas",
  547.                      "todo", "em demasia", "em excesso", "abaixo", "acima", "por dentro", "por fora", "por aqui",
  548.                      "por ali", "atrás", "aqui", "lá", "à direita", "à esquerda", "acolá", "adiante", "aí...",
  549.                      "bem", "mal", "depressa", "devagar", "melhor", "pior", "às pressas", "com calma", "lado a lado",
  550.                      "às ocultas", "às claras", "frente a frente", "assim debalde", "sim", "certamente",
  551.                      "efetivamente", "realmente", "de fato", "por certo", "sem dúvida", "possívelmente",
  552.                      "provavelmente",
  553.                      "quiçá", "talvez", "porventura", "acaso", "não", "de jeito nenhum", "de forma alguma",
  554.                      "de modo algum",
  555.                      "deveras", "demais", "de malgrado"]
  556.  
  557.         adverbios_contidos = []
  558.  
  559.         for adverbio in adverbios:
  560.             if adverbio in texto:
  561.                 adverbios_contidos.append(adverbio)
  562.         else:
  563.             if len(adverbios_contidos) < 1:
  564.                 return ["não há advérbios"]
  565.             else:
  566.                 for adverbio in adverbios_contidos:
  567.                     pass
  568.                 else:
  569.                     return adverbios_contidos
  570.  
  571.     def analisar_tudo(self, event="<Return>"):
  572.         self.avaliar()
  573.         texto = self.texto.get(1.0, END)
  574.         texto = str(texto)
  575.         texto = texto.lower()
  576.         tam_texto = len(texto)
  577.         label_line = texto[:10:].title()
  578.         if len(texto) <= 1:
  579.             messagebox.showinfo("Info", "Escreva um texto")
  580.         else:
  581.             pronomes = self.analisar_pronomes(texto)
  582.             substantivos = self.analisar_substantivos(texto)
  583.             artigos = self.analisar_artigos(texto)
  584.             preposicoes = self.analisar_preposicoes(texto)
  585.             conjuncoes = self.analisar_conjuncoes(texto)
  586.             adverbios = self.analisar_adverbios(texto)
  587.             self.itens.delete(1.0, END)
  588.             self.itens.insert(END, "Pronomes: " + ", ".join(pronomes) + "." + "\n")
  589.             self.itens.insert(END, "Substantivos: " + ", ".join(substantivos) + "." + "\n")
  590.             self.itens.insert(END, "Artigos: " + ", ".join(artigos) + "." + "\n")
  591.             self.itens.insert(END, "Preposicoes: " + ", ".join(preposicoes) + "." + "\n")
  592.             self.itens.insert(END, "Conjuncoes: " + ", ".join(conjuncoes) + "." + "\n")
  593.             self.itens.insert(END, "Advérbios: " + ", ".join(adverbios) + "." + "\n")
  594.             self.exibir_janela(event="<Button>")
  595.             fig_size = plt.rcParams["figure.figsize"]
  596.             fig_size[0] = 5
  597.             fig_size[1] = 5
  598.             pontos = self.pontos
  599.             pontos *= 10
  600.             d = lambda pontos: pontos if pontos <= 10 else 10.0
  601.             pontos = d(pontos)
  602.             plt.plot([0, tam_texto], [0, pontos], label=label_line, )  # x e y [] e []
  603.             plt.legend(bbox_to_anchor=(1.05, 0.5))
  604.             plt.ylabel('Pontuação')
  605.             plt.xlabel('Caracteres')
  606.             plt.show()
  607.  
  608.  
  609. raiz = Tk()
  610. j1 = Janela(raiz)
  611.  
  612.  
  613. class JAcima(Toplevel):
  614.     def __init__(self):
  615.         Toplevel.__init__(self)
  616.         self.frame = Frame(self, pady=5)
  617.         self.frame.pack()
  618.         self.frame_t = Frame(self, pady=5)
  619.         self.frame_t.pack()
  620.         self.frame_tw = Frame(self)
  621.         self.frame_tw.pack()
  622.         Label(self.frame, text="Nome: ").pack(side=TOP)
  623.         self.nome = Entry(self.frame)
  624.         self.nome.pack()
  625.         btn = Button(self.frame_t, text="Salvar registro", command=self.cadastrar)
  626.         btn.pack(side=LEFT)
  627.         btn_baixar = Button(self.frame_t, text="Baixar registro", command=self.receber_arquivo)
  628.         btn_baixar.pack(side=LEFT, padx=5)
  629.         btn_cad_anon = Button(self.frame_tw, text="Salvar anonimamente", command=self.cadastrar_anonimamente)
  630.         btn_cad_anon.pack(side=LEFT)
  631.  
  632.     def enviar_arquivo(self, nome):
  633.         filename = 'log%s.txt' % (nome)
  634.         session = ftplib.FTP('ftp.xpg.com.br', 'renix1', 'reni1234')
  635.         file = open(filename, 'rb')
  636.         session.storbinary('STOR ' + filename, file)
  637.         file.close()
  638.         session.quit()
  639.  
  640.     def receber_arquivo(self):
  641.         nome = self.nome.get().title().replace(' ', '')
  642.         if len(nome) < 1:
  643.             messagebox.showwarning("Aviso",
  644.                                    "Se quiser baixar, coloque o nome!\nSe estiver baixando o padrão, descarte essa mensagem.")
  645.         filename = 'log%s.txt' % (nome.replace(' ', ''))
  646.         session = ftplib.FTP("ftp.xpg.com.br")
  647.         session.login("renix1", "reni1234")
  648.         session.retrbinary("RETR " + filename, open(filename, 'wb').write)
  649.         import os, sys
  650.         path = r"%s" % (os.getcwd())
  651.         if os.path.isfile(filename):
  652.             messagebox.showinfo("Info", "Arquivo %s baixado com sucesso!\n" % (filename.replace('.txt', '')))
  653.             os.startfile(path)  # Creio eu que funcione em todos os sistemas operacionais, ;D
  654.             if sys.platform.startswith('win32'):
  655.                 os.system("notepad %s" % (filename))
  656.             elif sys.platform.startswith('linux') or sys.platform.startswith('linux2'):
  657.                 os.system("nano %s" % (filename))  # Abrir com nano é quase certeza que irá abrir. :D
  658.             elif sys.platform.startswith('darwin'):
  659.                 os.system("open -a TextEdit \"%s\"" % (filename))  # Não sei se funciona ou não. Não tenho Mac.
  660.         else:
  661.             messagebox.showwarning("Aviso", "Arquivo não foi baixado com suceesso!\n")
  662.         session.quit()
  663.  
  664.     def cadastrar(self):
  665.         nome = self.nome.get()
  666.         nome = nome.title()
  667.         pontos = j1.pontos
  668.         texto = j1.texto.get(1.0, END)
  669.         filename = 'log%s.txt' % (nome.replace(' ', ''))
  670.         pontos *= 10
  671.         if pontos > 10:
  672.             pontos = 10
  673.         if len(nome) > 0:
  674.             if pontos > 0:
  675.                 messagebox.showinfo("Sucesso", "Cadastro feito com sucesso! Nome: %s, nota: %.2f\n" % (nome, pontos))
  676.                 messagebox.showinfo("Info",
  677.                                     "Faremos o envio deste log para um servidor para melhorarmos nossos serviços futuramente!\n Agradecemos a compreensão.")
  678.                 with open(filename, "a+") as log:
  679.                     log.write("Nome: " + nome + ", nota: " + str(pontos) + "\n")
  680.                     log.write("Texto: " + str(texto) + "\n")
  681.                 self.enviar_arquivo(nome.replace(' ', ''))
  682.             else:
  683.                 messagebox.showinfo("Sem nota", "Você não tem nota suficiente para isso")
  684.         else:
  685.             messagebox.showwarning("Aviso", "Se quiser cadastrar, coloque o nome!")
  686.  
  687.     def cadastrar_anonimamente(self):
  688.         texto = j1.texto.get(1.0, END)
  689.         pontos = j1.pontos
  690.         pontos *= 10
  691.         if pontos > 10:
  692.             pontos = 10
  693.         else:
  694.             if pontos > 0:
  695.                 messagebox.showinfo("Sucesso", "Cadastro anônimo feito com sucesso!\n")
  696.                 self.enviar_arquivo(nome="")
  697.             else:
  698.                 messagebox.showwarning("Sem nota", "Você não tem nota suficiente para isso")
  699.  
  700. try:
  701.     if __name__ == "__main__":
  702.         ws = raiz.winfo_screenwidth()
  703.         hs = raiz.winfo_screenheight()
  704.         raiz.geometry("%dx%d" % (400, 470))
  705.         raiz.resizable(False, False)
  706.         raiz.title("Pesquisa contextual")
  707.         raiz.mainloop()
  708. except KeyboardInterrupt:
  709.     print("Saindo do script...\n")
  710.     quit()
Advertisement
Add Comment
Please, Sign In to add comment