Itens compartilhados de Juliano

Mostrando postagens com marcador seoul national university. Mostrar todas as postagens
Mostrando postagens com marcador seoul national university. Mostrar todas as postagens

sexta-feira, 25 de setembro de 2009

Saiu nosso trabalho finalmente!

Depois de muitos meses, com muitas reuniões, nosso trabalho sobre o "Sistema de Reconhecimento de Eventos em Língua Coreana" foi aceito em uma conferência!
Mesmo assim, ainda temos muito trabalho pela frente...

Segue aí a primeira página do nosso filhinho:

sexta-feira, 27 de fevereiro de 2009

Vocês pensam que é fácil?

Pois é... Aquele dia eu disse que ia estar com mais tempo etcétera e tal, mas, como alegria de pobre dura pouco, minha felicidade se esvaiu tristemente pelo ralo das ocupações que pululam pela Terra da Manhã Tranquila.
Deu um esfaniquito no meu orientador que decidiu me orientar a caminho da minha graduação. Chegou uma mensagem pra mim para que o encontrasse para conversarmos. Neste país, normalmente, o assunto em questão nunca é tratado de antemão, só ficamos sabendo na hora do tête-à-tête. Pois bem, quando cheguei à sua sala, ele me pediu pra puxar a cadeira (e quando isso acontece é por que "senta que lá vem a história") e pus-me então a imaginar de que se trataria tudo aquilo. De repente, não mais que de repente, quase que subrepticiamente, olha pra mim e diz: "precisamos conversar". Mil coisas passaram por minha cabeça em um átimo, mas depois de alguns segundos, ele começou a sabatina: "Quando você vai terminar? Este não é seu último semestre? Ah, você vai pedir extensão? Faltam dois semestres então? E a tese? Já pensou em algo? Não vai fazer aquilo? Então que tal isso? (Conversa em que são feitas as perguntas e respondidas pelo questionador.) Então precisamos nos reunir para discutir seu trabalho. E parari parará..." No fim das contas, meu orientador resolveu me orientar. Isso foi uma coisa boa que me aconteceu na semana passada.
E eu sinto mesmo que preciso de um orientador mais próximo, já que nunca em minha vida havia estudado linguística computacional e os conceitos ainda estão um pouco confusos em minha cabeça. Devo dizer que aprendi bastante até aqui, mas ainda assim não sei muito bem como continuar sem uma orientação mais direcionada. E outra que eu funciono bem melhor sob pressão e direcionamentos externos, já que eu sempre me perco em milhares de pensamentos e acabo perdendo o rumo do que fazer quando estou por conta. (Um grande defeito de minha pessoa...)
Vamos ver no que vai dar agora.

Outra passagem interessante que ocorreu na semana passada foi a vinda de alguns estudantes da minha bolsa a Seul para visitarem universidades. Estes são dos que chegaram em julho/agosto e ainda estão no curso de língua. Só que agora eles têm que escolher a(s) universidade(s) à qual querem se candidatar (e por aqui o pessoal só fala "aplicar", calque do inglês "apply to a university"... para mim soa bem estranho. Aplicar para mim é cola no papel, demão de tinta na parede, ou, ainda, aplicar-se nos estudos... Como não tenho um bom dicionário de português aqui para checar os vários significados da palavra não posso dizer se em português é também possível dizer "aplicar na universidade X", mas que me soa bem estranho, isso soa.). Bem, por isso, fui com a Cláudia (Paraguaia), a Emek (Turca) e a Olga (Cazaque) à Universidade de Seul, Hanyang, Kyung Hee, Korea na segunda e na terça. Para mim foi legal passear um pouco e ver o mundo fora da Universidade de Seul. Também foi praticamente a primeira vez que voltei a Kyung Hee depois que terminei meu curso de coreano lá. Praticamente porque tivemos a festa de final de ano lá agora no ano passado, mas fomos de ônibus da Univ. de Seul direto para a porta do prédio onde aconeceria a festa e não vimos mais nada. Desta vez, fomos de metrô, pegamos o "onibinho" que vai até a faculdade, caminhamos pelo câmpus, visitei um dos prédios onde tive aulas... Foi mais divertido.

