Проверка орфографии с помощью Google

    Иногда в проекте требуется проверить данные на предмет орфографических ошибок, не полагаясь на познания пользователя по части языков. Тут нам сможет помочь компания Google, с таким их сервисом, как проверка орфографии, используемым в Google Toolbar. Но, к сожалению, Google не предоставляет открытого API для работы с ним.

    Итак, краткое описание:
    Для того, чтобы проверить текст нам нужно отослать его в POST на https://google.com/tbproxy/spell?lang=ru, где для смены языка следует заменить значение параметра lang на соответствующий по ISO 3166-1 alpha-2. Текст оформляется в XML вида:
    <?xml version="1.0" encoding="UTF-8" ?><br/>
    <spellrequest textalreadyclipped="0" ignoredups="0" ignoredigits="1" ignoreallcaps="1"><br/>
     <text>Текст для проверки</text><br/>
    </spellrequest>
    ignoredups — подсветка повторов
    ignoredigits — считать цифры ошибками
    ignoreallcaps — не проверять слова написанные капсом (подсказал pointum)

    Если всё успешно, мы получаем ответ вида
    <?xml version="1.0" encoding="UTF-8"?><br><spellresult error="0" clipped="0" charschecked="272"><br> <c o="27" l="13" s="0"></c><br> <c o="73" l="11" s="1">орфографии и орфографии</c><br> <c o="190" l="11" s="1">пользоваться</c><br> <c o="226" l="13" s="0">пред оставляет пред-оставляет</c><br></spellresult>
    Атрибуты тега spellresult:
    error — произошла ли ошибка
    charschecked — количество проверенных символов

    В нем идет перечисление допущенных ошибок (теги c), их параметры:
    o — начало исходного слова в тексте
    l — длина этого слова
    s — точность результата

    В самом теге c содержатся предполагаемые варианты написания слов, разделенные символом \t.

    P.S. Когда этот текст уже был написан, случайно наткнулся на статью в блоге Paul Welter, которая, в принципе, описывает тоже самое…


    UPD: Пользователь wayly написал на PHP класс для проверки текста с помощью этого сервиса, скачать можно по ссылке proxysoft.ru/files/spellchecker.zip (зеркало).

    UPD2: mezhevikin подсказал ajax-решение с использованием этого сервиса — orangoo.com/labs/?page_id=3

    UPD3: Список поддерживаемых языков

    _________
    Текст подготовлен в ХабраРедакторе
    Код подсвечен в Source Code Highlighter
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама
    Комментарии 45
    • +1
      Осталось теперь это красиво прикрутить с помощью JavaScript.
      • 0
        К Tinymce прикрутили. Яркий пример — Wordpress.
        Только там проблема с русской кодировкой. Как исправить
        • +1
          Кстати, да.
          Родной php-файлик для проверки орфографии через Google API лежит в папочке wp-includes/js/tinymce/plugins/spellchecker/classes/
          Если кого обламывает разбираться в интерфейсах — написал для себя небольшой класс. Забрать можете здесь: proxysoft.ru/files/spellchecker.zip

          На JS, думаю, тоже вскоре прикрутить получится. Несложно, если на вскидку, должно быть…
      • 0
        спасибо за статью, как раз интересовался этим вопросом.
        у меня еще два вопроса по этой теме, может кто в курсе:
        1. как гугл пополняет словари и языки проверки, есть ли возможность добавить свой?
        2. встречал ли кто php-скриптов проверки посредством hunspell словаря и есть ли резон их делать/использовать?
        • +2
          >1. как гугл пополняет словари и языки проверки, есть ли возможность добавить свой?
          у вас есть свой словарь? тогда зачем вам гугл :)
          • 0
            приступ альтруизма, хочу поделиться с миром.
        • 0
          Спасибо, очень полезно. Куда прикрутить найдется :)
          Один лишь вопрос, гугл не обидится на большое количество запросов? А то мало ли…
          • +1
            Да им, скорее всего, не привыкать :)
          • 0
            Хабраэффект? Не грузится.
            • +1
              Если Вы о том, что страница пустая, то это нормально, посмотрите исходник ;)
              • +3
                у гугла стандартная нагрузка наверное поболя любого хабраэффекта.
              • НЛО прилетело и опубликовало эту надпись здесь
                • 0
                  Возможно Вы правы, но Гугл ведь пользуется, при том довольно давно…
                  • НЛО прилетело и опубликовало эту надпись здесь
                    • 0
                      Тут Вы правы, но я склонен принимать это, как плату за простоту использования, отсутствие необходимости тянуть лишние словари и уменьшение нагрузки на собственный сервер, хотя не думаю, что в случае смены спецификации, разработка «багфиксов» для уже существующих проектов займет много времени :)

                      Тем более, меня не покидает робкая надежда на то, что Гугл в скором будущем откроет и эту «вкусность» :)
                      • НЛО прилетело и опубликовало эту надпись здесь
                        • 0
                          Честно говоря, не имею ни малейшего представления куда обращаться и что говорить — никогда не сталкивался с подобными задачами…
                • 0
                  Спасибо, недавно была необходимость проверить орфографию, про гуглотулбар не знал.
                  • 0
                    Мне кажется, ignoreallcaps означает не проверять слова написанные большими буквами (капсом).
                    • 0
                      Действительно, Вы правы. Сейчас исправлю.
                    • +1
                      Отличный пост!
                      Может быть имеет смысл создать отдельный блог «Google API»? Все посты на эту тему очень интересны.
                      • 0
                        Согласен, тема довольно интересная, но о блоге ничего ответить Вам не смогу, т.к. сам не шибко разбираюсь в предоставляемых Гуглом инструментах, хотя был бы рад узнать о них больше от более опытных авторов :)
                      • 0
                        А не прикроют?

                        Им-то от этого дела никакого профита, только лишняя нагрузка.
                        • 0
                          Они смотрят шире:
                          — google вам предоставят средства (их очень много!),
                          — вы делаете сайты
                          — размещаете на них рекламу
                          — реклама крутится — все довольны :-)
                          Конечно, вы можете разместить рекламу бегуна… но… google, видимо, исходит из того, что скоро выбора у вас не останется :-/
                        • 0
                          Вот бы ещё прикрутили этот механизм к хабру, последний немного поднялся бы в моих глазах :)
                          • 0
                            Было бы неплохо, но если учесть, что большинство браузеров имеют встроенные средства для проверки орфографии, то это не кажется такой уж необходимой мерой.
                            • 0
                              совершенно не нужно… ведь даже Пушкин не любил русский язык без ошибки!
                            • 0
                              гугл умеет ещё очень красивые графики рисовать на основе скармливаемых ему данных…
                              вопрос только в том, а стоит ли доверять выполнение некоторого спектра задач стороннему и в целом независимому от разработчика сервису?
                              • 0
                                А вы используейте интерфейсы. Они не просто так придуманы. Максимум, что прийдется вам сделать после того, как Гугля закроет сервис (хаха) — написать свой класс для рисования. И код не прийдется перечесывать ;)
                                • 0
                                  >Максимум, что прийдется вам сделать после того, как Гугля закроет сервис (хаха) — написать свой класс для рисования

                                  Я для рисования красивых графиков (php) посоветовал бы pchart — умеет много, документация хорошая. Думаю многим будет полезно.
                                  • 0
                                    штука хорошая, но подозреваю, что там прилично ещё багов…
                                    сходу вот нашёл типичную багу большинства рисовалок пайчартов:
                                    mrdamage.ru/photo/piechart_error.jpg
                                  • 0
                                    хорошо это тока на словах. чтобы «написать класс» нада нанять разработчиков, ждать, пока они подготовят собственное предложение, спрограммируют всё, ну и наконец зальют на сервер и протестируют.
                                    имхо, есть вероятность «попасть» на деньги и время.
                                    • 0
                                      А вы желаете съесть рыбку не заплатив? За все нужно платить — желаете вы этого или нет.

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

                                        думаю, что такие фишки как «проверка орфографии» или «рисование графиков» дешевле сделать своими силами. карты гугловые — да… тут своих ресурсов может не хватить.
                                • НЛО прилетело и опубликовало эту надпись здесь
                                  • 0
                                    Когда-то пытался сдружиться с этим скриптом, но в итоге ничего не получилось, да и русского там, вроде бы нет.
                                    • НЛО прилетело и опубликовало эту надпись здесь
                                      • 0
                                        поменял — не проверяет.
                                        • 0
                                          если в googiespell.js добавить в this.org_lang_to_word, тогда работает.
                                          • 0
                                            Если мне приходиться что-то дописывать, чтобы скрипт работал с русским языком, то это и есть отсутствие поддержки русского.

                                            Только-что его поставил и вспомнил, почему я с ним не подружился
                                            Uncaught Error: Permission denied localhost/googiespell/AJS.js (line 623)

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

                                            Хотя, думаю Вы правы, в статью добавить стоит.
                                      • 0
                                        есть ли какие-либо ограничения на длину текстов?
                                        • +1
                                          Спасибо. Еще одна полезная вещь рядом с google translate с помощью GET запроса
                                          • 0
                                            code.google.com/apis/ajax/playground/#translate
                                          • +1
                                            Плохо, что вся проверка ограничивается только сверкой слов со словарём словоформ.
                                            Соглашусь, это конечно лучше, чем ничего.

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

                                              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.