Как стать автором
Обновить

Комментарии 23

Интересная статья, спасибо! Но, по-моему, очень не хватает человеческого описания окончательной версии алгоритма.

Напишите, пожалуйста, что именно Вас интересует. Постараюсь дополнить или описать отдельным постом.

В принципе, основа описана в тексте, а фрагменты кода достаточно подробно комментированы. Отсутствуют некоторые фрагменты кода, т.к. они были заточены под конкретную реализацию исходного сайта и БД.

Т.е. повторюсь, основные идеи следующие:

1. Используется N-граммный анализ.
2. Для упрощения анализа имена нормализуются (см. в тексте).
3. Для начальной выборки используется 5-граммный индекс, вернее, его целочисленный хеш.
4. Внутри полученной выборки производится 3-граммный анализ по уникальным 3-граммам.
5. Перед началом вычисления релевантности определяется максимально допустимое число «промахов». При его превышении выисление релевантности прекращается без уточнения.
6. Дополнительно в начальной выборке можно указывать диапазон числа уникальных триграмм, т.к. существует их максимальное соотношение в сравниваемых именах, при превышении которого релевантность будет заведомо ниже заданной границы.

Остальное можно посмотреть в коде и комментариях к нему.

Если что будет непонятно — спрашивайте. Буду рад ответить.

Спасибо. Собственно это и имел в виду.

Вообще Deveraux нифига не Деверю. Французская концовка прямо таки и прет в глаза, что дает нам Девро (вторая е не произносится, и звучит только короткий звук в как 'ве').
Если же вы из тех, кто все на английский манер, то тут тоже никак не деверю, достаточно послушать великий гугл переводчик, скормив ему это слово и нажав на динамик.


Ваша отсылка


Вот приходит в наш родной паспортный стол капитан третьего ранга Jeannette Devereaux[6] и представляется по уставу четко и громко.

на


Жаннетта «Ангел» Деверю — персонаж культовой медиафраншизы "Wing Commander", включающей компьютерные космосимуляторы, стратегии, прочие формы игр, литературные произведения и фильм. Здесь приведена исключительно в связи с тем, что я, не разбираясь в звучании французских фамилий, долгое время считал, что она звучит «Деверо». Иллюстрация ошибочного перевода не «на слух», а «на глаз».

Полнейшая ахинея и незнание французского языка.


Если же кто-то до вас испортил слово, то… к чему это вообще?


Фонетический поиск способен найти имена, записанные с ошибками на слух, но не переведенные дилетантами-любителями.
Да, тоже резануло. На всякий случай полез проверять что там у бельгийцев (по сюжету она всё-таки не француженка), но… Для любого франкофона тут без вариантов. Разве что какие-то диалекты, но в любом случае если тут «самоназвание» отдельно взятого персонажа, то к общим правилам произношения это не относится.
Ещё меньшая проблема в том, что её фамилия вообще-то Deveraux (без третьей «e»), что тоже должно быть [дев(е)рО].
(Это же не японский, чтобы «всякие Ниномаэ» резвились с особенным чтением.)
А вот это интересно. В блогах встречал с третьей «е», а на Кинопоиске этот персонаж записан без нее.

Надо обратиться к первоисточнику. Запущу дома DOSBox и WC первый под ним. И посмотрю, что там пишут.
Я смотрел в Википедии (русской и английской) и на IMDb (должно быть более надёжно, чем в вики).
(В игре могло быть и не так, как в фильме, да.)
Ну, первоосновой является как раз игра. Фильм-то как раз по игре был снят. Там могли написание и исказить.
Ну так я же и писал, что французский я ни разу не знаю.

Во всяком случае, спасибо за это сообщение. Оно является прекрасной иллюстрацией написанному мной насчет перевода «на глаз, а не на слух».

В Интернете в блогах и всяких ЖЖ я встречал именно Деверю, и я думаю, что писали это люди в отличие от меня разбирающиеся во французском языке. В Вике, в статье про фильм — Деверо. Но фильм снимали как раз американоязычные кинодеятели. Они могли и ошибиться. А Вы пишете, что правильно — Девро.

Т.е. это имя уже могло быть написано, минимум, в трех вариантах.

Смысл как раз в том, чтобы найти сходные по написанию имена, а разбираться, принадлежат ли они одному персоналию или разным, и как звучит по-русски правильно — это уже совсем другая задача.
писали это люди в отличие от меня разбирающиеся во французском языке

Не стоит сбрасывать со счетов и бритву Хэнлона :) Как это правильно произносится по-французски уже написали. Даже с учётом бельгийского происхождения Ангела — Деверо ещё допустимо, но Деверю — совершенно непонятно откуда могло взяться.

Ну и ссылочки:

http://wingcommander.wikia.com/wiki/Jeannette_Devereaux
http://www.wcnews.com/wcpedia/Jeannette_Devereaux
http://www.imdb.com/character/ch0018214/
https://en.wikipedia.org/wiki/Devereaux
Ага! Все-таки Devereaux, а не Deveraux, как на КП написано!

Ну что ж… Я встречал еще и «Деверё» :)

Так что, от моего изобретения большая польза :D И оно не только дырку в стене закрывает.
Во всяком случае, думаю, если бы все эти написания присутствовали в этой БД, то анализатор нашел бы все пары сходных. А дальше пусть франко-бельгийцы голову ломают — как там по русски правильно писать.

Кстати, была еще идея сделать кластерный анализ по результатам его работы. Чтобы выдавал не разрозненные пары, а некие конгломераты сходных имен. Так, чтобы на концах списка находились самые отличающиеся, а в середине — максимально похожие на все остальные.

Но не задалось. Заказчик потерял интерес.
Я встречал еще и «Деверё» :)

