Как найти трудно написание названий?


16

Вот вопрос, который, я считаю, может быть решен с помощью некоторого анализа данных и сложного алгоритма, но я не совсем знаю, как. Любые указатели относительно того, какие источники данных использовать и какой алгоритм применять, приветствуются.

Справочная информация: я румынско-венгерский, который ждет ребенка от польско-украинского и не совсем решил, в какой стране мы хотим обосноваться. Как вы можете ожидать, выбор данного имени имеет первостепенное значение и вызывает горячие споры. Со своей стороны, я по-прежнему травмирован всеми трудностями, которые мне пришлось пережить, когда кто-то неправильно написал мое имя, когда я переезжал из одной страны в другую. Например, если вы назвали «Адриан» вы были благословлены в Румынии, только чтобы обнаружить , что вы в конечном итоге быть «Адри е п» некоторый официальный французский документ. Поэтому мое единственное требование - сделать так, чтобы в некоторых европейских странах было неправильно написано имя ребенка.

Постановка проблемы: учитывая ряд стран, например, Францию, Германию, Швецию, Польшу и Румынию, найдите список названий, которые при правильном произнесении вряд ли будут ошибаться местными жителями.

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

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

Исходные мысли : основная проблема заключается в том, как реализовать p (c, n) . Можно попытаться приблизить это с помощью эвристики. Очевидно, что имя может быть написано с ошибкой в ​​двух случаях:

  1. Это мало используется в этой стране.
  2. Это похоже на другое имя, которое не мало используется в этой стране.

Я не уверен, как я мог бы использовать Интернет, например, Википедию, чтобы эффективно ответить на эти два вопроса. Как можно было бы перечислить только довольно часто используемые имена в стране? Как можно искать похожие по буквам?


1
Я не уверен, что популярность сильно повлияет на вероятность орфографических ошибок по сравнению с малым расстоянием редактирования до других имен. Например, Ханна звучит похоже / идентично Ханне и Анне , а Лукас похож на Лука и Лукаса . Как только вы сможете получить список имен для каждой страны, вы можете начать кластеризацию на малых расстояниях редактирования.
Am

Я думаю, что это также связано с популярностью. Никто не произносил бы слово « Анна» на румынском языке, так как двойное n на этом языке просто странно. Точно так же французский человек, скорее всего, напишет по- христиански, даже если вы произнесете это без h . (Пун задумано.: D)
user1202136

5
Прагматичный подход заключается в использовании GUID.
toniedzwiedz

1
Отличная ссылка на XKCD. Но не забывайте, столики Литтл Бобби ;-) xkcd.com/327
Моуг говорит восстановить Монику

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

Ответы:


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, ɲявляются все носовые согласные должны быть сгруппированы, и вы, скорее всего , группа губные, зубные и альвеолярные взрывные - будь они глухими или озвучивает вместе - как должное, я не знаю польский, поэтому не знаю, говорю ли я что-то, что там не так).

Затем просто преобразуйте все имена в базе данных в две разные системы 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.


2
Отличный ответ! Я постараюсь реализовать это, и как только я закончу, я делюсь кодом и принимаю ваш ответ.
user1202136

2
Попытка реализовать эту идею. Не совсем прохождение "пользовательского тестирования". :) github.com/cristiklein/idemscriptent-given-names
user1202136

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

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

1

Возможно, вы захотите взглянуть на фонетический алгоритм Double Metaphone, который предназначен для обработки слов, произносимых на разных языках. Существует также Metaphone 3, но это стоит денег, чтобы использовать.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.