Substituição de artigos

Retomei o Francês por mim mesma hoje. Como o básico são os artigos definidos e a melhor prática é memorizar o substantivo sempre com o artigo correto (às vezes, até com o gênero no caso de l' no Francês e no Italiano). Não tendo nada o que fazer, escrevi um script que realiza a substituição dos artigos em uma página html (URLs dados em um arquivo) por sublinhados, p/ que o texto possa ser impresso e as lacunas completadas. #!/usr/bin/python #coding:utf-8 # # **PT_BR*********************************************************************** # Dado um arquivo com endereços de páginas da Internet e uma opção que indica o # idioma, o script substitui todos os artigos determinados por sublinhados, # para que o texto possa ser impresso como atividade extra no estudo dos # substantivos femininos e masculinos. # Data: 30/06/2010 # ****************************************************************************** # # **EN************************************************************************* # Given a file with URLs and an option indicating the target language # this script replaces determinate articles in that language in the specified # pages with underscores so the text can be printed as an extra exercise for # the study of feminine and masculine nouns. # Date: 06/30/2010 # ****************************************************************************** # # # Artigos definidos & suas expressões regulares # # pt,pt_BR : o, a, os, as # # fr: la, le, las, les, l' # # it: la, lo, le, l', il, i, gli # # de: der, das, die # # es: el, los, la, las # LANG = { 'de': r"\b(?:[dD][eE][rR]|[dD][aA][sS]|[dD][iI][eE])\b", 'es': r"\b(?:[eE]l|[lL][oO][sS]|[lL][aA][sS]?)\b", 'fr': r"(?:\b[lL][aA][sS]?\b|\b[lL][eE][sS]?\b|[lL]')", 'it': r"\b(?:[lL](?:[aA]|[oO]|[eE])|[lL]'|[iI][lL]?|[gG][lL][iI])\b", 'pt': r"\b[oOaA][sS]?\b" } # Elements to be removed from the page: # links # videos LINK_REGEX = r"<a href=\".+\">(.+)</a>" REMOVE_REGEX = [r"<object .+>", r"<param .+>", r"<embed .+>"] lang_codes = '' for code in LANG.keys(): lang_codes += code + ("|","")[LANG.keys().index(code) == len(LANG.keys()) - 1] from optparse import OptionParser parser = OptionParser(usage="%prog: -f FILE -l " + lang_codes) parser.add_option("-l", "--language", dest="language", help="select target language", metavar="TARGET_LANG") parser.add_option("-f", "--file", dest="filename", help="select FILE with URL addresses to fetch", metavar="FILE") (options, args) = parser.parse_args() if options.language is None or options.filename is None or options.language not in LANG.keys(): parser.print_help() else: url_list = list() with open(options.filename, 'r') as url_file: url_list = map(lambda element: element.replace('\n', ''), url_file.readlines()) import urllib2 exercise_counter = 0 for url in url_list: page = urllib2.urlopen(url).read() # Remove undesired elements from page new_page = urllib2.re.sub(LINK_REGEX, lambda m: "%s" % m.group(1),page) for und in REMOVE_REGEX: new_page = urllib2.re.sub(und, "", new_page) new_page = urllib2.re.sub(LANG[options.language], "____", new_page) # Writing page to disk with open('exercicio_' + options.language + "_" + str(exercise_counter), 'w+') as out_file: out_file.write(new_page) exercise_counter += 1

Mas testando com uma página do Le Figaro, palavras como rôle acabam ficando como rô___. Mesmo com os boundaries. Para os 'usuários finais' e gente sem Python no PC com o OpenOffice/BROffice, basta fazer o seguinte:
  • Cole o texto
  • Clique em Editar > Localizar e Substituir
  • Clique em Mais opções
  • Marque Expressões regulares
  • Na caixa Procurar por digite \<[Ll][eE][sS]?\>|\<[Ll][aA][sS]?\>|[Ll]' e emSubstituir por, ____

Atualizações esporádicas - 3

Na minha constante preguiça de trocar o papel de parede do GNOME escrevi um script Python p/ fazer isso. A idéia original era colocar a entrada abaixo no cron, mas não deu certo (estou tentando descobrir o porquê):


* * */30 * * /usr/bin/python /home/isis/bin/troca_wallpaper.py


Por enquanto coloquei na inicialização da sessão (Sistema > Sistema > Sessões). Se eu usar o módulo gconf, recebo um e-mail no mailx avisando sobre Gconf, TCP/IP e Orbit. Vai demorar, pelo visto...



#!/usr/bin/python #coding:utf-8 import random import gconf import os # Diretórios que contêm as imagens a serem usadas. # Use caminhos absolutos. DIRETORIOS = ["/home/isis/Documents/Imagens/Wallpapers"] def get_img_abs(caminho, tupla_imagens): local_img = list() for img in tupla_imagens: local_img.append(caminho + '/' + img) return local_img lista_imagens = list() for entrada in DIRETORIOS: lista_imagens.extend(get_img_abs(entrada, os.listdir(entrada))) imagem_escolhida = random.choice(lista_imagens) os.system("/usr/bin/gconftool-2 --type string --set /desktop/gnome/background/picture_filename " + imagem_escolhida) #gconf.client_get_default().set_string('/desktop/gnome/background/picture_filename', imagem_escolhida)


* * *

Devido à incrível chatice de usar o sistema em pt_BR, mudei-o p/ Francês. Estou curtindo cada minuto: google.fr.

* * *

Após conversar com o coordenador da equipe de tradução do OpenSuse resolvi fazer algumas alterações na Wiki da equipe. P/ isso baixei o txt2tags e comecei a destruição do conteúdo atual da Wiki. Vamos incorporar links do LDP, do GNOME (devido à padronização de tradução que eles adotam) e explicar pequenas coisas como tempos verbais, já que muita gente traduz frases do modo errado.

Sim, isso envolve uma segunda revisão de todos os arquivos, principalmente no que diz respeito à acentuação e uso do hífen (nova ortografia).

Livro - impressões

O nome completo é "Alla Ricerca della Via Più Breve - Un'Avventura Matematica". É. Grande e envolve matemática. Li em italiano porque foi o que eu consegui arranjar. O curioso é que não é a matemática de segundo grau de colégio, mas tópicos de Ciência da Computação apresentados dentro de uma narrativa.

Não existe uma trama central do tipo que você não pode perder o nome de um personagem ou deixar de associá-lo a determinadas ações, como acontece em livros como Harry Potter e Senhor dos Aneis. A história é bem comum (beirando os filmes clássicos de computadores que falam que passam no canal TCM): uma menina de 15 anos, que mora na Alemanha com a família, ganha um computador do pai e nesse computador existe um programa à la Hal 9000 que conversa com a guria, explicando conceitos de grafos e teoria de complexidade de algoritmos.

Sim, são apresentados conceitos dos tópicos (destacados ao longo do livro: grafo conexo, grafo dirigido, circuito, peso em arestas); algoritmos, como o de Dijkstra, Floyd-Warshall; máquina de Turing; teste de Turing; complexidade computacional (Big-Oh notation); árvores; demonstração por contradição e outros. P/ quem não tem a menor ideia do que se vê na faculdade é um ótimo começo, mas é um pouco chato p/ quem já teve que passar pela matéria 3 vezes.