Лет ми спик фром май харт

29.05.2011 - 15:22
Авторы: V@s3K, идея IDFY team, за помощь в алгоритме спасибо 2k@y
Использованное ПО: PyCharm 1.0, Python 2.7, Django 1.2
URL: http://trans.thedevel.ru/trans/

Сервис именно с таким кодовым названием был написан во время зимней сессии, но так и не увидел свет, потому что инициаторы всего этого дела пошли зарабатывать деньги, а не делать интересные проекты. Но на выдумывание более эффективного алгоритма было потрачено много интересных часов, поэтому пропадать такое счастье просто не могло. В итоге было решено делать цикл по массиву правил и по одному пытаться применить их к слову. Когда все правила были применены - оставшиеся буквы в слове просто заменялись как в обычном транслите. После вечера тестирований вроде было все почти хорошо и программа работала на моем наборе правил, хотя и английских. Но я с удовлетворением получил фразу "лет ми спик фром май харт". Чуть позже силами вышеописанных товарищей был написан целый набор правил для французского языка и эта работа тоже заслуживает уважения. Я давно хотел сделать какой-нибудь сервис с лингвистами, ну хотя бы так.

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

Об алгоритме

С технической точки зрения язык характеризуется:

1) Списками гласных-согласных с их транскрипциями. Это стандартно.

2) Списком правил перевода (токенов). Вот тут поподробнее:

У нас имеется несколько видов правил:

"~lo": "лоо" - перед токеном гласная

"fa#": "фаа" - после токена следует согласная

"-es": "ес" - слово заканчивается на этот токен

"-pro-": "про" - этот токен в середине слова, не важно какие буквы его окружают

"the-": "зе" - слово начинается с него

"gr": "грр" - просто содержит (наименьший приоритет, то есть -gr приоритетнее, чем gr)

"#y": "ай" - перед токеном согласная

и.т.д.

У правил есть свои приоритеты, если возникают коллизии. Они таковы: приоритет ~ и # выше, чем -, который выше, чем просто "голый" токен.

3) Списком исключений. Ну бывают такие слова, которые не читаются ни по каким правилам.

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

Хотя я не знаю зачем это надо, когда Google Translate давно запустил озвучивание переводов, а недавно сильно улучшил его. Поэтому выкладываю просто похвастаться. И только французский.

Некоторые правила написаны хуево, так что возможны ошибки, например часто путает "н" и "м". Ну а поиграть можете по ссылке выше.

upd: Так как никто не читает это, предупреждаю еще раз: словарь не тестировался, написан хуево, правила некоторые глупые, так что не смотрите на это как на готовый продукт.

Какой-то стих из гугла

Немного криво, но добавив акцент можно спокойно гулять по Парижу

Со французского звучит кривовато, но работает

Ну как было не попробовать :3

ReDetection — 30.05.2011 - 15:41 [89.189.191.13] Linux
>Чуть позже силами вышеописанных товарищей был написан целый набор...
Тукай знает французский? или это о idfy ?
Не он — 30.05.2011 - 23:20 [89.189.191.7] Windows
Это я замутил словарь для транскрипции с французского по справочникам. Так что я теперь вообще знаток великий, мон пти шу-флёр.
V@s3K — 30.05.2011 - 23:21 [178.49.15.6] Mac OS
Да ты молодец, почти все правильно сделал. Наслаждайся творением.
imaginary — 30.05.2011 - 23:26 [178.49.48.111] Windows
со жве ме реасон о прове ме вронг, о васх хис мемори клэан
V@s3K — 30.05.2011 - 23:30 [178.49.15.6] Mac OS
imaginary, я знал, что ты это введешь :D
Артур — 30.05.2011 - 23:33 [89.189.191.19] Windows
Для начала, никто его не бросал. Сайт некоммерческий, поэтому в феврале мы временно переключились на кучу проектов, которые помогут и эту штуку допилить однажды.

Штука планируется эпичная и многим нужная в работе, и в целом довольно интересная, но времени на нее нет. Если есть желающие - можете помочь мне и Саше Савенкову в работе над транслитом.

