Come trovare i nomi difficili da scrivere male?


16

Ecco una domanda che credo possa essere risolta con un po 'di data mining e un sofisticato algoritmo, ma non so proprio come. Qualsiasi suggerimento su quali origini dati utilizzare e quale algoritmo applicare sono i benvenuti.

Antefatto: sono un rumeno-ungherese che aspetta un bambino con un polacco-ucraino e non ho ancora deciso in quale paese vogliamo stabilirci. Come ci si può aspettare, la scelta di un determinato nome è della massima importanza e un acceso dibattito. Da parte mia, sono ancora traumatizzato da tutta la seccatura che ho dovuto affrontare quando qualcuno avrebbe sbagliato a pronunciare il mio nome mentre mi spostavo da un paese all'altro. Ad esempio, se fossi chiamato "Adrian", verrai benedetto in Romania, solo per scoprire che sei finito per essere "Adri e n" è un documento ufficiale francese. Quindi il mio unico requisito è rendere estremamente improbabile che il nome del bambino sia errato in alcuni paesi europei.

Dichiarazione del problema: data una serie di paesi, ad esempio Francia, Germania, Svezia, Polonia e Romania, trova l'elenco di nomi dati che, se pronunciati correttamente, è improbabile che vengano scritti erroneamente dalla gente del posto.

Più formalmente: Sia p (c, n) una funzione che restituisce la probabilità che il nome n sia scritto in modo errato nel paese c . Dato C un insieme di paesi e p₀ una probabilità, trova N un insieme di nomi dati, tale che

per tutti nN e cC , p (c, n) <p₀

Pensieri iniziali : il problema principale è come implementare p (c, n) . Si potrebbe provare ad approssimarlo con un euristico. Chiaramente è probabile che un nome sia scritto in modo errato in due casi:

  1. È poco usato in quel paese.
  2. È simile a un nome diverso, che non è poco usato in quel paese.

Non sono sicuro di come avrei potuto usare Internet, ad esempio Wikipedia, per rispondere efficacemente a queste due domande. Come si elencano solo i nomi usati abbastanza frequentemente in un paese? Come si cercano quelli scritti allo stesso modo?


1
Non sono sicuro che la popolarità influenzerebbe notevolmente la probabilità di errori di ortografia, rispetto alla bassa distanza di modifica rispetto ad altri nomi. Ad esempio Hanna sembra simile / identico a Hannah e Anna , e Lucas è simile a Luca e Lukas . Una volta che puoi mettere le mani su un elenco di nomi per ogni paese, puoi iniziare raggruppando a bassa distanza di modifica.
amon

Penso che abbia a che fare anche con la popolarità. Nessuno scriverebbe Anna in rumeno, dato che il doppio n è solo strano in quella lingua. Allo stesso modo, un francese probabilmente scriverebbe Christian anche se lo pronunci senza h . (Gioco di
parole

5
L'approccio pragmatico sarebbe quello di utilizzare un GUID.
toniedzwiedz,

1
Ottimo riferimento XKCD. Ma non dimenticare i tavoli di Little Bobby ;-) xkcd.com/327
Mawg dice di ripristinare Monica il

Considererei il confronto dei suoni vocalici in quelle lingue. Il mio tedesco parla fluentemente, ma continuo a rovinare Ö
Mawg dice di ripristinare Monica il

Risposte:


15

