Itens compartilhados de Juliano

Mostrando postagens com marcador noites em claro. Mostrar todas as postagens
Mostrando postagens com marcador noites em claro. Mostrar todas as postagens

quinta-feira, 22 de janeiro de 2009

R

Gente, começamos um grupo de estudos na semana passada a respeito de estatística ligada aos estudos linguísticos. Ninguém menos que o Hyeonjo (aquele cara de quem comentei em post esses dias) está nos guiando pelos árduos caminhos da estatística. Mas até que não é tão árduo assim já que estamos usando um programa chamado R. É muito bom! Quem mexe com estatística tem que conhecer isso! Que SPSS que nada, R é o melhor!

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é.

segunda-feira, 23 de junho de 2008

14 dias sem notícias...

Essas duas últimas semanas foram o ó do borogodó... Pra não falar coisa bem pior... Mas, no fim, tudo se resolve. A gente aí no Brasil costuma dizer q brasileiro deixa tudo pra última hora e tal, mas aqui é o mesmo, ou até pior. A diferença é q, de uma forma geral, as coisas acabam funcionando. Principalmente nas questões burocráticas. Mas, no dia-a-dia, é demais. Aqui as pessoas primam a velocidade, a qualidade ficando em segundo plano. Um trabalho q deveria ser feito por um grupo de várias pessoas, em um período de alguns meses, normalmente é feito por uma ou duas pessoas durante uma semana ou duas. Além disso, ninguém discute. Só se jogam cegamente a fazer o q tem q ser feito, sem pensar bem o q é ou como poderia ser feito de forma mais eficiente. Não há discussões (no sentido positivo). Há o problema que há de ser resolvido. Como? Problema seu! Nesse estilo... É claro que há excessões, mas de uma forma geral, é mais ou menos assim. Principalmente no meu redor. Meu orientador normalmente só desorienta, jogando um monte de coisa em nossas mãos (minhas e do pessoal do Laboratório de Lingüística Computacional). Resultados? Sim, pra ontem. Modo de fazer? Se vira.
Bem, isso é meio um desabafo, mas é também um pensamento de como nós, brasileiros, nos rebaixamos sem muita razão. Sempre pensamos que não somos bons, que as outras culturas, os outros países são melhores... Mas não é bem assim não. O que muda um pouco é que aqui não existe "medo" de trabalhar. A Coréia é um (se não "o") país com a mais longa jornada média de trabalho do mundo, 48 horas semanais. Se isso fosse bem administrado, com uma alta taxa de eficiência, não teria pra ninguém. Mas, o que acontece, na verdade, é que muita gente "passa" muito tempo no local de trabalho, não necessariamente "trabalhando". Só vai fazer o que tem de ser feito mesmo, quando a bunda começa a pegar fogo... hehe
Às vezes, não dá pra entender, mas como "uma andorinha não faz verão", não sou eu que vou mudar a tradicional forma milenar coreana de trabalhar. Eu é que tenho de me adaptar. E assim vamos...
Quanto ao trabalho, acabou dando bons resultados. Principalmente porque eu pensei que não íamos conseguir. Fiz junto com meu colega de lab, o Munhyong, que cuidou da transformação do corpus que possuíamos, marcado morfologicamente, em um corpus marcado semanticamente. Temos esse corpus que faz parte do projeto do Dicionário Eletrônico "Sejong" da Língua Coreana que reúne em um corpus os textos de 4 anos seguidos dos artigos de um jornal daqui da Coréia. Todo esse texto foi analisado morfologica e sintaticamente, primeiro por computador e depois checado manualmente. É um trabalho difícil, já que são uns bons milhões de linhas de texto afinal. Esse era o corpus que precisávamos para nosso experimento. O problema é que, além da marcação morfológico-sintática, necessitávamos tbm de uma marcação semantica, marcando cada sentido diferente das palavras homógrafas, no estilo "manga" de camisa e "manga" de chupar. Tínhamos um corpus com tais marcações, mas o problema é que esse só era marcado sintaticamente. O que fizemos foi unir os dois. Primeiro, é claro, tentamos fazê-lo automaticamente, mas por falta de padronização no formato dos textos, isso mostrou-se só parcialmente efetivo. Então, partimos para a feitura manual do resto que não deu certo... Lembram-se dos milhões de linhas? Pois é... Mas quem acabou pegando isso foi o Munhyong, e eu acabei com o programa para fazer os cálculos.
Pra quem não se lembra, no mês passado, eu estava aprendendo a programar em Python e acabei fazendo tudo em Python mesmo. E no final deu certo mesmo. Nem acredito. É claro que é muito provável que não fiz como deveria ter feito, o programa deve ter ficado feio às vistas de um programador experiente, mas o negócio é que funcionou e eu aprendi muuuuito com isso. Muito mais do que os 3 meses e meio de aulas que tivemos.
Pelo menos pra isso valeu.
Agora, temos que dar uma polida nos resultados e comparar com resultados anteriores de outros trabalhos. A pedido do nosso orientador. Temos até o dia 30 pra apresentar os resultados.
Ah, e o nosso trabalho é sobre "similaridades entre palavras". O computador lê um texto, analisa as relações entre as palavras e decide quais palavras são mais relacionadas em uma escala de 0 a 1, sendo 0 nehuma similaridade e 1 similaridade total, isto é, identidade. Nosso laboratório é o primeiro a fazer isso com a língua coreana e precisamos disso para criar dicionários para ajudar no processamento computacional da língua coreana, em campos como Tradução Automática, Ontologia, Pesquisa Web e Web Semântica, entre outros. Se conseguirmos, nosso trabalho vai facilitar a vida de muita gente que tem de fazer isso manualmente.

