Problemas com Strings

4 respostas
C

Olá Pessoal!

Estou com um verdadeiro desafio: meu programa recebe um txt e uma vocabulário onde cada termo deste é comparado para ver se encontra algo no txt, caso afirmativo, o termo no texto deve ser “marcado”:

gosto muito de java

gosto muito de java

** a primeira vez, tentei usando o StringTokenizer, mas não foi legal pois eu perderia a formatação do texto original e termos compostos tb (Grupo de Java)
** na segunda vez melhorei usando o contains(), que no caso afirmativo, eu guardava o inicio com indexOf() e tamanho com length() para depois usar no replace().

aí…veio outro problema:

gosto muito de java

quando ele for fazer um contains(‘gosto’) e depois as trocas, ele vai acabar fazendo uma caquinha…

Como resolver este dilema, existe alguma solução no Java Core? Ou alguma lib?

Att.
Celso

4 Respostas

ViniGodoy

Não sei o quão complexo deve ser o seu interpretador. Uma alternativa seria usar o ANTLR para identificar tokens numa gramática mais complexa.

Se você tivesse lido a documentação da classe StringTokenizer, vai ver que o uso dela é desaconselhada desde o Java 5, quando o método split foi adicionado. Montando uma expressão regular suficientemente complexa, talvez seja possível quebrar o texto de uma forma mais adequada para você, usando o split.

Montar o texto depois é outra tarefa. Talvez seja mais fácil faze-lo em uma segunda etapa, depois de todos os tokens identificados.

ccefetpb

Bem estou mechendo um pouco com PLN e encontrei problemas parecidos com o seu , n sei se seu projeto e muito complicado ou se vale a pena , mas existe um projete da Apache chamado Lucene que pode te ajudar .É em pratos limpos , um lib que auxilia na busca de dados de uma fonte de dados ( txt , xml e etc) não me aprofundei muito e n sei se existe o que vc esta querendo fazer mas vale a pena dar uma olhada.

C

Valew pelas dicas galera !!!
VinyGodoy vou tentar montar o texto numa segunda etapa,
Ccefetpb Um amigo do mestrado tb me recomendou o lucene, estou lendo o “lucene in action” para entendê-lo melhor.

Abraços,
Celso

ccefetpb

Bem …
ao que parece eu e vc estamos fazendo algo bem parecido .
Tbm estou lendo o Lucene in Action 2nd Edition - estou atrasado inclusive - se vc quiser ( e eu me interesso ) poderiamos trocar msgs pelo gmail ou msn sobre como fazer isso ?
Estou me formando esse ano e minha ideia tem a ver com essa analise de textos e inferencia .

Meu email é [email removido].

Aguardo contato.
=P

Criado 11 de fevereiro de 2010
Ultima resposta 11 de fev. de 2010
Respostas 4
Participantes 3