Найти в Дзене
Блокнот математика

Рубрика "Секреты Вим". Фонетика

Привет, коллеги. Поговорим чуть поподробнее о фонетических словарях, которые Вим поддерживает и которые даже есть в поставке. В предыдущей заметке мы углубились в систему проверки орфографии и узнали, что есть разные алгоритмы для предложения вариантов. В их числе есть и тот, что учитывает фонетику. Это важно для английского языка, в котором enough, например, читается "инаф" и если его написать неправильно, то никакой чисто текстовый алгоритм правильный вариант не предложит. Но и в русском языке не всегда пишэца такк, каг слышыце, так что может быть полезно. Хотя для русского пользы не слишком много, явно есть пространство для улучшения. Выбор алгоритма осуществляет опция spellsuggest. Значение по умолчанию best оптимально для чисто текстового подбора вариантов, а double учитывает и произношение. Это делается, на самом деле, довольно дубово: просто задано отображение букв или буквосочетаний на соответствующий звук. Например, гласные могут быть вообще отсеяны, как будто и нет их. Для ит

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

Кадр из мюзикла My Fair Lady. Слева фонетик проф. Хиггинс.
Кадр из мюзикла My Fair Lady. Слева фонетик проф. Хиггинс.

Выбор алгоритма осуществляет опция spellsuggest. Значение по умолчанию best оптимально для чисто текстового подбора вариантов, а double учитывает и произношение. Это делается, на самом деле, довольно дубово: просто задано отображение букв или буквосочетаний на соответствующий звук. Например, гласные могут быть вообще отсеяны, как будто и нет их. Для итальянского это не годится, а дл рсскг - вплн.

Есть метод SAL (sound alike), более сложный, медленный, но, наверное, более точный. Это если вы свои словари делаете.

Вот например наше слово enough, написанное как inaf, обозначается как неверное (хорошо, что не совпало ни с чем, например "спица" вполне себе слово наряду с разными глаголами "спится" и "спиться"), а метод double предлагает правильный вариант (правда, на 20 или 22-м месте, в разных версиях по-разному).

Или вот слово people. Если написать его pipl, то метод best не найдет правильный вариант, а double найдет (он будет 13-ым).

В русском фонетика работает не блестяще. Если соврать одну букву, правильный вариант найдет и best, а если много, то не найдет и double. И даже наоборот может быть. И даже обычно наоборот: best работает лучше.

Вот пример: "бисжаласные" (мой юный, хотя уже не такой и юный, знакомый искал какой-то детский мультик типа "Безжалостные убийцы" и написал его как умел; Яндекс нашел).

Так вот, с алгоритмом double вариант "безжалостнее" есть в списке, он 33-ий из 41, которые умещаются на мой экран. Вариант "бисжаласныи" не находится вовсе.

Но best находит оба. То есть работает лучше фонетики!

Или вот "потсчод". Один метод предлагает "подсчёт" в седьмой позиции, другой в шестой.

Так что для русского фонетика есть, но не слишком эффективна. Есть поле для работы.

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

:echo soundfold('любовь')
лебевь

А слова "спится", "спиться" и "спица" отображаются в "спетсе" "спетьсе " и "спеце" соответственно. Слово "спеться" тоже отображается в "спетьсе". Хотя по мне так первые три должны отображаться в одно, а последнее - в другое.

Вот ещё тест: слова "дошть дощ дощь дожть дошдь дождь" отображаются в "дешть деш дешь дежть дешдь деждь". Этим словам методы double и best предлагают правильный вариант: дошть - в 23 и 3 позиции; дощ - не находят; дощь - не находит и в 7 позиции; дожть и дошть - в первой позиции оба. Так что best и здесь впереди.

Для английского проработка глубже. Слово enough отображается в *nf. Как и inaf, enaf и даже eenaph. Слово love отображается в lf, как и life. может показаться, что так всё на всё будет похоже, но алгоритм работает неплохо.

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

Если изменений нет, слово возвращается без изменений. Не забудьте проверку орфографии включить!

Попробуйте, это интересно.

Soundfold для фразы "The rain in Spain stays mainly in the plain" выдаёт "@rn n spn sts mnly n @pln" :-) А фраза "How kind of you to let me come" отображается в "hknt f ytlt mkm". Обратите внимание, что слова перемешались.

Удачи, коллеги!

Научно-популярные каналы на Дзене: путеводитель
Новости популярной науки12 марта 2022