Como achar difícil escrever erros de nomes?

16

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 nN e cC , 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:

  1. É pouco usado nesse país.
  2. É 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?

user1202136
fonte
1
Não tenho certeza se a popularidade afetaria muito a probabilidade de erros de ortografia, quando comparados com a baixa distância de edição de outros nomes. Por exemplo, Hanna parece semelhante / idêntica a Hannah e Anna , e Lucas é semelhante a Luca e Lukas . Depois de colocar as mãos em uma lista de nomes para cada país, comece agrupando por distâncias de edição baixas.
amon
Eu acho que tem a ver com popularidade também. Ninguém escreveria Anna em romeno, pois o dobro n é estranho nessa língua. Da mesma forma, uma pessoa francesa provavelmente escreveria cristão, mesmo que você o pronuncia sem h . (Pun destina: D.)
user1202136
5
A abordagem pragmática seria usar um GUID.
toniedzwiedz
1
Ótima referência ao XKCD. Mas não se esqueça das mesas de Little Bobby ;-) xkcd.com/327
Mawg diz que restabelece Monica
Eu consideraria comparar sons de vogais nesses idiomas. Meu alemão é fluente, mas ainda faço uma bagunça Ö
Mawg diz que restabelece Monica

Respostas:

15

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, Michaeltorna-se M240. Isso tem várias etapas:

  1. Primeira letra é isolada. ( Me ichael)
  2. Todas as vogais são removidas do restante ( Me chl)
  3. As consoantes são substituídas
    • c -> 2
    • l -> 4
  4. Zeros à esquerda do teclado.

O agrupamento das conversões consoantes são baseados em sua semelhança fonética - B, F, Pe Vtoda mapa para 1.

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) é:

  1. Excluir todas as vogais não líderes ( Michaeltorna Mchl- Anthonyse e torna - se Anthny)
  2. Remova a segunda constante de quaisquer duplas
  3. Se a cadeia tiver mais de 6 caracteres, reduza a cadeia restante para 6 caracteres, utilizando os três primeiros e os três últimos.

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 Smithnão aparece como Smyth.


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, Michaelera 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 nome Michealera popular nos anos 50 (chegou ao 83º nome mais comum em seu auge). E estou certo de que as pessoas nomeadas Michealconstantemente 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, Jamare outros. Aliás, esses nomes têm expressões sonoras ligeiramente diferentes para o americano ( J540, J540e J560- the le restã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 que lersã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ánprovavelmente resultaria em erros de ortografia, embora Zoltánmenos provável (22º nome de bebê mais comum em 2011 na Hungria!). Dito isto, você não pode dar errado Michael.


fonte
2
Resposta incrível! Vou tentar implementá-lo e, quando terminar, compartilho o código e aceito sua resposta.
User1202136
2
Uma tentativa de implementar essa ideia. Não está sendo aprovado no "teste do usuário". :) github.com/cristiklein/idemscriptent-given-names
user1202136
Excelente resposta Michael! @ user1202136 ótimo trabalho no script! Eu estou interessado em ver os resultados :) #
3111 Chris Cirefice
1
@ ChrisCirefice: Embora a resposta de Michael seja simplesmente incrível, eu achei que ela não produzia nomes que passariam no "teste do usuário". Eu optei por um algoritmo muito mais simples, que tenta encontrar nomes graficamente idênticos nas 100 melhores listas de nomes. Encontre os resultados aqui: github.com/cristiklein/idemscriptent-given-names
user1202136
1

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.

John Smith
fonte