Веб-разработка

индекс
236,88

Проверка орфографии с помощью 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" ?>
<spellrequest textalreadyclipped="0" ignoredups="0" ignoredigits="1" ignoreallcaps="1">
 <text>Текст для проверки</text>
</spellrequest>
ignoredups — подсветка повторов
ignoredigits — считать цифры ошибками
ignoreallcaps — не проверять слова написанные капсом (подсказал pointum )

Если всё успешно, мы получаем ответ вида
<?xml version="1.0" encoding="UTF-8"?>
<spellresult error="0" clipped="0" charschecked="272">
 <c o="27" l="13" s="0"></c>
 <c o="73" l="11" s="1">орфографии и орфографии</c>
 <c o="190" l="11" s="1">пользоваться</c>
 <c o="226" l="13" s="0">пред оставляет пред-оставляет</c>
</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
+84
24 января 2009, 20:37
143

комментарии (45)

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

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

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

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

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

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

думаю, что такие фишки как «проверка орфографии» или «рисование графиков» дешевле сделать своими силами. карты гугловые — да… тут своих ресурсов может не хватить.
0
mezhevikin #
ребят может конечно не в тему, но есть уже скриптик на ajax который проверяет отфография на 15 языках allajax.ru/script/proverka-na-orfografiyu-s-pomoshhyu-ajax-i-google/. предлагаю поднять ссылку в топик!
0
Lond #
Когда-то пытался сдружиться с этим скриптом, но в итоге ничего не получилось, да и русского там, вроде бы нет.
0
mezhevikin #
вроде бы? ты поюзай скрипт, а потом пиши свои вроде. просто в архиве с демкой заменяем строчку googie2.setLanguages({'en': 'English'}); на googie2.setLanguages({'ru': 'Russian', }); и русский появляется!
0
RendeRR #
поменял — не проверяет.
0
RendeRR #
если в googiespell.js добавить в this.org_lang_to_word, тогда работает.
0
Lond #
Если мне приходиться что-то дописывать, чтобы скрипт работал с русским языком, то это и есть отсутствие поддержки русского.

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

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

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

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

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