Outra coisa que estou fazendo também é dar aulas de português ao futuro Adido Militar da Embaixada da Coréia do Sul em Brasília. Isto também é bem interessante. E, como ele já tem uma boooa base de português, já que ele fez seu mestrado em terras tupiniquins, nossas aulas são discussões a respeito de história e cultura de ambos os países. Finalmente um coreano que fala português melhor que inglês! =) É um aluno muito bom mesmo.

E, acabaram-se as férias! (Como se eu tivesse tido alguma!) As aulas se reiniciam esta semana. E eu, pra variar, me esqueci de fazer matrícula... Igual ao semestre passado. Agora vou ter que me inscrever durante o período de regularização de matrícula, quando podemos trocar e cancelar matérias e nos inscrever em matérias novas. Estava pensando em fazer uma matéria que é mais ou menos relacionada a linguística computacional, e já estava quase decidido quando, não mais que de repente, chega a meu laboratório um amigo japonês para bater papo... nisso, disse a ele que estava pensando em fazer essa matéria e ele respondeu-me que ele já a havia feito, mas que para ele tinha sido um pouco difícil já que ele não é do ramo de linguística computacional e etc. Conversa vai, conversa vem, ele começou a contar a respeito do professor que é bom, sabe do que está falando, mas que perde o fio da meada com frequência e, para poder dar tudo o que planejou para aquela aula, ele vai esticando a aula, normalmente meia hora a mais, isto é, as aulas que normalmente têm 3 horas, acabam ficando com 3 e meia. No entanto, há vezes em que ele estica, estica, vai falando e as aulas acabam por ter 5 horas de duração! Não obstante ter de aguentar uma aula que vai das 10 da manhã às 3 da tarde, há vezes que para chegar o conteúdo no ponto do planejado do programa, ele se vê obrigado a dar aulas de reposição as quais são feitas normalmente aos sábados e, pasmem, domingos! Agora eu te pergunto, ó querido leitor, eu vou fazer um trem desses??? Vai ser mais uma dor de cabeça gratuita para mim. Ainda mais que agora tenho de pensar na tese e tudo o mais. Resolvi que vou fazer uma aula chamada "Cursos especiais sobre línguas", a qual, neste semestre, apresentará a língua mongol. Como para língua pura e simples, meu cérebro funciona bem melhor, vai ser bem mais sossegado pegar essa aula do que ficar me matando com professores prolixos e sem rumo. Já me bastam os que já tive, não quero mais sarna para me coçar.

Bem, fica aí meu relato a respeito dos últimos acontecimentos por aqui. Tem até mais coisas, mas ainda tenho que me preparar para a aula de português.

Um abraço pro 6.

quinta-feira, 29 de janeiro de 2009

A frequencia de postagem não está das melhores...

E minha disponibilidade de tempo, tampouco...

Mas, vamos para mais uma postagem.

Primeiro, gostaria de agradecer às pessoas que leem meu blog e que comentam. Isso com certeza dá mais força para que continuemos postando, mesmo que ainda sem muita frequência.

Agora, vamos às novidades.

Acabamos de sair de mais uma reunião acerca do nosso atual projeto, que é a automatização da marcação de expressões temporais em textos. Acho que já tinha mencionado isso por aqui. Na verdade é um tipo de linguagem de marcação, tipo HTML, mas só para expressões temporais e suas correlações com eventos. Pode ser usada, principalmente, para a construção de buscadores automáticos de informação, tipo um Google da vida, onde o usuário pode digitar algo como: "Quando foi a posse do último presidente dos Estados Unidos?". Assim mesmo, com linguagem de gente e não com linguagem de Google, tipo: "posse presidente Estados Unidos" e depois ter que ficar procurando por algo que seja útil entre os tantos resultados que aparecem.

Devo dizer que falando assim, parece bem mais fácil do que realmente é. O problema é ensinar o computador a achar coisas como "no último dia do verão do ano de 1992" e dizer que isso tudo é uma expressão e não só "dia", "verão", "ano", "1992", separado. Pode não parecer, mas isso dá um certo "trabalhinho".

