Мои 2 цента. Учитывая тот факт, что translate.google.com является статистическим механизмом машинного перевода и «Необоснованной эффективностью данных» от А. Галеви, П. Норвиг (директор по исследованиям в Google) и Ф. Перейра: Я делаю предположение (держу пари), что это статистически управляемая проверка орфографии .
Как это может работать: вы собираете очень большой корпус языка, который вы хотите проверить правописанием. Этот корпус хранится в виде таблиц фраз в адаптированных структурах данных (например, массивы суффиксов , например, если вам нужно подсчитать подмножества n-грамм ), которые отслеживают количество (таким образом, оценочный вероятность) количество н-грамм.
Например, если ваш корпус состоит только из:
I had bean soup last diner.
Из этой записи вы создадите следующие биграммы (наборы из 2 слов):
I had, had bean, bean soup, soup last, last diner
и триграммы (наборы из 3 слов):
I had bean, had bean soup, bean soup last, soup last diner
Но они будут сокращены с помощью тестов статистической значимости, например: мы можем предположить, что триграмма
I had bean
исчезнет из таблицы фраз.
Теперь, проверка орфографии будет только смотреть на эти большие фразы и проверять "вероятности". (Вам нужна хорошая инфраструктура для хранения этих фраз-таблиц в эффективной структуре данных и в оперативной памяти, у Google она есть для translate.google.com, почему бы и нет? Это проще, чем статистический машинный перевод.)
Пример: вы вводите
I had been soup
и в фразе есть
had bean soup
триграмма с гораздо большей вероятностью, чем то, что вы только что набрали! В самом деле, вам нужно всего лишь изменить одно слово (это «не очень отдаленная» триграмма), чтобы получить триграмму с гораздо большей вероятностью. Должна быть оценочная функция, имеющая дело с компромиссом расстояние / вероятность. Это расстояние можно даже рассчитать в терминах символов: мы выполняем проверку орфографии, а не машинный перевод.
Это только мое гипотетическое мнение. ;)