Меню Закрыть

Lf yt jxtym rulf yfxbyftncz c byukbof

Содержание

Здравствуйте, уважаемые читатели блога LifeExample, Давно хотел написать статью о том, как средствами серверного языка PHP реализовать автоматическое исправление неправильной раскладки строки. Все мы пользуемся поисковиками Google и Яндекс, и каждый из вас уже давно привык не думать о том в какой раскладке ввести свой запрос, ведь умный поисковик сам вычислит, что вводимый текст печатается не в той раскладке и выдаст правильный саджест.

Саджест (suggest) – выпадающий список с частыми поисковыми запросами, схожими с введенным словом.

Приведенная иллюстрация демонстрирует, как ведет себя Яндекс при вводе запроса "Cvtyf rjlbhjdrb" (Смена раскладки). Как видите, в выпадающем списке подсказки выдаются в понятной раскладке.

Suggest на PHP как у Яндекса

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

На первый взгляд может показаться, что задача довольно простая, и достаточно прописать соответствие правильных и не правильных символов.

Действительно, применив данную функцию correctString() к переданной строке, мы получим слово в нужной раскладке, но изюминкой задачи является именно выявление необходимости применения такой функции к вводимому тексту?

Как определить, что раскладка неправильная

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


и в во не он на я что с со тот быть а весь это как она по но они к у ты из мы за вы так же от сказать этот который мочь человек о один ещё бы такой только себя своё какой когда уже для вот кто да

Следуя данным частотного словаря С.А. Шарова , всего таких лемм, или еще их можно назвать словоформами, существует 69307 шт.

Конвертировав словоформы в неправильную раскладку, получим примерно такой массив:

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

На том же сайте словаря С.А. Шарова, приведен архив с леммами, отсортированными по частоте использования их в русском языке. Используя, которые можно усовершенствовать алгоримт и увеличить его точность.

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

Тем не менее в крупных проектах, этим методом уже не обойтись. Чтобы реализовать что-то похожее на саджест яндекса я рекомендую использовать библиотеку Text_LangCorrect, написанную на PHP.

Text_LangCorrect – имеет мощный алгоритм вычисления раскладки и ее правильности, и на момент написания статья является чуть ли не единственной доступной библиоткой, позволяющей автоматически изменять раскладку слова.

Сама же библиотека тщательно снабжена комментариями к каждой из ее методов, поэту можно очень быстро разобраться в ее устройстве. При ее использовании можно с лёгкостью конвертировать текст такого формата "смtyf ytправиkmyjq hfcrладки" в читаемый вид "смена неправильной раскладки".

require_once ( ‘ReflectionTypeHint.php’ ) ;
require_once ( ‘Text/LangCorrect.php’ ) ;
require_once ( ‘UTF8.php’ ) ;

$corrector = new Text_LangCorrect ( ) ;
echo iconv ( ‘utf-8’ , ‘windows-1251’ , $corrector -> parse ( ‘смtyf ytправиkmyjq hfcrладки цццюдшауучфьзду.ru’ ) ) ;

Как видите, происходит подключение необходимых файлов для работы библиотеки, создается экземпляр Text_LangCorrect и методом parse() делает все необходимые преобразования.

Выпадающий список подсказок

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

  1. Ввод текста в строку.
  2. Проверка количества введенных символов.
  3. Если символов больше трех, отправлять AJAX запрос с введенным текстом на проверку корректировки.
  4. На сервер обработать введенный текст библиотекой LangCorrect, вычислив верную раскладку.
  5. Взять из базы данных подходящие подсказки в верной раскладке и отправить их в ответ на AJAX.
  6. НА строне клиента JavaScript ‘ом вывести выпадающий список.
Читайте также:  Модуль lenovo k920 vibe z2 pro

На этом хочу завершить описание решения для задачи Автоматического исправление неправильной раскладки строки. У кого есть вопросы, пишите в комментариях, подписывайтесь на RSS рассылку.

Читайте также похожие статьи:

Чтобы не пропустить публикацию следующей статьи подписывайтесь на рассылку по E-mail или RSS ленту блога.