Во-вторых, пользуясь случаем: мы ищем дизайнера в Новосибирске. Прямо сейчас и еще неделю-две в будущем. (Ну, вдруг сюда дизайнер внезапно заглянет, кто знает?)
ReDetection — 31.05.2011 - 00:12 [89.189.191.13] Linux
ну вот, тут попробовал вставить текст zaz - le long de la route, а оно раз, и 502 Bad Gateway &(
V@s3K — 31.05.2011 - 00:18 [178.49.15.6] Linux
ReDetection, сайт мне сделал, блять!
ЫцЫц — 02.06.2011 - 19:39 [178.49.8.24] Windows
Французский, говоришь? На первом скрине - ни одного верно звучащего слова нет. Это даже при моем ничтожном знании этого убогого языка... У них половина букв в слове не читается, так что это абсолютно неудачный выбор языка для тестирования алгоритма.
А поскольку нет верного результата, ничего хорошего не получится сказать о самом алгоритме и реализации.
V@s3K — 02.06.2011 - 21:25 [178.49.15.6] Linux
ЫцЫц, привет, Бронтозавр! Я думал ты забыл про меня :3
Да, забыл, что не описал саму идею. Добавил.
ЫцЫц — 03.06.2011 - 08:59 [195.239.223.218] Linux
Бронтозавр помнит все и всегда. Просто он постарел, обзавелся семьей, обветшал, хвост уже не так часто генерирует информацию, которую можно без стыда преподносить окружающим.

Во французском часто используются правила, связанные с окончанием слова. Скажем, согласная на конце слова не читается, за исключением каких-то особых букв (например, R, они, блин, почему-то читаются). Однако при этом, если после согласной на конце стоит гласная - согласная читается (а гласная, кажется уже нет).
Более того, французы любят говорить фразы однимБлятьБольшимСловомСука. И при этом правило "гласная после согласной" имеет место быть даже если гласная относится совсем к другому слову. Например:
"Nous" должно читаться как "ну".
"avons" должно читаться как "авон".
Сочетание "Nous avons" читается как "нузавон" (хрен бы знал, почему "s" превратилась в "з").
Символ апострофа используется для сокращения слов (обычно артиклей), что приводит к новой связке слов "le horizon" -> "l'horizon" (не ручаюсь за правильность рода). При этом буква "H" в их языке вообще ущербна и не читается никогда. Даже в начале слова. Даже в связке. Поэтому "l'horizon" читается как "лёризон", мать их.
Поэтому для большей полноты правил придется добавлять новые условия и код.

Ненавижу французский. Ненавижу французов.
V@s3K — 03.06.2011 - 10:56 [178.49.15.6] Mac OS
ЫцЫц, мде, это пиздец :)
Psyhister — 03.06.2011 - 17:42 [89.189.191.12] Linux
Да, французский в этом плане один их самых упоротых языков. Надо тестить или немецкий, или английский, тут всё более однозначно.
V@s3K — 03.06.2011 - 18:20 [10.239.92.7] Mac OS
Psyhister, не я выбирал язык, так что ничего не могу поделать :(
Программисты - рабы. Что им сказали, то и должны делать.
JasonX — 03.06.2011 - 18:54 [89.189.191.12] Windows
ибать ))) ввёл "everything" (все) - получил "веритенг"...

о_О нихуя себе
JasonX — 03.06.2011 - 18:56 [89.189.191.12] Windows
ааа, ток французский... мде... как-то он не очень востребованный..
Морко — 04.06.2011 - 02:29 [178.49.48.111] Windows
Давай сделаем немецкий, я помогу)
V@s3K — 04.06.2011 - 02:37 [178.49.15.6] Mac OS
Морко, да там даже не знание языка нужно, а пол десятка ночей со словарем и выписыванием правил и исключений, а затем месяцы тестирования. Никому такое счастье не надо.
Soulp — 05.06.2011 - 18:39 [178.49.48.111] Mac OS
V@s3K, у меня с пятого класса было по 7 часов немецкого в школе, я эти правила и исключения наизусть помню :3 плюс в дойче их не много :)
V@s3K — 05.06.2011 - 18:55 [178.49.15.6] Mac OS
Soulp,
> CPU iPhone OS 4_2_1 like Mac OS X; ru-ru
ОТДАЙ САШЕ АЙФОН 4, ЖЕНЩИНА!
Развелось яблочек в моем уютненьком.
Ыщгдз — 05.06.2011 - 21:42 [85.26.231.70] Windows
УАХАХАХАХА *дьявольский смех*
ReDetection — 09.06.2011 - 23:18 [89.189.191.13] Mac OS
V@s3K, сосни-ка :D
з.ы. ну чота очень захотелось
nwalker — 25.07.2011 - 01:52 [89.189.191.15] Linux
suddenly, the door was open!
юдденли, хе доор вас опен!

либо я что-то забыл, либо фигня детектид.
V@s3K — 25.07.2011 - 09:56 [213.87.122.6] Mac OS
nwalker, во-первых блять ФРАНЦУЗСКИЙ, во-вторых словарь составлял твой коллега, его пизди
Коллега — 26.07.2011 - 14:44 [89.189.191.7] Windows
Ёманарот, ЗБТ альфа-версии французского словаря обсуждают.
Если интересно, все правила брались из справочника Гиляревского и Старостина, хотя я даже сейчас на паре имен проверил, жесть какая-то получилась.
V@s3K — 26.07.2011 - 16:17 [85.26.231.122] Linux
Коллега, вот я и говорю, нехрен обсуждать тестовый словарь. Там работы куча еще для лингвистов. Я писал лишь алгоритм.
refresh

i