Como encontrar palavras próximas de outras palavras?

Como encontrar palavras próximas de outras palavras?

Vou criar um dicionário onde os usuários possam encontrar cada palavra que esteja próxima uma da outra a partir da pronúncia e da letra da palavra.

Por exemplo, quando o usuário pesquisouaproximarmeu site retorna outras palavras próximas disso, comoperto, pêra, querido, traseiro, aqui

Como fazer isso?

como este site:zona de rima

Responder1

Acho que isso é toleravelmente complexo. É um ramo da Programação em Linguagem Natural (não a outra PNL, Neuro Linguistic Pap). Você precisa ser capaz de combinar "aqui" e "ouvir" - então você precisa quebrar os elementos e mapeá-los para uma equivalência fonética (h-"ere" e h-"ere" para ambos). E algumas grafias têm fonética variante (tosse, arado, através) ou têm homônimos ainda piores (o aí, eles estão, o grupo deles) e podem ser regionalmente diferentes (no Reino Unido, o 'a' longo ou curto em garagem, gráfico e vidro, por exemplo). Quando você faz equivalências fonéticas, elas nem sempre são singulares.

Depois de obter equivalências fonéticas, você pode usar uma variedade de heurísticas para minimizar a diferença entre elas. Para poesia, você provavelmente precisará enfatizar excessivamente o peso das terminações - a rima depende principalmente das terminações das palavras. Você também pode querer execuções aliterativas para poesia - provavelmente seria necessária uma ponderação diferente para aliterações eufônicas.

Eu participaria de um dos cursos universitários on-line gratuitos sobre PNL - atualmente existem vários. Base muito melhor em técnicas modernas de análise de linguagem. :)

Responder2

Você pode usar a comparação de strings entre strings do mesmo comprimento e permitir um (ou dois) caracteres não correspondentes.

Porém, olhando para o seu site, sugiro mapear as palavras por sua representação fonética e depois pesquisá-las, tratando as strings como matrizes de caracteres e iniciando a comparação pela parte de trás.

Para desenvolver seu exemplo: perto -> \'nir\ pear -> \'per\ dear -> \'dir\ rear -> \'rir\ ou \'rer\ aqui -> \'hir\

(Estou roubando o Merriam-Webster online para a notação fonética, aqui)

Receio que o mapeamento deva ser feito como uma tabela de consulta e não pode ser compilado, porque o inglês não tem regras de pronúncia muito rígidas...

De qualquer forma, depois de mapear suas palavras, você pode comparar o último fonema delas: neste caso, você pode querer procurar palavras que terminem em "ir\" (o que excluiria "pear", neste caso).

Este método não parece muito eficiente: se eu pudesse usar algum espaço em disco, salvaria as pesquisas para referência futura: então, quando um segundo uso procurar por todas as palavras que rimam com "near", o aplicativo apenas carregará o salvo search - já que os dicionários geralmente não evoluem muito rápido.

informação relacionada