Bem por enquanto é só. Depois escrevo mais.

Um abraço pra quem fica.

quinta-feira, 22 de maio de 2008

Música do dia: Francesa







Foi ao som dessas músicas que meu feto de programa que faz mais ou menos o que quero nasceu... Depois de um curso intensivo de Python durante os últimos dias, estou começando a pegar o jeito. Falta dar umas melhoradinhas, mas o grosso tá aí...

Não é nada de mais. Por enquanto é só um programinha que pega qualquer texto, conta todas as palavras, faz uma lista ordenada pelas palavras mais freqüentes e lista ao lado de cada palavra sua ocorrência no texto e a freqüência relativa.
    #! /usr/bin/python
    import sys
    words = open(sys.argv[1]).read().lower().split()
    dic = {}
    for i in words: dic[i] = 0
    for i in words: dic[i] += 1
    count = reversed(sorted([(dic[i], i) for i in dic]))
    freq = lambda x: float(x) / len(words)
    count = [(j, i, freq(i)) for i, j in count]
    for i in count: print "%s\t\t%d\t%F" % i
Resultado do programinha acima rodando com as palavras deste post):


de 6 0.044776
que 5 0.037313
o 4 0.029851
e 4 0.029851
para 3 0.022388
da 3 0.022388
a 3 0.022388
é 2 0.014925
vou 2 0.014925
uma 2 0.014925
um 2 0.014925
mas 2 0.014925
mais 2 0.014925
lista 2 0.014925
faz 2 0.014925
falta 2 0.014925
dar 2 0.014925
ao 2 0.014925
últimos 1 0.007463
universidade 1 0.007463
umas 1 0.007463
1 0.007463
todas 1 0.007463
texto, 1 0.007463
texto 1 0.007463
tenho 1 0.007463
1 0.007463
são 1 0.007463
sua 1 0.007463
som 1 0.007463
semana 1 0.007463
sair 1 0.007463
relativa. 1 0.007463
quero 1 0.007463
qualquer 1 0.007463
python 1 0.007463
próxima. 1 0.007463
promete. 1 0.007463
programinha 1 0.007463
programa 1 0.007463
por 1 0.007463
pontuação, 1 0.007463
pelas 1 0.007463
pegar 1 0.007463
pega 1 0.007463
palavras, 1 0.007463
palavras 1 0.007463
palavra 1 0.007463
ou 1 0.007463
os 1 0.007463
ordenada 1 0.007463
ocorrência 1 0.007463
não 1 0.007463
no 1 0.007463
nasceu... 1 0.007463
nada 1 0.007463
na 1 0.007463
músicas 1 0.007463
mudar 1 0.007463
minha 1 0.007463
meu 1 0.007463
menos 1 0.007463
melhoradinhas, 1 0.007463
me 1 0.007463
manhã 1 0.007463
mais. 1 0.007463
limpada 1 0.007463
lado 1 0.007463
1 0.007463
jeito. 1 0.007463
isso 1 0.007463
intensivo 1 0.007463
grosso 1 0.007463
freqüência 1 0.007463
freqüentes 1 0.007463
foi 1 0.007463
fim 1 0.007463
fica 1 0.007463
feto 1 0.007463
eu 1 0.007463
estou 1 0.007463
este 1 0.007463
enquanto 1 0.007463
durante 1 0.007463
dormitório 1 0.007463
dormir 1 0.007463
do 1 0.007463
dias, 1 0.007463
dessas 1 0.007463
depois 1 0.007463
curso 1 0.007463
conta 1 0.007463
começando 1 0.007463
cidade! 1 0.007463
centro 1 0.007463
cada 1 0.007463
aí... 1 0.007463
as 1 0.007463
amanhã. 1 0.007463
aliás 1 0.007463
agora 1 0.007463
4 1 0.007463


Falta dar uma limpada na pontuação, mas isso fica para a próxima. Agora já são 4 da manhã e eu tenho que dormir para amanhã. Aliás este fim de semana promete. Vou me mudar para o dormitório da minha universidade e vou sair do centro da cidade!

Pesquisar em blogues de brasileiros na Coreia

Resultado da pesquisa