Мы заметили пугающую тенденцию: на различных форумах и блогах люди жалуются, что учат английский уже много лет, но не могут овладеть им. У нас с вами есть разнообразные интернет-ресурсы, возможность общения с иностранцами, языковые курсы и онлайн-школы английского. Что же с нами происходит, почему ничего не получается? Давайте попробуем вместе найти выход из ситуации!

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

Ваши ошибки

1. Слово или дело?

Вы не сможете овладеть английским, пока будете сидеть, сложа руки. Многие говорят: «Я так хочу выучить английский, но ничего не получается, что делать?» Остановимся на слове «делать». Как часто вы что-то ДЕЛАЕТЕ для того, чтобы овладеть языком? Иногда мы не хотим или боимся работать со своей проблемой. Страх неудачи живет в каждом, но пусть он не ослепляет вас, не сбивает с правильного пути. Мы не хотим давать пустых обещаний: да, на овладение языком нужно будет потратить время, язык не дастся «здесь и сейчас». Не бойтесь действовать, изучение английского — работа, в том числе и работа над собой, борьба со своими страхами и недостатками.

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

2. Может, я мало занимаюсь?

Другая крайность. Мы так стремимся поскорее разобраться в английском, что нагружаем себя сверх всякой меры. Занимаемся круглыми сутками, слушаем аудиоуроки, смотрим видео, на выходных запираемся дома и зубрим, зубрим, зубрим. Совершенно естественно, что от перенапряжения мозг не усваивает информацию. Мы с вами не роботы и без перерывов работать не можем. Заниматься ежедневно полезно и эффективно, но не забывайте делать паузы. Зацикленность на английском приведет к переутомлению, вы станете хуже усваивать знания. Everything is good in moderation (все хорошо в меру).

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

3. Насколько важно чужое мнение?

Некоторые люди просят помощи на форумах в Интернете: «Помогите, уже 10/20/30 лет учу английский и не могу выучить». Это вызывает бурю эмоций, «бойцы диванных войск» тут же пишут сотни комментариев. В лучшем случае 1-2 из них — ценные советы, остальные — бессмысленные фразы о том, что в вашем возрасте нет смысла учиться, ничего не получится. Но разве их мнение должно быть для вас авторитетом? Точка зрения общественности интересна каждому человеку, но не принимайте близко к сердцу слова непрофессионалов, ничего не понимающих в предмете обсуждения.

Вывод: Если вы хотите получить действительно ценный совет, обратитесь к профессиональным преподавателям (у них есть свои профессиональные форумы и блоги). Они смогут дать по-настоящему хорошие советы, ведь учителям приходится часто сталкиваться с подобными вопросами. Лучше тратить время на решение своей проблемы, чем на жалобы и обсуждение.

4. О чем мы думаем?

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

Читайте также:  Как запустить модем мтс

Вывод: Давайте думать по-другому: «Впереди столько интересного! Я найду свой подход и выучу английский!» Подобные мысли воодушевляют и дают силы для обучения. Разберитесь в себе. Подумайте, сколько времени вы тратите на размышления о том, что у вас ничего не получается? Не лучше ли потратить драгоценные минуты на созидание, а не критику?

5. А вдруг ошибка?

The man who makes no mistakes does not usually make anything. — Не ошибается тот, кто ничего не делает. — Эдвард Фелпс Некоторые люди так боятся сделать ошибку, показаться неграмотными, что стесняются заговорить по-английски даже наедине с преподавателем, и поэтому отказываются от занятий. Зря, любому студенту нужен опытный учитель, который обнаружит ошибки и поможет от них избавиться. Нет ничего страшного в неидеальном произношении или погрешностях в грамматике. Преподаватель поправляет вас не из вредности, не из желания показаться умным, а чтобы вы поняли, в чем проблема, и исправили свои ошибки.

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

Наши советы

1. Начните с чистого листа