Devereux именно так и читается, во всяком случае окончание :-) Разница в одну букву в оригинальном написании тут существенна:

Devereaux is a name of French origin. It is a misspelling of the original surname Devereux based on the common English mis-pronunciation «Devero»


Проглатывание среднего звука «е» опционально, но вот между «eau» и «au» особой разницы в произношении (на русском) нет. Первый вариант более мягкий, второй пожёстче, но на нашенском это всё равно именно «о», в отличие от «eu».

P.S. Что-то вспомнились зарубы по поводу Paul Atreides — Пол он или Пауль :-)
Проглатывание среднего звука «е» опционально

Французы как раз и проглатывают этот самый звук в устной речи. Не видел никого, кто бы его произносил, кроме туристов и тех, кто язык начал изучать :)

Я не про французов, а про франкофонов вообще — они очень разные бывают :) Хотя, конечно, далеко не профи, но язык в анамнезе с 8 лет, и пообщаться со многими доводилось, включая гвинейцев.

Они оба одинаковы. О оно и в африке О :)
На русском — да. Но между l'eau и beacoup есть же разница :)
На русском — да. Но между l'eau и beacoup есть же разница :)

Ответ от француженки в полуметре от меня: разницы никакой.


Мадам окончила универ по специальности французский язык.

А разве слово «beacoup» (а не «beaucoup») уже есть во французском?
(Хотя «другой звук о» ([ɔ]) у французов есть, но здесь вроде тот же самый?)
(Ешё хуже с тремя звуками «ё без й»: [ə], [œ] и [ø] — их я никогда не различал.)
А разве слово «beacoup» (а не «beaucoup») уже есть во французском?

Не обратил внимания на пропущенное u и прочли (и я и она) как beaucoup, где eau == au.


А на счет сабжа про закорючки в квадратных скобочках — моя кавалерия будет вечером, ибо [plɛ-nɛr] так тут никто не пишет и не говорит (кроме учебников в школах).


Так что отдам ваш комментарий на съедение моей мадам, как и плюсомет и напишу ответ.

И так, [ɔ] — это носовой звук "con" например и там ничего общего с [o] "beau".


На счет трех звуков — там общего с [о] (тем самым О из beau) нет.

Атрейдес или Атридис? :)

Ну так всё о том же я: Прежде чем спорить о русском написании следует обнаружить предмет спора. Т.е. различные варианты написания. А с этим анализатор худо-бедно справился.

Кстати, обратите внимание в результатах работы есть «Ричард Рихль» и «Ричард Нихль». А еще там в этой БД есть (в пример не вошли) «Ричард Риле» и «Ричард Рили». И все это — один и тот же человек! Но правильное написание — только «Рили» :)…

P.S. Все возможные пары этого имени были анализатором обнаружены с высокой степенью релевантности.
Первый вариант более мягкий, второй пожёстче

Они оба одинаковы. О оно и в африке О :)


Вот неплохое видео про О, правда оно не идеал языка (там с 28 секунды намек на юг франции в произношении maintenant).


С риском могу дать вот этот линк. Так как пополняется людьми, то не факт, что попадете на француза, который разговаривать умеет.

Боюсь, в вашей базе однофамильцев больше, чем задублированных персон. А это значит, что ваше решение не имеет практического смысла.

Задача решается элементарно по дополнительным признакам: дата рождения, год, фильмография и т.п.
Боюсь, я не вполне подробно описал суть проблемы.

1. БД персоналий создавалась полуавтоматически на основании списка актеров/режиссеров и прочих действующих лиц к фильму. Этот список представлял собой обычную текстовую строку, разделенную запятыми.
При добавлении фильма строка парсилась скриптом. Если имя уже присутствовало в БД, то создавалась связь между страничкой фильма и страничкой персоны. Если имени в БД еще не было, то страничка персоны (пустая) сначала создавалась.
Если имя в строке-списке было написано с ошибкой, то под него создавалась новая страница. Если ошибка была вовремя обнаружена и исправлена, то связь пересоздавалась, но ошибочная страница оставалась.
Если же ошибка не была исправлена, то получалось у одной персоны несколько страниц с разным написанием имени и с разным набором фильмов.

2. Дата рождения/смерти, место рождения и другие данные заполнялись теми же энтузиастами по мере возможностей и желания. Если страниц одного актера было несколько, то на одной могли быть эти данные, а на другой — биография и т.д. Причем, заполненных страниц было гораздо меньше, чем незаполненных.

3. Однофамильцы, действительно, есть. И достаточно много. Так что еще стояла задача их поиска и разделения их на разные страницы. Но это немного другая задача. Автоматически она не решается — только ручным анализом фильмографий и сравнением с другими БД, например с IMDb.
Только вот дело в том, что пока однофамильцы не разделены, у них всего одна страничка на всех. А если разделены, то каждому присвоен уникальный номер, например «Дэвид Прайс (II)». Поэтому их не могло быть «много» по определению. Либо на всех одна страница, либо их имена различаются уникальным номером.
А вот разных страниц одной персоны могло быть 2-3, а то и 4. Например, могло быть 4 страницы с такими именами:
  • Так Сакагути
  • Так Сакагучи
  • Сакагучи Так
  • Сакагути Так

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

Во-первых, БД «худела», избавляясь от мусора. Поиск выдавал одну страницу, а не несколько, отличающихся только разным порядком слов.
Во-вторых, из нее удалялись имена с ошибочным написанием.
В-третьих, такие страницы объединялись — объединялись фильмографии.

Так что, практический смысл был вполне определенный.

Во всяком случае, среди найденных пар с релевантностью 1.0 было более 80% страниц двойников с разным порядком слов или с разными знаками препинания. Например, в одном прозвище написано в простых кавычках, а в другом — в двойных. Остальные принадлежали разделенным тезкам/однофамильцам.

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