Ademais, tenho tido aulas de Java aos sábados, das 10 da madrugada às 5 da tarde. Cansativo que só. Mas tenho aprendido coisas interessantes e isso também está me dando mais noções a respeito de programação, o que eu não tinha, pois nunca havia aprendido a programar formalmente, isto é, nunca tinha frequentado um curso de programação qual quer que fosse. Aprendi tudo sozinho e, depois que cheguei aqui, na marra, com o professor dizendo "Faz!" e eu me virando para fazer.

O ruim é que agora o Java está se misturando um pouco com o Python que usamos por aqui no laboratório. E isso é um pouco ruim, já que as duas línguas tem caracteríticas e personalidades bem diferentes uma da outra... Mas, vamos levando.

Fora isso, o nosso projeto deu uma estancada depois de ter acelerado logaritmicamente até o fim do ano passado. Já faz pouco mais de um mês que não há modificações palpáveis no coitadinho.

Bem, por enquanto é isso. Eu sei que não é tão interessante, mas é minha vida por aqui...

Um abraço.

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

sexta-feira, 5 de dezembro de 2008

Depois de um tempo com o blog congelado, eu volto com uma notícia quente!

Mais um ano passou e eis que chegamos em dezembro! PQP, como passa rápido!
Este ano, não vi nem a primavera chegar, nem o outono passar por causa das aulas. Só vi o maldito do verão, queimando meus miolos, e, agora, o inverno que nem chegou oficialmente...
Neste instante temos uma temperatura de -11°C com sensação térmica de -19,5°C (não me perguntem como eles fazem essas contas...). Acabei de chegar da Estação de Seul, aonde fui levar a Eun Bee pra tomar o trem para Pusan. Não fosse o vento, até que não estaria ruim. Mas, mesmo assim, ainda prefiro este friozinho do que aquele calor desgraçado...
Ah, e hoje, além da temperatura, tive outra surpresa: meu professor orientador oriental desorientado teve a brilhante idéia de nos matricular (a todos nós que pertencemos ao laboratório de lingüística computacional) em curso de Java que começará no dia 27 de dezembro e seguirá até o dia 12 de fevereiro... Teremos ótimas férias! =) (Sentiram a ironia, né?) Tudo bem que será uma coisa a mais, será interessante, mas... E o melhor de tudo é o horário: sábados das 10 da madrugada até as 5 da tarde! Sete horas de diversão semanal.

Enviem-me boas vibrações...

Abraço bem quentinho do Juliano que vai aprender Java agora...

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, 23 de setembro de 2008

Kimchi com Café em Boletim Extraordinário

Venho por meio desta participar a todos os que acompanharam a minha ladainha quanto ao meu exame de qualificação de mestrado (acabei de descobrir o nome disso agora... de tanto falar 논자시 [nonjashi] acabei esquecendo como falava isso em português) que hoje saiu o resultado do famigerado exame.

Mas, antes disso, devo dizer que estou meio sonolento pelo fato de que ontem não pude pregar meus olhos face às dificuldades de uma apresentação que tinha que fazer para a aula de Línguas Altaicas, a qual me tomou todo a noite passada. Tudo bem que até tive um certo tempinho pra poder cumpri com minhas obrigações discentes antes da reta final, mas não me sentia nem um pouco bem psicologica ou emocionalmente devido às agruras do estresse passado pelos estudos para dito exame de qualificação. Deixei, pois, para a última hora como é de meu feitio, e também de 80% dos brasileiros e coreanos que eu conheço.

Pois bem, hoje, fiz a apresentação sobre a Harmonia Vocálica no Coreano do século XV e das línguas Tungúsicas. Foram quatorze páginas de cocô, na falta de vocábulo mais formoso. No entanto, foi o que deu pra fazer em uma noite. O professor não reclamou muito (bom sinal) e saí feliz com o resultado inesperado. Logo depois da aula e do almoço, tentei em vão marcar minha presença no meu amado Laborátorio de Lingüística Computacional, mas estava pescando mais que não sei o quê. Resolvi, pois, voltar pra casa e, chegando, despenquei com tudo na minha amada caminha que me recebeu de braços abertor e sorriso no rosto e que me acolheu por duas satisfatórias horas. Agora, já desperto, resolvi dar uma olhada no meu celular, onde não mais que de repente havia uma singela mensagem de duas linhas enviada por meu colega de laboratório que dizia: "논자시 합격을 축하해", ou, "parabéns pelo exame de qualificação!". Isso significa só uma coisa:

