Як знайти важко неправильне написання заданих імен?


16

Ось питання, яке, на мою думку, можна було б вирішити за допомогою деякого видобутку даних та складного алгоритму, але я не знаю як. Будь-які вказівки щодо того, які джерела даних використовувати та який алгоритм застосовувати, вітаються.

Передумови: Я румуно-угорський, який очікує дитину з польсько-українською і не дуже налаштований на думку, в якій країні ми хочемо оселитися. Як ви можете очікувати, вибір даного імені має надзвичайно важливе значення та гарячу дискусію. З мого боку, я все ще травмований усіма клопотами, які мені довелося пережити, коли хтось неправильно написав моє ім’я, коли я переїжджав з однієї країни в іншу. Наприклад, якби вас назвали "Адріан", вас б благословили в Румунії, лише якщо ви дізнаєтесь, що ви закінчилися бути "Adri e n" - це якийсь офіційний французький документ. Тому моя єдина вимога - зробити вкрай малоймовірним, щоб ім’я дитини було неправильно написано в деяких європейських країнах.

Постановка проблеми: Враховуючи набір країн, наприклад, Франція, Німеччина, Швеція, Польща та Румунія, знайдіть список заданих імен, які при правильному вимові місцеві жителі навряд чи будуть неправильно написані.

Більш формально: Нехай p (c, n) є функцією, яка повертає ймовірність неправильного написання імені n у країні c . З огляду на C безліч країн і p₀ ймовірності, знайти г N набір даних імен, такий , що

для всіх nN і cC , p (c, n) <p₀

Початкові думки : Основна проблема полягає в тому, як реалізувати p (c, n) . Можна спробувати наблизити це до евристики. Очевидно, що ім'я, ймовірно, буде написано неправильно у двох випадках:

  1. У цій країні він мало використовується.
  2. Це схоже на іншу назву, яка не так часто використовується в цій країні.

Я не впевнений, як я міг би скористатися Інтернетом, наприклад, Вікіпедією, щоб ефективно відповісти на ці два питання. Як можна перерахувати лише досить часто використовувані імена в країні? Як можна було б шукати аналогічно написаних?


1
Я не впевнений, що популярність сильно вплине на ймовірність неправильного написання, порівняно з низькою відстані редагування до інших імен. Наприклад , Ханна співзвучно / ідентичні Hannah та Анни , і Лукас схожий Лука і Лукаса . Як тільки ви зможете отримати список імен для кожної країни, ви можете почати з кластеризації на невеликій відстані редагування.
амон

Я думаю, що це стосується і популярності. Ніхто не написав би Ганну румунською мовою, оскільки подвійний п є просто дивним на цій мові. Аналогічно, французька людина, ймовірно, пише християнську, навіть якщо ви вимовлятимете її без h . (Каламбур призначений.: D)
користувач1202136

5
Прагматичним підходом було б використання GUID.
toniedzwiedz

1
Відмінна посилання XKCD. Але не забудьте столи Little Bobby ;-) xkcd.com/327
Mawg каже, що поверніть Моніку

Я б подумав порівняти голосні звуки в цих мовах. Моя німецька вільно володіє, але я все одно
псую

Відповіді:


15

Існують деякі підходи, які краще працюватимуть для деяких мов, ніж для інших. Наприклад, soundexінший мені опис ) був розроблений для вимови англійською мовою імен. З Soundex,Michael стає M240. Це має кілька кроків:

  1. Перший лист ізольовані. (M і ichael)
  2. Усі голосні звуки видалено із залишку (M і chl)
  3. Приголосні замінюються
    • c -> 2
    • l -> 4
  4. Ліві нульові колодки.

Угруповання приголосних перетворення засновані на їх фонетичного подібності - B, F, Pі Vвсі карти в1 .

І в цьому є різні варіанти . Це особливо корисно в генеалогії, де написання імені може змінюватися з часом, але вимова залишається подібною.


Також є такі підходи, як рейтинг матчів, який розроблявся авіакомпаніями для імен (а не американської генеалогії).

Кодування підходу до оцінки відповідності (MRA):

  1. Видаліть усі голосні голосні ( Michaelстає MchlіAnthony стає Anthny)
  2. Видаліть другу константу будь-якого парного
  3. Якщо рядок довший 6 символів, зменшіть решту рядка до 6 символів, взявши перші три та останні три.

