Itens compartilhados de Juliano

Mostrando postagens com marcador falta de tempo. Mostrar todas as postagens
Mostrando postagens com marcador falta de tempo. Mostrar todas as postagens

domingo, 13 de setembro de 2009

Python × Ruby

Esses dias eu não tenho escrito por causa dos estudos. (Novidade!!!) :) Um novo semestre se iniciou, novas pessoas chegaram, novas responsabilidades apareceram, e até uma nova sala a gente ganhou.

Durante todo o mês passado, o nosso prédio passou por uma reforma na qual só não quebraram as paredes. O resto todo foi posto abaixo e feito de novo. Incluindo todas as janelas. Agora, no prédio novo, resolveram reformar também o lay-out das salas de estudo da pós e, nós, que tínhamos nosso laboratório de linguística computacional exclusivo, perdemo-lo para dar espaço aos sem sala que havia às pencas. Agora, nós, da linguística computacional estamos junto com o pessoal da fonologia, o pessoal de linguística histórica está com os da sintaxe e semântica, e os da fonética estão com alguém mais que ainda não sei. Nosso laboratório, que antes tinha 4 ou 5 pessoas, virou uma sala com 15! Mudou bastante. Teremos de nos adaptar...








Além disso, resolvi aproveitar e partir para o estudo de Ruby, uma outra lingua de programação que é de uma forma geral parecida com o Python, mas é mais divertida. Eu já tinha interesse de aprender um pouco, mas até a versão 1.8 a língua não apresentava um suporte robusto a unicode, e isso para mim é essencial. Agora, na versão 1.9, esse suporte apareceu e parece que ficou muito bom! Além disso, eu estava com a impressão de que Ruby estava rodando mais rápido que Python, até que agora há pouco eu li um artigo falando sobre isso. Um cara resolveu fazer um teste e gerar 35 números da sequência de Fibonacci e cronometrar o tempo de execução do programa. E não é que o Ruby ganhou de lavada? Python com 35.438s e Ruby com 13.691s! 2 vezes e meia de diferença!

Taí abaixo o resultado do embate:

$ time python fib.py
n=0 => 0
n=1 => 1
n=2 => 1
n=3 => 2
n=4 => 3
n=5 => 5
n=6 => 8
n=7 => 13
n=8 => 21
n=9 => 34
n=10 => 55
n=11 => 89
n=12 => 144
n=13 => 233
n=14 => 377
n=15 => 610
n=16 => 987
n=17 => 1597
n=18 => 2584
n=19 => 4181
n=20 => 6765
n=21 => 10946
n=22 => 17711
n=23 => 28657
n=24 => 46368
n=25 => 75025
n=26 => 121393
n=27 => 196418
n=28 => 317811
n=29 => 514229
n=30 => 832040
n=31 => 1346269
n=32 => 2178309
n=33 => 3524578
n=34 => 5702887
n=35 => 9227465

real 0m35.438s <=
user 0m34.650s
sys 0m0.044s

$ time ruby fib.rb
n=0 => 0
n=1 => 1
n=2 => 1
n=3 => 2
n=4 => 3
n=5 => 5
n=6 => 8
n=7 => 13
n=8 => 21
n=9 => 34
n=10 => 55
n=11 => 89
n=12 => 144
n=13 => 233
n=14 => 377
n=15 => 610
n=16 => 987
n=17 => 1597
n=18 => 2584
n=19 => 4181
n=20 => 6765
n=21 => 10946
n=22 => 17711
n=23 => 28657
n=24 => 46368
n=25 => 75025
n=26 => 121393
n=27 => 196418
n=28 => 317811
n=29 => 514229
n=30 => 832040
n=31 => 1346269
n=32 => 2178309
n=33 => 3524578
n=34 => 5702887
n=35 => 9227465

real 0m13.691s <=
user 0m13.305s
sys 0m0.028s

Os programas podem ser encontrados no blog Zen and the Art of Programming.