PASSEI!!! PASSEI!!! PASSEI!!! =)

Agora "só" tenho que escrever minha tese de mestrado... nada mais...

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.

segunda-feira, 9 de junho de 2008

Novo programa

Pois é. No último post eu estava aprendendo como programar em Python... Agora o negócio é pra valer. Este é o primeiro programa que estamos usando para ler um corpus de quase 200.000 frases e extrair as marcações sintáticas de cada palavra em relação à palavra à qual esta está subordinada. Tipo, no caso de "João viu o macaco", eu tenho que mostrar as informações como viu: sujeito(João), viu: objeto(macaco). Estamos focando em substantivos e verbos. Depois de fazer essa lista, vamos processar um outro corpus que, ao invés de marcações sintáticas, possui marcações semânticas, isto é, diz se "macaco" no caso acima se trata do animal ou da ferramenta usada para trocar pneus de automóveis... Com isso, vamos cruzar as duas informações e procurar por "campos semânticos", isto é, conjunto de palavras que possuem uma certa similaridade e são usadas em determinados contextos, criando um banco de dados que possa vir ser usado no futuro como base de um programa de tradução automática, por exemplo. Por enquanto, ainda está bem cru, mas não parece impossível que cheguemos lá. A propósito, resolvemos fazer juntos esse projeto, eu e o carinha que também trabalha lá no laboratório de lingüística computacional, o Kim Munhyeong. Ah, e outro detalhe, a pesquisa é com um corpus de língua coreana. o.O

Aí vai o leitor/processador do primeiro corpus:
#!/usr/bin/python
#encoding: utf-8
import sys, re, codecs

class ForestWalker:
def __init__(self, file):
self.file = file
def __iter__(self):
return self
def readtree(self):
# read sentence form line
line = self.readline()
tree = Tree(line.split(' ')[0])
# make list of nodes
list_of_nodes = []
line = self.readline()
while (line):
(ord, dep, tag1, tag2, wordform, morph_string) = line.split("\t")
morphs = self.parse_morph_string(morph_string)
word = Word(ord, wordform, morphs, morph_string)
list_of_nodes.append(Node(ord, dep, tag1, tag2, word))
line = self.readline()
# make tree with list of nodes
# set parent-child relations
for n in list_of_nodes:
if n.dep == n.ord:
tree.set_root(n)
else:
p = list_of_nodes[int(n.dep)-1]
n.parent = p
p.add_a_child(n)
tree.nodes = list_of_nodes
return tree
def parse_morph_string(self, morph_string):
morphs = []
m = morph_string
for m in morph_string.split('+'):
m = m.strip()
if m == "" :
pass
else :
if m == "/SW":
form, pos = "+", "SW"
elif m[0:2] == "//":
form, pos = "/", m[2:]
else :
try :
form, pos = m.split("/")
if pos == "" : pos = "_ERR_"
except :
form, pos = m, "_ERR_"
morphs.append(Morph(form,pos))
return morphs
def readline(self):
line = self.file.readline()
# EOF
if (line == '') : sys.exit(0)
return line.strip()
fields = line.strip().split("\t")
if len(fields) == 6 :
return fields
else :
return line.strip()
def next(self):
return self.readtree()

class TreeBank:
pass

class Tree:
def __init__(self, id):
self.id = id
self.nodes = []
self.root = None
self.terminals = []
def set_root(self, node):
self.root = node
def get_terminals(self):
if self.terminals :
pass
else:
for n in self.nodes:
if not n.children :
self.terminals.append(n)
return self.terminals

class Node:
def __init__(self, ord, dep, tag1, tag2, word):
self.parent = None
self.children = []
self.ord = ord
self.dep = dep
self.tag1 = tag1
self.tag2 = tag2
self.form = word.form
self.word = word
def add_a_child(self, node):
self.children.append(node)

class Morph:
def __init__(self, form, pos):
self.form = form
self.pos = pos

