Jak znaleźć trudne do błędnego wpisania nazwisk?

16

Oto pytanie, które moim zdaniem można rozwiązać za pomocą eksploracji danych i wyrafinowanego algorytmu, ale nie do końca wiem, jak to zrobić. Wszelkie wskazówki dotyczące tego, które źródła danych należy użyć i jaki algorytm zastosować, są mile widziane.

Kontekst: Jestem Rumuńsko-Węgierką, która spodziewa się dziecka z polsko-ukraińskim i nie do końca się zdecydowała w jakim kraju chcemy się osiedlić. Jak można się spodziewać, wybór imienia ma ogromne znaczenie i gorąca debata. Z mojej strony wciąż jestem traumatyzowany przez wszystkie kłopoty, które musiałem przejść, gdy ktoś źle pisał moje imię, gdy przeprowadzałem się z jednego kraju do drugiego. Na przykład, jeśli zostaniesz nazwany „Adrianem”, zostaniesz pobłogosławiony w Rumunii, ale odkryjesz, że skończyłeś jako „Adri e n”, to jakiś oficjalny francuski dokument. Tak więc moim jedynym wymaganiem jest, aby bardzo mało prawdopodobne było, aby imię dziecka zostało błędnie napisane w niektórych krajach europejskich.

Opis problemu: Biorąc pod uwagę zestaw krajów, np. Francję, Niemcy, Szwecję, Polskę i Rumunię, znajdź listę nazwisk, które przy prawidłowym wymowie nie są popełniane przez miejscowych.

Bardziej formalnie: Niech p (c, n) będzie funkcją, która zwraca prawdopodobieństwo błędnej pisowni nazwy n w kraju c . Biorąc pod uwagę, C zbiór krajów i p₀ prawdopodobieństwo, znajdź N zestaw imion, tak że

dla wszystkich nN i cC , p (c, n) <p₀

Wstępne przemyślenia : Podstawowym problemem jest sposób implementacji p (c, n) . Można spróbować to przybliżyć heurystycznie. Oczywiste jest, że nazwa może zostać błędnie napisana w dwóch przypadkach:

  1. Jest mało używany w tym kraju.
  2. Jest podobny do innej nazwy, która nie jest rzadko używana w tym kraju.

Nie jestem pewien, jak mógłbym korzystać z Internetu, np. Wikipedii, aby skutecznie odpowiedzieć na te dwa pytania. Jak można wymienić tylko dość często używane nazwiska w danym kraju? Jak szukać takich pisowni?

użytkownik1202136
źródło
1
Nie jestem pewien, czy popularność miałaby duży wpływ na prawdopodobieństwo błędu pisowni w porównaniu z małą odległością edycji od innych nazw. Np. Hanna brzmi podobnie / identycznie jak Hannah i Anna , a Lucas jest podobny do Lucy i Lukasa . Gdy tylko zdobędziesz listę nazw dla każdego kraju, możesz zacząć od grupowania według małych odległości edycji.
amon
Myślę, że ma to również związek z popularnością. Nikt nie przeliterowałby Anny po rumuńsku, ponieważ podwójne n jest po prostu dziwne w tym języku. Podobnie Francuz prawdopodobnie napisałby po chrześcijańsku, nawet jeśli wymawia się go bez h . (Pun przeznaczony.: D)
użytkownik1202136
5
Pragmatycznym podejściem byłoby użycie GUID.
toniedzwiedz
1
Świetne odniesienie do XKCD. Ale nie zapomnij o stolikach Little Bobby ;-) xkcd.com/327
Mawg mówi o przywróceniu Moniki
Rozważę porównanie dźwięków samogłosek w tych językach. Mój niemiecki jest biegły, ale wciąż robię bałagan Ö
Mawg mówi o przywróceniu Moniki

Odpowiedzi:

15

Istnieje kilka podejść, które działałyby lepiej w niektórych językach niż w innych. Na przykład soundex (i inny opis, który lubię ) został zaprojektowany do angielskiej wymowy nazw. Z Soundex Michaelstaje się M240. Ma to kilka kroków:

  1. Pierwsza litera jest izolowana. ( Mi ichael)
  2. Wszystkie samogłoski są usuwane z reszty (M i chl)
  3. Spółgłoski są zastępowane
    • c -> 2
    • l -> 4
  4. Zero pad lewej strony.

Grupowanie spółgłoskowo konwersji opierają się na ich podobieństwo fonetyczne - B, F, Pi Vcałej mapy do 1.

Z czasem pojawiają się na to zmiany . Jest to szczególnie przydatne w genealogii, w której pisownia nazwy może się zmieniać z czasem, ale wymowa pozostaje podobna.


Istnieją również podejścia, takie jak ocena meczów, która została opracowana przez linie lotnicze dla nazw (zamiast amerykańskiej genealogii).

Kodowanie metody oceny dopasowania (MRA) to:

  1. Usuń wszystkie samogłoski niepowodujące ( Michaelstaje się Mchli Anthonystaje Anthny)
  2. Usuń drugą stałą z podwójnych
  3. Jeśli ciąg jest dłuższy niż 6 znaków, zmniejsz pozostały ciąg do 6 znaków, biorąc pierwsze trzy i ostatnie trzy.