segunda-feira, 12 de janeiro de 2009

No meu aniversário, o presente é pra você, leitor!

Pois é... Há séculos não escrevo nada por aqui... Já podem ter adivinhado que é falta de tempo...

(Acabei de ser interropido por um telefonema surpresa de "parabéns" da Brisa e do Gustavo, outros brasileiros "sofredores" que estão estudando em Daegu (outra cidade mais ao Sul do país). Obrigado aí gente, viu?^^ Vocês alegraram um pouquinho mais meu diazinho!^^)

Voltando ao assunto, estamos no meio de um grande projeto no meu laboratório e somos "guiados" por meu orientador oriental desorientado que não faz a mínima idéia nem de como começar o projeto em que ele se enfiou e só fica perguntando pra gente como é que as coisas estão andando, se já terminamos, e o que que falta... Não importa como seja feito, já que ele não faz idéia de como, mas tem que ser feito de alguma forma. (Entre parênteses devo dizer que só agora depois de duas "idéias", três agora, é que percebi que escrevi as dita cujas com acento. Pelo jeito vai demorar horrores pra me acostumar com essa nova ortografia...)

Além de não saber muito, ainda fica dando pitaco na forma como estamos fazendo. Esses dias, até meio que brigou com o Hyeonjo (nosso novo membro do laboratório) porque ele fez um site para nosso laboratório e o professor achou ruim porque não é bonitinho... Não importa o conteúdo, não importa o ato em si de fazer algo para facilitar nossa comunicação interna... como o estilo do site é "internacional" e não "coreano" (que é deveras complicado e feio na minha opinião), ele achou ruim e xingou o coitado do nosso amigo.

A propósito, esse Hyeonjo merece um capítulo à parte.

Ele é meu hyeong (형/兄), isto é, meu "irmão mais velho" (isso porque todas as relações interpessoais são baseadas em relações familiares), o que é uma raridade, já que eu quase sempre sou o mais velho e todo mundo me chama de hyeong. Isso já é legal pra mim^^ Ele acabou de defender seu doutorado no fim do ano passado e agora está dando aulas na graduação e participando do nosso laboratório como "consultor de assuntos aleatórios". Como ele participou na construção do "Dicionário Eletrônico Sejong da língua coreana", um projeto do governo que durou 10 anos e mobilizou diversas universidades, ele aprendeu a programar muito bem e é um ótimo lingüista (olha a trema aí...) no sentido amplo e estrito da palavra. Já viajou bastante e fala muitas línguas (russo, uzbeque, tcheco...), programa muito bem em Java, Python, Perl, Awk e etcéteras, e, ainda por cima, deu de querer aprender português comigo! E não é que ele está indo de vento em popa?! É um ótimo aluno! Eu falo meia palavra e ele aprende duas! (Que inveja!)

Bem, voltando ao assunto, ele é que está fazendo as vezes de orientador para nós, já que o orientador oficial é mais um desorientador... E já aprendi muita coisa com ele. Mesmo ele não sendo aquele que ensina tintim por tintim; ele é aquele que mostra o caminho e manda você caminhar com as próprias pernas, mas está sempre do lado pra explicar por onde eu tenho que pisar pra não escorregar e cair... O orientador oficial, no entanto, é daquele que fica sentado na cadeirinha macia dele e fala: "Ó! Tá vendo aquela trilhazinha ali no meio da floresta? É fácil! É só entrar lá e atravessar a floresta até chegar do outro lado." Mas não menciona nem quer saber dos rios e montanhas que tem pelo meio do caminho, ou se a gente vai cair na boca do jacaré ou no meio das piranhas... Na cabeça dele, é só atravessar a floresta, o que tiver lá no meio é problema nosso... (Que imagem mais ridícula... mas acho que dá pra entender mais ou menos o que quero dizer, né?) Se não fosse pelo Hyeonjo, a gente estaria só batendo cabeça até agora.

