Aqui está uma pergunta que acredito que poderia ser resolvida com alguma mineração de dados e um algoritmo sofisticado, mas não sei exatamente como. Quaisquer indicadores sobre quais fontes de dados usar e qual algoritmo aplicar serão bem-vindos.
Antecedentes: sou um romeno-húngaro que está esperando um bebê com um polonês-ucraniano e ainda não decidiu o país em que país deseja se estabelecer. Como você pode esperar, a escolha de um determinado nome é de extrema importância e um debate quente. Do meu lado, ainda estou traumatizado com todo o aborrecimento que tive que passar quando alguém escrevia errado meu nome quando me mudava de um país para outro. Por exemplo, se você fosse chamado "Adrian", seria abençoado na Romênia, apenas para descobrir que acabou sendo "Adri e n", é um documento oficial francês. Portanto, meu único requisito é tornar extremamente improvável que o nome do bebê seja digitado incorretamente em alguns países europeus.
Declaração do problema: Dado um conjunto de países, por exemplo, França, Alemanha, Suécia, Polônia e Romênia, encontre a lista de nomes que, quando pronunciados adequadamente, dificilmente serão digitados incorretamente pelos habitantes locais.
Mais formalmente: Seja p (c, n) uma função que retorne a probabilidade de o nome n estar incorreto no país c . Dada C um conjunto de países e p₀ uma probabilidade, encontrar N um conjunto de nomes dados, de tal forma que
para todos n ∈ N e c ∈ C , p (c, n) <p₀
Pensamentos iniciais : O principal problema é como implementar p (c, n) . Pode-se tentar aproximar isso com uma heurística. Claramente, é provável que um nome seja digitado incorretamente em dois casos:
- É pouco usado nesse país.
- É semelhante a um nome diferente, pouco usado nesse país.
Não tenho certeza de como eu poderia usar a Internet, por exemplo, a Wikipedia, para responder com eficiência a essas duas perguntas. Como uma lista usaria apenas nomes com bastante frequência em um país? Como alguém procuraria grafias semelhantes?
Respostas:
Existem algumas abordagens que funcionariam melhor para alguns idiomas do que outros. Por exemplo, soundex (e outra descrição que eu gosto ) foi projetada para pronúncias de nomes em inglês. Com soundex,
Michael
torna-se M240. Isso tem várias etapas:M
eichael
)M
echl
)c
-> 2l
-> 4O agrupamento das conversões consoantes são baseados em sua semelhança fonética -
B
,F
,P
eV
toda mapa para1
.E há variações sobre isso ao longo do tempo . É particularmente útil na genealogia onde a ortografia de um nome pode mudar com o tempo, mas a pronúncia permanece semelhante.
Também existem abordagens, como a classificação de partidas, desenvolvida pelas companhias aéreas para nomes (em vez da genealogia americana).
A codificação da abordagem de classificação por correspondência (MRA) é:
Michael
tornaMchl
-Anthony
se e torna - seAnthny
)A especificação completa para isso pode ser encontrada em archive.org - observe que "não é pequeno" (o formulário impresso é 214 páginas).
As comparações têm um limite de correspondência com base na duração do texto.
Existem outros algoritmos fonéticos também .
Então, o que eu encorajo você a fazer é usar o soundex como está, adotar a abordagem de classificação de correspondência como está ou modificar o soundex com base nas consoantes romenas e polonesas .
Lembre-se que com soundex, as consoantes são agrupados (em polonês,
m
,n
,ɲ
são todas consoantes nasais a ser agrupados, e você provavelmente iria agrupar as oclusivas labiais, dentais, e alveolar - sejam eles não têm voz ou voz juntos - concedido, eu não sei sabe polonês, então não sei se estou apenas dizendo coisas que não são verdadeiras por lá).Em seguida, apenas oculte todos os nomes no banco de dados para os dois sistemas soundex diferentes e descubra quais nomes têm o menor conjunto de colisões nos diferentes idiomas. Isso fornece nomes distintos. Então isso
Smith
não aparece comoSmyth
.Isso, no entanto, apenas resolve o "nome que provavelmente colidirá com outros nomes e será mal ouvido". Ele não trata da outra maneira do "nome ouvido corretamente, escrito incorretamente" e, para isso, deve-se concentrar sua atenção em nomes comuns.
Por exemplo,
Michael
era um nome muito comum nos EUA desde o início de 1950 até o final de 1970. Era realmente popular . No entanto, por alguma razão, o nomeMicheal
era popular nos anos 50 (chegou ao 83º nome mais comum em seu auge). E estou certo de que as pessoas nomeadasMicheal
constantemente têm seus nomes com erros ortográficos.Portanto, você deve se concentrar em nomes em que exista um nome que domine a popularidade do nome para uma determinada pronúncia. Olhando para outro consumidor de dados para os nomes por ano, você pode ver que nomes começando com Jam ... para um menino são uma bagunça com
Jamaal
,Jamal
,Jamar
e outros. Aliás, esses nomes têm expressões sonoras ligeiramente diferentes para o americano (J540
,J540
eJ560
- thel
er
estão em grupos diferentes, embora estejam intimamente relacionados à fonética). No entanto, para alguém do Japão, digamos, existe apenas um som na região fonética em quel
er
são pronunciadas no inglês americano. Isso também pode representar um desafio para as principais consoantes que usam soundex, das quais se deve estar ciente (uma vez trabalhei com uma japonesa que se chamava Risa (com um 'R') em vez de Lisa como romanização de seu nome japonês).Você notará que meus exemplos são para os Estados Unidos. Esses dados são facilmente acessíveis. Aparentemente, existem algumas coisas para a Polônia e o húngaro , e apenas dicas sobre o uso comum de nomes húngaros ... Suspeito que pesquisar em um idioma que não seja o inglês possa ser útil lá.
Assim, dado o soundex para um nome, poucas colisões e a ortografia real estão no conjunto de colisões. De preferência, este é um nome comum. Olhando para a lista húngara, seguir em frente
Krisztián
provavelmente resultaria em erros de ortografia, emboraZoltán
menos provável (22º nome de bebê mais comum em 2011 na Hungria!). Dito isto, você não pode dar erradoMichael
.fonte
Você provavelmente deseja examinar o algoritmo fonético do Double Metaphone, desenvolvido para lidar com a pronúncia das palavras em diferentes idiomas. Há também um Metaphone 3, mas isso custa dinheiro para usar.
fonte