Pełną specyfikację tego można znaleźć na archive.org - zauważ, że nie jest „mały” (wydrukowany formularz ma 214 strony).

Do porównania mają próg dopasowanie w oparciu o ile tekst jest.

Istnieją również inne algorytmy fonetyczne .


Zachęcam więc do zrobienia soundexu w takiej postaci, w jakiej jest, lub zmodyfikowania soundexu na podstawie spółgłosek rumuńskich i polskich spółgłosek .

Pamiętaj, że z soundex, spółgłoski są pogrupowane (w języku polskim, m, n,ɲ są wszystkie spółgłoski nosowe być grupowane, a ty najprawdopodobniej grupa wargowej, stomatologiczne i pęcherzykowe spółgłoski wybuchowe - one być bezdźwięczne dźwięczne lub razem - udzielone, nie wiem znam polski, więc nie wiem, czy mówię tylko rzeczy, które nie są prawdą).

Następnie po prostu ukryj wszystkie nazwy w bazie danych do dwóch różnych systemów soundex i dowiedz się, jakie nazwy mają najniższy zestaw kolizji w różnych językach. To daje różne nazwy. Więc Smithto nie pojawia się jako Smyth.


To jednak rozwiązuje jedynie „imię, które może kolidować z innymi nazwami i być źle słyszane”. Nie odnosi się do drugiego sposobu, w jaki „imię zostało poprawnie usłyszane, zapisane niepoprawnie” i dlatego należy skupić uwagę na zwyczajowych nazwach.

Na przykład Michaelbyła bardzo popularną nazwą w Stanach Zjednoczonych od początku 1950 r. Do końca 1970 r. Była bardzo popularna . Jednak z jakiegoś powodu nazwa Michealbyła popularna w latach 50. XX wieku (osiągnęła 83. najpopularniejszą nazwę u szczytu). I jestem pewien, że ludzie o imionach Michealciągle mają błędnie zapisane nazwiska.

Dlatego powinieneś skupić się na nazwach, w których istnieje jedna nazwa, która dominuje popularność nazwy dla danej wymowy. Zerkając na innego konsumenta danych dla nazw na rok, można zobaczyć, że nazwy zaczynające się Jam ... dla chłopca są bałagan z Jamaal, Jamal, Jamari innych. Nawiasem mówiąc, te nazwy mają nieco inne soundexes dla Amerykanina ( J540, J540iJ560 - w imieniu li rsą w różnych grupach, chociaż są one ściśle związane z fonetyki). Jednak dla kogoś z, powiedzmy Japonii, w regionie fonetycznym jest tylko jeden dźwiękl irwymawia się w amerykańskim angielskim. Może to również stanowić wyzwanie dla wiodących spółgłosek wykorzystujących soundex, o których należy wiedzieć (kiedyś pracowałem z Japonką, która nazywała siebie Risa (z „R”), a nie Lisa jako romanizacja jej japońskiego imienia).

Zauważysz, że moje przykłady dotyczą Stanów Zjednoczonych. Te dane są łatwo dostępne. Najwyraźniej są pewne rzeczy dla Polski i Węgier , i tylko wskazówki na temat węgierskiej nazwy ... Podejrzewam, że pomocne może być wyszukiwanie w języku innym niż angielski.

Biorąc pod uwagę soundex dla nazwy, kilka kolizji i faktyczna pisownia jest w zestawie kolizji. Najlepiej jest to nazwa zwyczajowa. Patrząc na tę węgierską listę, pisanie z nią Krisztiánprawdopodobnie spowodowałoby błędy ortograficzne, a Zoltánrzadziej - (22 najpopularniejsze imię dziecka w 2011 roku na Węgrzech!). To powiedziawszy, nie możesz się pomylić Michael.


źródło
2
Świetna odpowiedź! Spróbuję go zaimplementować, a kiedy skończę, udostępniam kod i akceptuję twoją odpowiedź.
user1202136,
2
Próba realizacji tego pomysłu. Niezupełnie zdane „testy użytkownika”. :) github.com/cristiklein/idemscriptent-given-names
user1202136
Doskonała odpowiedź Michael! @ user1202136 świetna praca nad skryptem! Chcę zobaczyć wyniki :)
Chris Cirefice,
1
@ChrisCirefice: Podczas gdy odpowiedź Michaela jest po prostu niesamowita, odkryłem, że nie wytworzyła ona nazw, które przejdą „test użytkownika”. Wybrałem o wiele prostszy algorytm, który próbuje znaleźć identycznie pisane nazwy na 100 listach nazw. Wyniki można znaleźć tutaj: github.com/cristiklein/idemscriptent-given-names
user1202136
1

Prawdopodobnie chcesz przyjrzeć się algorytmowi fonetycznemu Double Metaphone, który jest zaprojektowany do obsługi wymowy słów w różnych językach. Istnieje również Metaphone 3, ale korzystanie z niego kosztuje.

John Smith
źródło