Найти:

Жили-были старик со старухой и решили они однажды написать отраслевую поисковую систему по строительному рынку, которая могла бы искать только по избранным сайтам коммерческих компаний и, соответственно, выдавать более качественные и концентрированные результаты поиска. Скоро дело делается, да не скоро сказка сказывается. Написали они такую поисковую систему и запустили ее в эксплуатацию. И что же они заметили!? Оказывается, строительным рынком очень интересуются русскоязычные «бизнесмены», живущие за рубежом. Но вот проблема, они очень часто пишут запросы в латинской транслитерации, потому что за кордоном, видимо, не каждому удается под рукой найти клавиатуру с русской раскладкой, да и не зачем, так как самый мощный поисковик СуперМегаГугл умеет обратно транслитерировать. А вот старик со старухой производить обратную транслитерацию не умели.

И вот. Решили они написать алгоритм обратной транслитерации, да не тут-то было. Задачка эта оказалась очень не простой. Задача эта, выражаясь математическим языком, некорректная и не имеет единственного решения. А спрашивается почему!? А потому что существует множество таблиц-перекодировок, существует даже несколько переизданий ГОСТ, но люди не знают об этих самых ГОСТ-ах, да и сами эти стандарты не гарантируют однозначную конвертацию русских слов на латиницу и обратно. И пишут люди в «транслите» как им вздумается. И они в чем-то очень даже правы.

Стали старик со старухой исследовать эту проблему с помощью Интернета и ничего не нашли (ну, почти ничего), кроме этих самых таблиц для прямой транслитерации из русского на латиницу и академической задачки для первокурсников поиска обратной разряженной матрицы методом Гаусса. Задумались, а как же СуперМегаГугл умеет это делать!? Исследовали-исследовали и пришли к выводу, что СуперМегаГугл для обратной транслитерации, судя по всему, использует всю мощь своих индексных многотерабайтных баз-данных, в которых ищет наиболее вероятное (релевантное) соответствие для различных вариантов. Ну и как же, спрашивается, воспользоваться СуперМегаГугловскими индексными базами данных для своих меркантильных целей!? Да никак!

И стали старик со старухой горевать и слезы проливать. Но тут прилетела фея по имени Эврика и ударила старика по голове своей палкой. И сказал старик - «Есть идея! А что если мы возьмем много-много книжек и словарей и обучим простейшую нейронную сеть всем возможным словам русского языка. И будет эта нейронная сеть выдавать вероятность русского слова в общеупотребительной речи среднестатистического россиянина с высшим образованием!?» Старуха ответила: «Ты чего, блинофф американских объелся? И сколько же будет весить твоя нейросеть, если она запомнит все слова? Столько же, сколько СуперМегаГугловские индексные базы данных?» Но тут фея по имени Эврика опять ударила старика по башке и он сказал - «А зачем нам запоминать все слова, когда можно запоминать только набор слогов, за которым следуют варианты следующих слогов!? Ведь словообразование и вся парадигма слова восходит от корня, который чаще всего состоит из одного слога!?»

Старуха ответила – «Да, тогда твоя нейросеть будет весить намного меньше и, возможно, вся разместиться в памяти обычного ПК, а это очень хорошо. Это ведь будет всего лишь двухслойный персептрон.»

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

Осталась одна проблемка в задаче обратной транслитерации – учесть все возможные варианты написания русских слов в латинском варианте. А это тоже задачка не из простых, так как для некоторых длинных сложносоставных слов количество комбинаций написания слова в латинском «транслите» стремиться к M в N-ой степени, где M-среднее количество вариантов написания буквы латиницей, а N – среднее количество букв в русском слове. Получается, что для некоторых слов количество вариантов может превышать цифру с 6-10 нолями?

На этот раз фея по имени Эврика ударила старуху по голове. И она сказала – «Так ведь это же классическая задача минимизации многомерного функционала!? Правда сам по себе функционал не дифференцируемый и не относится к множеству гладких функций… и, судя по всему, градиентными методами минимизировать функционал не получиться. Зато у нас есть генетический алгоритм!»

Konec skazki. Conets skazki. Conec ckazki. Konetc skazki. Conetc skazki.

И так. Мы имеем:

  1. Таблицы со всеми возможными вариантами перекодировки латинских букв и их сочетаний в русские буквы.
  2. Генетический алгоритм для оптимального перебора всех возможных вариантов.
  3. И нейросеть, которая «знает» много русских слов.

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

Хочу протестировать транслитератор!



сайты наших друзей
изучение microsoft access
Полюбуйтесь. Я узнал принудительные организация банкетов.