Por favor ,estou trabalhando em um projeto que manipula Strings e gostaria de saber se existe alguma classe Java pronta ou como fazer para testar se uma determinada palavra pertence ao idioma Portugues nosso.
Por exemplo, terei uma sequencia do tipo: “CADEIA” ou “CADELA” que retornariam TRUE.
Mas sequencias de caracteres formadas por “CAADE” ou “CDELA” seriam FALSE.
Eu nem controlo o que seria gerado ,apenas gostaria de testar se aquele “amontoado” de caracteres seria uma palavra valida em nosso idioma.Agradeço a ajuda.
Uma forma muito simples é você pegar uma lista de palavras da língua portuguesa (há várias delas na Internet, basta procurar por “lista palavras português” - infelizmente várias delas encontram-se em sites que estão bloqueados no proxy aqui na empresa), e encontrar a palavra nessa lista. Muito simples.
Listas desse tipo podem ter cerca de algumas centenas de milhares de palavras, já que um verbo no dicionário (por exemplo, amar) deve ser cadastrado, nessa lista, com todas as flexões possíveis (ou seja, “amo”, “amas”, “ama”, “amamos”, “amais”, “amam”, “amei”, “amaste”, “amou”, “amastes”, “amaram”, “amarei”, “amarás”, “amará”, “amaremos”, “amareis”, “amarão”, “amasse”, “amasses”, “amássemos”, “amásseis”, “amassem” etc.).
Portanto, a organização dessa lista deve ser de busca eficiente. Um HashSet ou um TreeSet são suficientes.
Uma vantagem de ter a lista com você é que você não precisa “gerar” uma palavra, basta você sortear uma palavra na lista ao acaso.
Note que você precisa realmente de uma lista.
Só você ter uma sequência de sílabas que são pronunciáveis em português não quer dizer que ela seja uma palavra da língua portuguesa.
Por exemplo, a palavra “menas” (que é uma sequência de sílabas perfeitamente pronunciável) não é uma palavra da língua portuguesa.
A menos (ou será que é “a menas”? ) que você aceite também palavras erradas
Ou seja, resumindo:
a) Ache uma lista em formato texto. (Se a lista estiver em uma planilha Excel ou em um documento Word, por favor exporte-a para um arquivo-texto, uma palavra por linha, para podermos começar).
b) Leia essa lista, linha por linha, usando o método readLine da classe BufferedReader (que encapsularia um objeto FileReader()) , e cada linha deve ser inserida em um TreeSet ou HashSet. (Use a primeira opção se quiser as palavras em ordem alfabética. Use a segunda opção se você quer a busca mais rápida possível mas não se importa com a ordem das palavras.)
c) Para verificar se uma palavra é da língua portuguesa, simplesmente use o método contains de uma dessas classes.
d) Para sortear uma palavra ao acaso, você deve ter cadastrado cada linha em um ArrayList também. Então basta saber o tamanho do arraylist, para achar uma posição aleatória usando o método Math.random().
Vale ressaltar que é bom tomar cuidado com a diferenciação entre maiúsculas e minúsculas.
Por exemplo, se na lista (ou tabela hash, ou qualquer outra coleção) todas as palavras estiverem em minúscula, você precisa converter a palavra a ser buscada em minúscula antes de procura na coleção.