Além disso tudo, agora tenho um curso de Java aos sábados. Muito """divertido""" (ironia, viu?). Sair de casa às 9 da manhã com o dia, que começa às 8, ainda raiando, debaixo de 10 graus negativos, começar a aula às 10 da manhã, ficar ouvindo a professora falando blá-blá-blá durante 3 horas, sair pra almoçar, voltar e ouvir mais 3 horas de blá-blá-blá e voltar pra casa à noite, já que às 5:30 já tá escurecendo. Não que não seja de todo interessante, mas o fato é que é muita informação pra ser assimilada em 6 horas de aula... Podia muito bem ser duas vezes por semana, ainda mais que ninguém tem aula (teoricamente estamos de férias), com mais tempo de digestão de conhecimento... seria menos chato e menos cansativo. Mas não... fazer o quê, né? Güenta, coração!

Mas não posso ficar só reclamando. Não estou de todo ruim. Tenho meus programinhas pra fazer, faço, se não sei, corro atrás e vou me virando. Já aprendi muita coisa por aqui desde que cheguei. E (quase) tudo que aprendi foi na base do sevirômetro. Daqui pra frente agora, é pensar na minha tese de mestrado e de como vou fazer pra escrever isso. Só não posso contar muito com o meu desorientador... mais uma coisa que vou ter que me virar...

Além disso tudo, tem um monte de coisas que eu gostaria de escrever aqui no blogue, principalmente sobre o dia-a-dia de um brasileiro perdido na Coreia (agora sem acento de acordo com as novas regras). As coisas boas, as coisas estranhas, as coisas erradas, as coisas cômicas... Tem um monte de coisinhas que seriam divertidas... mas, só vou escrever se receber fidebeque (óia! um neologismo!) de vocês que estão aí do outro lado da tela! ok?

==Cantinho Cultural===
Só pra constar, devo dizer que meu café da manhã hoje foi especial.
Como é de praxe na manhã do aniversário, o aniversariante deve tomar miyeokkuk (미역국), uma sopa de alga para comemorar mais um ano de vida. E a frase "hoje comi miyeokkuk" é equivalente a "hoje é o meu aniversário".^^
===

Bem, um abraço pra quem fica.

Juliano

segunda-feira, 3 de novembro de 2008

Kimchi com Café de volta com a programação normal

Pois bem... Tem muita gente que está me cobrando (e já faz tempo) por que é que eu não estou mais escrevendo no blog. E alguns destes já até deram a resposta e acertaram: eu estou hiper-ocupado.

Desde que escrevi pela última vez, minha vida acadêmica se tornou um inferno na terra quanto a "tempo". Nosso professor inventou de fazer um grupo de estudos, juntamente com o professor de semântica, para criar um sistema baseado no TARSQI (Temporal Awareness and Reasoning Systems for Question Interpretation; em tradução mais do que livre: Sistemas de Reconhecimento e Raciocínio Temporal para Interpretação de Perguntas) dos EUA. Esse sistema TARSQI, pra encurtar a história, é um sistema de programas que lêem textos e conseguem encontrar, marcar e relacionar (quase) toda a informação temporal contida nos textos e ajudar a formar um sistema maior de perguntas e respostas automatizado. (Se não fizer muito sentido, não tem problema...)

Com isso, nós nos reunimos uma vez por semana para discutir nosso progresso e marcar metas para a próxima reunião da semana vindoura. A mim me coube a reconstrução e o retrofite (gambiarra) do programa que lida com a língua inglesa, para fazer com que ele funcione com a língua coreana. E não preciso dizer que não quer funcionar direito, né? Mas, mesmo assim, vamos tentando. Um dia sai.

Além disso, tenho minha aula de "Línguas Altaicas", matéria que não tem nada a ver com meu campo de estudo, já que sou de lingüística computacional, mas que me atrai por ser uma mistura de lingüística histórica, sócio-lingüística e fala de línguas de verdade. É bem interessante e é toda ministrada em coreano 100%. Isso é o que me atrapalha. Como é em coreano, eu tenho que dedicar mais tempo pelo problema da língua em si. Ainda mais quando tenho que escrever algum trabalho ou coisa parecida. Aí é a cobra fumando.