Повну специфікацію для цього можна знайти на archive.org - зауважте, що вона "не мала" (друкована форма - 214 сторінок).

У порівнянні має поріг відповідності на основі того, як довго текст.

Є й інші фонетичні алгоритми .


Отож, я б закликав вас це зробити або прийняти звукову передачу такою, якою є, прийняти підхід до оцінювання відповідності таким, який є, або змінити звукову програму на основі румунських і польських приголосних .

Пам'ятайте , що з Soundex, приголосні згруповані (у польській мові, m, n,ɲ є все носові приголосні повинні бути згруповані, і ви, швидше за все , група губні, зубні і альвеолярні вибухові - будь вони глухими або озвучує разом - як належне, я не знаю польську, тому не знаю, чи я просто кажу те, що там не відповідає дійсності).

Потім просто прикрийте всі імена в базі даних для двох різних саунд-файлів і з’ясуйте, які імена мають найменший набір зіткнень на різних мовах. Це дає чіткі назви. Отже, Smithце не відображається як Smyth.


Це, однак, вирішує лише "ім'я, що може зіткнутися з іншими іменами та бути невірним". Це не стосується іншого способу "імені, почутого правильно, записаного неправильно", і для цього слід зосередити свою увагу на загальних назвах.

Наприклад, Michaelбула дуже поширеною назвою в США з початку 1950-х до кінця 1970-х. Це було дуже популярно . Однак чомусь ім'я Michealбуло набуло популярності у 50-х роках (дісталося до 83-ї найпоширенішої назви на своєму піку). І я впевнений, що люди на ім’я Michealпостійно отримували свою назву неправильно.

Таким чином, вам слід зосередитись на іменах, де є одне ім’я, яке домінує над популярністю імені для заданої вимови. Поглянувши на іншому споживач даних для імен по роках, ви можете побачити , що імена , що починаються з джемом ... для хлопчика безлад з Jamaal, Jamal, Jamarта іншими. Між іншим, ці імена мають дещо різні звукові файли для американських ( J540, J540і J560- lі rє в різних групах, навіть якщо вони тісно пов'язані в фонетиці). Однак для когось із, скажімо, Японії, є лише один звук у фонетичній області, деl іrвимовляються американською англійською мовою. Це також може спричинити виклик з провідними приголосними, використовуючи звуковий сигнал, про який слід знати (я колись працював з японкою, яка називала себе Різа (з «R»), а не Ліза як румунізація її японського імені).

Ви зауважите, що мої приклади - для США. Ці дані легко доступні. Мабуть, є деякі речі для Польщі та Угорщини , і лише натякає на спільність угорського імені ... Я підозрюю, що пошук іншою мовою, крім англійської, може бути корисним.

Отже, з огляду на звукову передачу назви, декілька зіткнень і власне написання є в наборі зіткнень. Переважно, це загальна назва. Дивлячись на цей угорський список, ви Krisztián, мабуть, отримаєте неправильні написання, хоча, що Zoltánменш ймовірно, (№22 найпоширеніше ім’я дитини 2011 року в Угорщині!). Це сказало, що ви не можете помилитися Michael.


2
Дивовижна відповідь! Я спробую це здійснити, і як тільки я закінчу, ділюсь кодом і приймаю вашу відповідь.
user1202136

2
Спроба втілити цю ідею. Не зовсім проходить «тестування користувача». :) github.com/cristiklein/idemscriptent-given-names
user1202136

Відмінна відповідь Майкл! @ user1202136 чудова робота над сценарієм! Мені цікаво подивитися результати :)
Кріс Сірефіс

1
@ChrisCirefice: Хоча відповідь Майкла просто приголомшлива, я виявив, що вона не створює імен, які пройдуть "тест користувача". Я пішов на набагато простіший алгоритм, який намагається знайти ідентично написані імена в топ-100 списках імен. Результати можна знайти тут: github.com/cristiklein/idemscriptent-given-names
user1202136

1

Напевно, ви хочете заглянути фонетичний алгоритм подвійного метафону, який призначений для обробки того, як слова вимовляються на різних мовах. Також є Metaphone 3, але це коштує грошей на використання.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.