Ci sono alcuni approcci che potrebbero funzionare meglio per alcune lingue rispetto ad altre. Ad esempio, soundex (e un'altra descrizione che mi piace ) è stato progettato per pronunce inglesi di nomi. Con soundex, Michaeldiventa M240. Questo ha diversi passaggi:

  1. La prima lettera è isolata ( Me ichael)
  2. Tutte le vocali vengono rimosse dal resto ( Me chl)
  3. Le consonanti vengono sostituite
    • c -> 2
    • l -> 4
  4. Zeri del pad sinistro.

Il raggruppamento delle conversioni consonanti si basano sulla loro somiglianza fonetica - B, F, Pe Vtutto mappa per 1.

E ci sono variazioni su questo nel tempo . È particolarmente utile nella genealogia in cui l'ortografia di un nome può cambiare nel tempo, ma la pronuncia rimane simile.


Esistono anche approcci come il rating delle partite sviluppato dalle compagnie aeree per i nomi (piuttosto che per la genealogia americana).

La codifica dell'approccio di classificazione delle partite (MRA) è:

  1. Elimina tutte le vocali non guida ( Michaeldiventa Mchle Anthonydiventa Anthny)
  2. Rimuovere la seconda costante di tutti i doppi
  3. Se la stringa è più lunga di 6 caratteri, riduci la stringa rimanente a 6 caratteri prendendo i primi tre e gli ultimi tre.

La specifica completa per questo può essere trovata su archive.org - nota che non è "piccola" (il modulo stampato è di 214 pagine).

I confronti hanno una soglia corrispondente in base alla durata del testo.

Esistono anche altri algoritmi fonetici .


Quindi, ciò che ti incoraggio a fare è prendere il soundex così com'è, adottare l'approccio di valutazione della partita così com'è, o modificare il soundex in base alle consonanti rumene e alle consonanti polacche .

Ricorda che con soundex, le consonanti sono raggruppati (in polacco, m, n, ɲsono tutte consonanti nasali per essere raggruppati, e si sarebbe probabilmente raggruppare le occlusive labiali, dentali, e alveolari - siano essi senza voce o espresso insieme - scontato, non lo faccio conosci il polacco quindi non so se sto solo dicendo cose che non sono vere lì).

Quindi converti tutti i nomi nel database nei due diversi sistemi soundex e scopri quali nomi hanno il minor numero di collisioni nelle diverse lingue. Questo ti dà nomi distinti. In modo che Smithnon si presenti come Smyth.


Questo, tuttavia, risolve solo il "nome che probabilmente si scontrerà con altri nomi e sarà meschino". Non si rivolge all'altro modo del "nome ascoltato correttamente, scritto in modo errato" e per questo, si dovrebbe focalizzare la propria attenzione su nomi comuni.

Ad esempio, Michaelera un nome molto comune negli Stati Uniti dall'inizio del 1950 alla fine del 1970. Era molto popolare . Tuttavia, per qualche motivo, il nome Michealera abbastanza popolare negli anni '50 (arrivò all'83esimo nome più comune al suo apice). E sono certo che le persone nominate Michealottengano costantemente errori di ortografia.

Pertanto, dovresti concentrarti sui nomi in cui esiste un nome che domina la popolarità del nome per una determinata pronuncia. Guardando un altro consumatore di dati per i nomi per anno, si può vedere che i nomi che iniziano con marmellata ... per un ragazzo sono un disastro con Jamaal, Jamal, Jamare altri. Per inciso, questi nomi hanno suoni sonori leggermente diversi per American ( J540, J540e J560- the le rsono in gruppi diversi anche se sono strettamente correlati in fonetica). Tuttavia, per qualcuno originario del Giappone, esiste un solo suono nella regione fonetica in cui lersono pronunciati in inglese americano. Ciò può anche rappresentare una sfida per le principali consonanti che usano soundex di cui si dovrebbe essere consapevoli (una volta ho lavorato con una donna giapponese che si chiamava Risa (con una "R") piuttosto che Lisa come romanizzazione del suo nome giapponese).

Noterai che i miei esempi sono per gli Stati Uniti. Tali dati sono facilmente accessibili. Apparentemente ci sono alcune cose per la Polonia e l' ungherese , e suggerisce solo la comunanza dei nomi ungheresi ... Ho il sospetto che la ricerca in una lingua diversa dall'inglese possa essere utile lì.

Quindi, dato il soundex per un nome, poche collisioni e l'ortografia reale è nell'insieme delle collisioni. Preferibilmente, questo è un nome comune. Guardando quella lista ungherese, andare avanti Krisztiánprobabilmente otterrebbe errori di ortografia mentre, Zoltánmeno probabilmente così (il nome di bambino n. 22 più comune nel 2011 in Ungheria!). Detto questo, non puoi sbagliare Michael.


2
Risposta fantastica! Cercherò di implementarlo e, una volta terminato, condividerò il codice e accetterò la tua risposta.
user1202136

2
Un tentativo di attuare questa idea. "Test utente" non superato. :) github.com/cristiklein/idemscriptent-given-names
user1202136

Ottima risposta Michele! @utente1202136 ottimo lavoro sulla sceneggiatura! Sono interessato a vedere i risultati :)
Chris Cirefice il

1
@ChrisCirefice: Sebbene la risposta di Michael sia semplicemente fantastica, ho scoperto che non produceva nomi che avrebbero superato il "test utente". Ho optato per un algoritmo molto più semplice, che cerca di trovare nomi scritti in modo identico nelle prime 100 liste di nomi. Puoi trovare i risultati qui: github.com/cristiklein/idemscriptent-given-names
user1202136

1

Probabilmente vorrai esaminare l'algoritmo fonetico Double Metaphone, progettato per gestire il modo in cui le parole sono pronunciate in diverse lingue. C'è anche un Metaphone 3, ma che costa denaro da usare.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.