No mais, não tenho mais nenhuma novidade. Toda minha vida atualmente só gira em torno do TARSQI e das línguas altaicas. De domingo a domingo, quase 24 horas por dia. O restinho que sobra, é hora de dormir um pouco. Quando dá...

Um abraço, e desejem-me sorte...

terça-feira, 8 de julho de 2008

Ah, só a quem interessar possa:

Nem sei se vocês têm acompanhado minha saga mestradística por aqui pelas bandas das Coréia, mas lembram-se de quando eu comecei a estudar Python, comecei a fazer aqueles programinhas, estava arrancando meus cabelos para pensar em algum projeto... Pois é. Meus problemas acabaram!!! Com o Super-Auto-Programeitor Tabajara... ops! Canal errado! (Momento Idiocracy...) Voltando: meus problemas já se findaram graças a um belo trabalho de equipe que, pelo que percebi, ocorreu pela primeira vez em nossa "lindo" Laboratório de Lingüística (eita palavrinha difícil de escrever... eu sempre digito isso umas três vezes por causa dos acentos que saem nos lugares errados...) Computacional da Universidade Nacional de Seul, Coréia. Eu e Munhyong, meu colega de laboratório, resolvemos partir para o matadouro juntos. Munhyong estudou na Universidade de Línguas Estrangeiras da Coréia (韓國外國語大學校) no departamento de Engenharia (?) (não entendi isso até hoje... engenharia numa faculdade de línguas, mas tudo bem...) e sabe programar muito bem em C e adjacências. O problema é que C, para o que precisamos fazer é um pouco "muito complicado de mais", e geralmente fazemos uso de outras línguas de programação, principalmente Perl. Passamos o semestre passado fazendo programinhas em Perl para aprender (no estilo "sevirômetro") e acabamos manejando mais ou menos essa língua de programação meio esquisita mas muito útil. Aí vieram as férias, depois outras aulas e outros afazeres e agora, no final do semestre, quando ele foi fazer seus programinhas em Perl, descobriu que já tinha esquecido quase tudo.
No meu caso, descobri um "kit de ferramentas" para trabalhar com programação de processamento de línguas naturais chamado NLTK que tem por base a linguagem de programação chamada Python. Pra mim que já vivia no mundo GNU/Linux por mais de 3 anos, além de uns 5 anos de curioso antes disso, o nome Python não era em nada estranho. Além disso, eu já tinha até me aventurado a tentar fazer um programinha em Python pouco antes de entrar no mestrado, e resolvi unir o útil ao agradável: usar o NLTK e, de quebra, aprender mais uma lingüinha de programação. Vocês devem se lembrar de algum post anterior onde devo ter mencionado esse fato. De lá pra cá, mergulhei no Python e fui aprendendo na marra a usar essa língua muito estranha no começo (principalmente pra quem usava Perl) e absurdamente útil agora! Simplesmente não consigo me imaginar sem usar Python agora. Depois de pegar o jeito da coisa (e olha que eu nem comecei a arranhar a superfície ainda...), tudo fica bem mais fácil, prático e útil em uma bordoada só.
Voltando ao assunto do trabalho... Quando estava sofrendo em busca do cálice sagrado, a respeito do que poderia fazer como projeto final do curso de Lingüística Computacional 2, acabei comentando com o Munhyong e ele convidou-me a fazer o projeto com ele, já que ele tinha uma idéia meio Frankenstein de unir dois projetos que a gente havia estudado durante o curso. Pus-me então a ajudá-lo, seguindo suas instruções e fazendo meus programinhas. Não obstante o fato de que esforçamo-nos deveras, a primeira idéia acabou não dando muito certo. Sem perder as estribeiras, Munhyong acabou frankensteiniando uma outra idéia parecida com um corpus (Graças à Wikipédia, temos que: Corpus lingüístico é um corpo de textos escritos ou falados numa língua disponível para análise. O estudo de corpora (corpora é o plural de corpus) apresenta muitas vantagens. Em vez de consultar nossas intuições, ou de ‘extrair’ informações dos falantes, penosamente, uma a uma, podemos examinar um vasto material que foi produzido espontaneamente na fala ou na escrita das pessoas, e portanto podemos fazer observações precisas sobre o real comportamento lingüístico de gente real. Portanto os corpora podem nos proporcionar informações altamente confiáveis e isentas de opiniões e de julgamentos prévios, sobre os fatos de uma língua. O uso de corpus (plural corpora) está associado à Linguística de Corpus.) de um projeto sobre língua coreana. Resolvemos então construir, baseado em um projeto que acabou de ser feito por outro aluno do nosso laboratório (aquele que sumiu), um programa para a extração de palavras semelhantes baseada na relação entre as funções sintáticas e as palavras em vista. Com isso, construímos pares de palavras ligadas por meio de suas relações sintáticas de um corpus com cerca de 10.000.000 de palavras. Depois por meio desses pares, pusemo-nos a calcular o nível de similaridade entre essas palavras. O resultado final foi como o projeto anterior, relativamente baixo, isto é, as palavras encontradas não são tão similares quanto se esparava. Aí é que entra o "tcham" do nosso projeto, a língua coreana possui um alto grau de homófonos/homógrafos, por exemplo, bae, em coreano, pode significar "barco/navio", "barriga", "pêra" e "vezes (formador de numerais multiplicativos)". No primeiro experimento, todos esses significados se mostraram presentes em um só grupo, o que não traz bom resultado. Em suma, o programa dizia que barco é similar a pêssego que é similar a adição... o que não é verdade. Isso por causa da homofonografia (acabei de inventar) da palavra bae. Mudamos então o corpus para que nele constasse qual o significado das palavras homófonas e rodamos o program novamente. O resultado foi sensacional! Agora o programa diz que barco, automóvel, navio, cavalo, bicicleta, veículo, etc são equivalentes. Isso qualquer criança pode ver que é bem melhor que o resultado anterior. Todas as palavras acima têm em comum o fato de serem meios de transporte. O mesmo se passou com os sentidos de barriga e pêra. Exultamo-nos!
O interessante é que quando apresentamos essa idéia em sala de aula para o professor e os outros alunos do nosso curso, o professor se irritou com a gente e quase gritando disse: "Pra que fazer isso? Vocês não sabem que isso já foi feito? Vocês não sabem que o resultado não foi muito satisfatório em coreano? Vocês têm a pretensão de dizer que dá pra melhorar isso de alguma forma???" Continuando por uns 5 minutos e durante nossa apresentação com comentários "bem construtivos e apoiadores"... Depois disso, descobrimos que ele havia inscrito esse trabalho como trabalho em conjunto dele com o menino que sumiu (nessa época ele ainda não tinha sumido) para apresentar em uma conferência internacional sobre lingüística computacional. Aí deu pra entender a reação dele... Propusemo-nos a melhorar um trabalho que, sem que soubéssemos, ele iria apresentar na conferência. Mas e daí? Problema dele! Se ele se interessasse um pouco mais sobre a gente, isso não teria acontecido... Ele teria sabido disso antes e não teria ficado todo nervosinho na frente de todo mundo.
Bem, pra encurtar a história, acabou que entregamos o trabalho pra ele um pouco atrasados, tipo mais que uma semana de atraso. Muito disso por causa do tamanho dos corpora (plural de corpus) que demoravam por volta de 15 horas pra rodar e dar resultado. E quando víamos os resulatdos, tínhamos que modificar algumas variáveis pra ver se o resultado melhorava ou não... Isso tomou muito tempo... Eu sei que, no final das contas, depois de mais ou menos um mês de trabalho de cão, varando noite, dormindo no laboratório (quando dava tempo), voltando pra casa só pra tomar banho, e morrendo um dia inteiro na cama quando dava tempo, mandamos o trabalho pra ele por e-mail. Dois dias depois nos chamou em sua sala. Fomos meio com o rabo entre as pernas. Quando abrimos a porta, ele estava que era só sorrisos! Ele adorou nosso resultado, claro que nem passou pela sua cabeça de pedir desculpas o qqr coisa do gênero, mas resolveu aumentar nossa nota (que ele já tinha dado antes de ver o trabalho porque tínhamos demorado e ele tinha que entregar por causa do calendário). Fechamos o semestre com A+. Que beleza! Até que valeu todo o trabalho de doido que tivemos. E a satisfação de ver nosso projetinho dar seus frutos... e graças aos MEUS programas em Python! =) Senti-me super satisfeito!
Pois é, o Munhyon entrou com as idéias, eu entrei com a programação (que me ensinou pra caramba!!!), e ambos entramos com a redação do "paper" (não é papér de mineiro, tá? é pêiper de americano...). Foi um trabalho que se tivéssemos feito sozinhos, não teríamos passado de B, mas juntando nossas forças e idéias, acabamos tirando A+. Foi um senhor trabalho de equipe meu e do Munhyong, ficamos muito contentes, e nos aproximamos bastante. Antes éramos apenas colegas de laboratório, agora somos amigos. Finalmente! Depois de um ano... Brasileiro fala que japonês é difícil de fazer amizade... Vai tentar com coreano, vai! Êita!
Um abraço pro 6.
Inté.