Пересмотрите свой план занятий. Бессистемные «наскоки» на учебник не приносят пользы. Определите, сколько часов на обучение вы можете потратить без ущерба для других занятий, сна и отдыха. Вам необходимо выделить хотя бы 4-5 часов в неделю, притом нет смысла заниматься два дня по 2-3 часа, лучше учиться ежедневно по 30-50 минут.

Задумайтесь над тем, какие способы обучения вы используете. Возможно, следует пересмотреть подход к изучению английского. Вам поможет наша статья «Учим английский в соответствии с типом восприятия информации». Определите свой тип восприятия информации и пользуйтесь советами по изучению английского языка. Надеемся, они вам помогут.

2. Определите, где учить английский

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

3. Не забывайте повторять

Распространенная ошибка большинства изучающих английский: люди полагают, что вызубрив новые слова, они их никогда больше не забудут. Однако человеческая память хитрая и непредсказуемая штука: если мы не будем периодически повторять эту лексику, употреблять ее на практике, через 20-30 дней слова выветрятся из головы и придется учить все заново. Как можно повторять изученное? Смотрите следующий пункт.

4. Думайте на английском языке

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

5. Читайте, это модно!

Чтение англоязычной литературы — простой и доступный способ «погрузиться» в язык, расширить словарный запас и улучшить произношение (если говорите слова вслух). Иностранцы, приезжающие на ПМЖ или учебу в Россию, читают Достоевского, Толстого, Чехова, чтобы быстрее освоить язык. Люди, изучающие английский, уделяют много времени развитию разговорных навыков, пренебрегая книгами, но чтение позволяет получить колоссальные результаты. Начинайте с детских книг или адаптированной литературы. Первые страницы обычно даются с трудом, вы будете запинаться, постоянно сверяться со словарем, но уже через неделю сможете довольно бегло читать на английском языке, научитесь получать удовольствие от этого процесса.

Читайте также:  Виндовс 7 64 бит какая лучше

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

6. Будьте терпеливы

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

7. Хвалите себя и верьте в собственные силы

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

Надеемся, наша статья поможет вам поверить в себя и подвигнет к решительным действиям. Рекомендуем также ознакомиться с другими нашими статьями по этой теме: «6 главных «преград», стоящих на пути изучения английского языка» и «Учим английский язык. Советы для отчаявшихся новичков», они помогут решить некоторые психологические проблемы, если они у вас есть.

Не опускайте руки! Если у вас не получалось учить английский язык раньше, это вовсе не значит, что вы безнадежны. Возможно, вы просто выбрали неправильную дорогу к знаниям. У каждого из нас свой путь в жизни, в любви, в карьере, в изучении английского. Желаем счастливого пути!

Доброго времени суток!

С недавнего времени я занимаюсь разработкой системы чатов, так сказать чаты 3.0. Данная идея пришла после того как познакомился с такой интересной и удобной штукой как comet-сервер Realplexor от dkLab. Но сейчас не об этом…

Основной движок написал, чат работает, пользователи общаются, все вроде бы ничего, но есть одно НО! Все же мы люди и бывает забываем переключить раскладку клавиатуры с английской на русскую, такое бывает. После написания n-го количества слов отправляем сообщение и что видим — написали не в той раскладке, и редко кому захочется заново переписывать этот текст, а читателям не всем захочется переводить Ваши каракули. И решено было придумать какой-нибудь очень простой способ исправления таких сообщений.

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

Полдела сделано осталось составить алгоритм работы и написать функцию.

Алгоритм очень простой:

  1. Переводим строку в нижний регистр
  2. Удаляем ненужные символы
  3. Разбиваем ее на слова
  4. Ищем совпадения слов, которые нашли в википедии, и запоминаем их количество
  5. Если количество совпадений больше или равно указанному нами пределу при котором считать что предложение написано не в правильной раскладке — поменять буквы и символы в предложении на правильные.

Просто! Не так ли?

Функция на php выглядит примерно так:

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

Если кто-то хочет посмотреть этот подход в деле можете зайти в чат

Рекомендуем к прочтению

Добавить комментарий

Ваш адрес email не будет опубликован.