Вот вопрос, который, я считаю, может быть решен с помощью некоторого анализа данных и сложного алгоритма, но я не совсем знаю, как. Любые указатели относительно того, какие источники данных использовать и какой алгоритм применять, приветствуются.
Справочная информация: я румынско-венгерский, который ждет ребенка от польско-украинского и не совсем решил, в какой стране мы хотим обосноваться. Как вы можете ожидать, выбор данного имени имеет первостепенное значение и вызывает горячие споры. Со своей стороны, я по-прежнему травмирован всеми трудностями, которые мне пришлось пережить, когда кто-то неправильно написал мое имя, когда я переезжал из одной страны в другую. Например, если вы назвали «Адриан» вы были благословлены в Румынии, только чтобы обнаружить , что вы в конечном итоге быть «Адри е п» некоторый официальный французский документ. Поэтому мое единственное требование - сделать так, чтобы в некоторых европейских странах было неправильно написано имя ребенка.
Постановка проблемы: учитывая ряд стран, например, Францию, Германию, Швецию, Польшу и Румынию, найдите список названий, которые при правильном произнесении вряд ли будут ошибаться местными жителями.
Более формально: пусть p (c, n) будет функцией, которая возвращает вероятность того, что имя n введено с ошибкой в стране c . Учитывая C набор стран и p₀ вероятность, найдите N набор данных имен, такой что
для всех n ∈ N и c ∈ C , p (c, n) <p₀
Исходные мысли : основная проблема заключается в том, как реализовать p (c, n) . Можно попытаться приблизить это с помощью эвристики. Очевидно, что имя может быть написано с ошибкой в двух случаях:
- Это мало используется в этой стране.
- Это похоже на другое имя, которое не мало используется в этой стране.
Я не уверен, как я мог бы использовать Интернет, например, Википедию, чтобы эффективно ответить на эти два вопроса. Как можно было бы перечислить только довольно часто используемые имена в стране? Как можно искать похожие по буквам?
Ответы:
Есть некоторые подходы, которые будут работать лучше для некоторых языков, чем для других. Например, soundex (и другое описание, которое мне нравится ) был разработан для английского произношения имен. С soundex
Michael
становится M240. Это имеет несколько шагов:M
иichael
)M
иchl
)c
-> 2l
-> 4Группировка согласных преобразования основаны на их фонетическое сходство -
B
,F
,P
иV
все карты в1
.И есть вариации на этот счет со временем . Это особенно полезно в генеалогии, где написание имени может меняться со временем, но произношение остается схожим.
Есть также подходы, такие как рейтинг соответствия, который был разработан авиакомпаниями для имен (а не американская генеалогия).
Кодирование подхода оценки рейтинга (MRA):
Michael
становитсяMchl
иAnthony
становитсяAnthny
)Полная спецификация для этого может быть найдена на archive.org - обратите внимание, что это «не маленький» (печатная форма составляет 214 страниц).
В сравнении имеет порог соответствия на основе того, как долго текст.
Есть и другие фонетические алгоритмы .
Поэтому я хотел бы, чтобы вы взяли саундекс как есть, применили подход к рейтингу совпадений или измените саундекс на основе румынских и польских согласных .
Помните , что с Soundex, согласные сгруппированы (на польском языке,
m
,n
,ɲ
являются все носовые согласные должны быть сгруппированы, и вы, скорее всего , группа губные, зубные и альвеолярные взрывные - будь они глухими или озвучивает вместе - как должное, я не знаю польский, поэтому не знаю, говорю ли я что-то, что там не так).Затем просто преобразуйте все имена в базе данных в две разные системы soundex и выясните, какие имена имеют наименьший набор коллизий на разных языках. Это дает вам разные имена. Так что
Smith
это не отображается какSmyth
.Это, однако, только решает «имя, которое может столкнуться с другими именами и быть услышанным». Это не относится к другому способу «имя услышано правильно, записано неправильно», и для этого следует сосредоточить внимание на общих именах.
Например, это
Michael
было очень распространенное имя в США с начала 1950-х до конца 1970-х годов. Оно было действительно популярным . Тем не менее, по какой-то причине, названиеMicheal
было довольно популярным в 1950-х годах (поднялось на 83-е место по популярности на своем пике). И я уверен, что люди по имениMicheal
постоянно получали свое имя с ошибкой.Таким образом, вы должны сосредоточиться на именах, где есть одно имя, которое доминирует над популярностью имени для данного произношения. Взглянув на другом потребитель данных для имен по годам, вы можете увидеть , что имена , начинающиеся с джемом ... для мальчика беспорядок с
Jamaal
,Jamal
,Jamar
и другими. Кстати, эти имена имеют немного разные soundexes для американских (J540
,J540
иJ560
-l
иr
находятся в разных группах , хотя они тесно связаны в фонетике). Однако для кого-то, скажем, из Японии, в фонетическом регионе есть только один звук, гдеl
иr
произносится в американском английском. Это также может создать проблему с ведущими согласными, использующими soundex, о которых нужно знать (однажды я работал с японкой, которая называла себя Risa (с буквой «R»), а не с Лизой в качестве романизации своего японского имени).Вы заметите, что мои примеры для Соединенных Штатов. Эти данные легко доступны. Очевидно, есть кое-что для Польши и венгерского языка , и только намеки на общность венгерского имени ... Я подозреваю, что поиск на другом языке, кроме английского, мог бы быть там полезным.
Таким образом, учитывая soundex для имени, несколько столкновений и фактическое написание находятся в наборе столкновений. Предпочтительно, это общее имя. Если посмотреть на этот венгерский список,
Krisztián
то, скорее всего, вы получите орфографические ошибки, ноZoltán
не так (22 место в списке самых распространенных имен детей в 2011 году в Венгрии!). Тем не менее, вы не можете пойти не так, как надоMichael
.источник
Возможно, вы захотите взглянуть на фонетический алгоритм Double Metaphone, который предназначен для обработки слов, произносимых на разных языках. Существует также Metaphone 3, но это стоит денег, чтобы использовать.
источник