Пользователь
0,0
рейтинг
24 января 2009 в 20:37

Разработка → Проверка орфографии с помощью 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
Артём Полюхович @Lond
карма
25,5
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (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?

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