class Word:
def __init__(self, ord, form, morphs, morph_string):
self.ord = ord
self.form = form
self.morphs = morphs
self.morph_string = morph_string
def add_morph(self, morph):
self.morphs.append(morph)
def has_pos(self, pos):
for m in self.morphs:
if m.pos == pos :
return True
return False
def __str__(self):
str = ""
for m in self.morphs:
if str == "":
str = m.form
elif m.pos[0] == "S" :
str += m.form
else :
str += "-" + m.form
return str
#return reduce(lambda x,y: x.form+"-"+y.form, self.morphs)

class Encode:
def __init__(self, stdout, enc):
self.stdout = stdout
self.encoding = enc
def write(self, s):
self.stdout.write(s.encode(self.encoding))

def get_output_string1(morphs) :
str = ""
pos_arr = []
morphform_arr = []
for m in morphs:
pos_arr.append(m.pos)
morphform_arr.append(m.form)
str = ''.join(morphform_arr)
return str

def get_output_string2(morphs) :
str = ""
pos_arr = []
morphform_arr = []
for m in morphs:
pos_arr.append(m.pos)
morphform_arr.append(m.form)
str = ''.join(morphform_arr)
return str

def get_verbform(words):
v = re.compile(r".*?/")
w = ''.join(words)
arr = v.findall(w)
str = ''.join(arr)
return str

sys.stdout = Encode(sys.stdout, "utf8")

for s in ForestWalker(codecs.open(sys.argv[1], encoding="utf8")):
for n in s.nodes:
if re.compile(r'[ NV][PSQ]_[^C]').match(n.tag2):
if n.parent:
tg = re.compile('.*?_')
if re.compile(r'N.?').match(n.parent.tag2):
print "%s\t%s\t%sN" % (get_output_string1(n.word.morphs), tg.sub(r'', n.tag2), n.parent.word.morph_string.split(r'/')[0])
elif re.compile(r'V.?').match(n.parent.tag2):
print "%s\t%s\t%sV" % (get_output_string1(n.word.morphs), tg.sub(r'', n.tag2), get_verbform(n.parent.word.morph_string))

Na verdade, o programa em si, são só as últimas linhas. Todas as classes presentes aqui, são de outro projeto chamado KLTK (Korean Language Toolkit), feito por um doutorando daqui. Esse KLTK está sendo feito nos moldes do NLTK (Natural Language Toolkit) para o processamento da língua coreana e do novo dicionário eletrônico que foi feito recentemente, o Grande Dicionário Eletrônico Sejong... Como diria o Thiago, tá mais pra o Milenar Grande Dicionário... hehe

Faltam 2 dias para apresentar o projeto e 8 dias para entregar o paper com tudo bonitinho. Parece que ainda falta um século...

Um abraço pra quem não está ocupado e pra quem está também. ;)

Fui...

segunda-feira, 2 de junho de 2008

Casa nova!

Sábado fez uma semana que eu estou morando na minha casa nova!
É claro que sinto saudade do outro dormitório, dos amigos que deixei por lá, mas minha qualidade de vida por aqui é beeem melhor.
Primeiro: espaço. Aqui é um apartamento mesmo. Tem cara de casa. É grande. Tem lugar pra organizar minhas tralhas todas e ainda sobra espaço. Tem cozinha e banheiro dentro. Tudo o que eu não tinha antes no outro dormitório.
Segundo: novo. O prédio aqui é bem mais novo do que o outro onde morava antes. Os móveis, o piso, as paredes, a geladeira, o fogão... tudo novinho. Dá até gosto.
Terceiro: localização. Dentro da faculdade. Quer melhor que isso? Antes eu demorava mais de uma hora pra chegar no meu departamento. Agora, de 10 a 15 minutos. Além disso, como o campus fica um pouco fora da cidade, a qualidade do ar, a paisagem são bem melhores que antes.
Tenho mais tempo pras minhas coisas, tenho mais tempo pros estudos... Tudo bem melhor... Mas, como não existe nada perfeito, tem um grande "porém": o preço. Aqui tenho que pagar praticamente o triplo do que pagava antes. Vai ficar um pouco mais difícil de juntar dinheiro, mas só pelo conforto e bem-estar, acho que já vale a pena.