sábado, 17 de maio de 2008

Monty Python

Quando era criança e ouvi falar pela primeira vez de Monty Python, nem sabia direito o que era "cálice sagrado" ou quem eram mesmo eles... Sabia que era engraçado e acabava vendo os filmes sem muito entender. O negócio é que nunca imaginei que alguém em algum outro lugar do planeta também assistia e gostava tanto que resolveu botar o nome de Python numa linguagem de programação que ele resolveu inventar. Quando ele inventou ou quando eu assistia Monty Python sem muito entender, nunca imaginávamos que um dia *eu* estaria estudando essa língua e quebrando minha cabeça pra descobrir alguma coisa interessante que eu pudesse fazer com ela pra minha aula de lingüística computacional... Ai, ai, ai... A teoria do caos (ou efeito borboleta), mesclada às leis de Murphy são uma coisa danada de estranha. (E eu tô cansado, o verão está começando a aparecer. Vai ser um deus-nos-acuda o mês que vem, e ainda por cima, debaixo de 35 graus...)

Releituras 2½

Bem, como vocês já perceberam, o tempo foi bem escasso durante esta semana. Mal tive tempo de checar os e-mails, quanto mais pensar em escrever no blog ou mesmo no twitter!!!
O fim do semestre se aproxima e com ele todos os trabalhos, e outros tipos de avaliações... Para terça, tenho que escrever um "review" a respeito de dois artigos sobre lingüística histórica, preparar um relatório sobre a "grande mudança vocálica" (não sei se é esse o nome em português), que é quando as palavras do inglês passaram a ser pronunciadas de forma estranha: cake era "ka-ke" até um dia que eles resolveram falar "keik"; além disso, tenho que escrever um paper (um artigo científico, praticamente pronto para publicação) sobre alguma coisa de lingüística computacional até o dia 11 do mês que vem, e eu nem sei o que fazer. Sei lá... Como diz o Chico, "a gente vai levando, a gente vai levando, a gente vai levando"...
Quanto ao título do post, aproveitando que a últimas publicações foram a respeito de releituras musicais e etcs, olha isso que eu achei:





Abraço e fui.

Pesquisar em blogues de brasileiros na Coreia

Resultado da pesquisa