Aí vão algumas fotos que tirei no segundo ou terceiro dia que estava por aqui. Alguma coisinha já mudou, mas basicamente é isso aí:











Não é uma belezinha???

Se quiserem me visitar, agora já tenho espaço para hospedar! :)

quinta-feira, 22 de maio de 2008

Nova versão do meu filhinho

Aí vai a versão 0.2 do meu programinha... Agora eu tive paciência de comentar cada passo.

#!/usr/bin/python
# encoding: utf8

# projeto.py
#
# Copyright 2008 Juliano Paiva Junho <jpj@jpj-laptop>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
# MA 02110-1301, USA.

import re, sys

# Expressão regular que separa só as palavras, deixando a pontuação de lado
p = re.compile(r'\b\W+\b', re.U)

# Abre o arquivo passado pela linha de comando
# Lê o arquivo todo (não é eficiente com arquivos muito grandes)
# Decodifica o arquivo como UTF-8
# Passa todas as letras para minúsculas
# Cria lista de palavras sem pontuação por meio da Regex acima
# Joga o resultado de tudo isso na variável "words"
words = p.split(open(sys.argv[1]).read().decode("utf8").lower()[:-1])

# Inicializa um dicionário vazio para unificar e contar as palavras repetidas
dic = {}

# Inicializa as chaves do dicionário para a posterior contagem de palavras
for i in words: dic[i] = 0

# Adiciona 1 a cada palavra repetida
for i in words: dic[i] += 1

# Cria uma lista com as chaves do dicionário seguidas por seus valores
# Ordena a lista pelos valores
# Inverte a ordem para mostrar as palavras com mais contagens primeiro
count = reversed(sorted([(dic[i], i) for i in dic]))

# Função para calcular a freqüência de cada palavra
freq = lambda x: float(x) / len(words)

# Recria a lista acima agora com mais um termo: a freqüência de cada palavra
count = [(j.encode("utf8"), i, freq(i)) for i, j in count]

# Imprime todos os resultados na tela (com possibilidade de redirecionamento ou piping)
print "\nNúmero de palavras do texto: %d" % len(words)
print "\nNúmero de palavras únicas: %d\n" % len(count)
for i in count: print "%s\t%d\t%F" % i


Resultado da saída de um texto em coreano UTF-8 (50 primeiras linhas)

Número de palavras do texto: 1284
Número de palavras únicas: 894

Palavra Contagem Freqüência
있다 20 0,015576
수 19 0,014798
영어 16 0,012461
있는 14 0,010903
그 14 0,010903
영어의 11 0,008567
영어는 10 0,007788
것은 10 0,007788
이 8 0,006231
예 7 0,005452
영어가 7 0,005452
대모음 7 0,005452
할 6 0,004673
영어를 6 0,004673
약 6 0,004673
거의 6 0,004673
초기 5 0,003894
에 5 0,003894
보면 5 0,003894
가장 5 0,003894
후기 4 0,003115
있었다 4 0,003115
있고 4 0,003115
영국의 4 0,003115
미국의 4 0,003115
라는 4 0,003115
라고 4 0,003115
등의 4 0,003115
들 4 0,003115
된다 4 0,003115
근대영어의 4 0,003115
그것은 4 0,003115
굴절어미의 4 0,003115
것이다 4 0,003115
것도 4 0,003115
english 4 0,003115
현재의 3 0,002336
현재 3 0,002336
한 3 0,002336
하는 3 0,002336
특히 3 0,002336
추이 3 0,002336
즉 3 0,002336
있으며 3 0,002336
있어 3 0,002336
일반적으로 3 0,002336
인도 3 0,002336
이른바 3 0,002336
의해서 3 0,002336
의한 3 0,002336
의 3 0,002336

O problema é que isso é só o começo... Eu preciso disso para começar a trabalhar com um corpus (conjunto de textos de geralmente um mínimo de um milhão de letras), mas eu preciso achar alguma coisa para analisar... Talvez "similaridade de palavras", ou "polaridade"... Ainda não sei... Preciso elaborar uma questão, teorizá-la, criar um programa, rodá-lo, analisar os resultados, e escrever um paper. E tenho exatamente 20 dias para apresentar os resultados e 26 dias para entregar o paper propriamente dito.

Será possível?

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