мы поможем Вам общаться

Aten

Агентство онлайн переводов

О нас :: Тарифы :: Заказ :: Получить :: Партнерам :: F.A.Q. :: Информация :: English :  

О нас
Перевести текст
Тарифы
Способы оплаты
Порядок оформления
Условия и соглашения
Оформить заказ
Получить перевод
Заработать
Партнерам
Предложения
Переводчикам
Регистрация
Вход
F.A.Q.
Уведомление о рисках
Контакты
Дополнительно
SMS по e-mail
Пополнение счета
Информация

 

Вход для партнера
Логин:
Пароль:
Регистрация

Принимаем валюту



Применение API Яндекса для автоматического перевода текстов

Категория: Новости о переводах

Применение API Яндекса для автоматического перевода текстов

После того, как Google закрыл свои API для перевода обострилась проблема поиска онлайн-сервиса, котрый обеспечил бы машинный перевод.

Довольно известных сервисов, которые могут обеспечить автоматический, существует немало, например, Промт, Прагма и т.д.. Существует возможность с помощью PHP смоделировать обращение к странице такого сервиса и получить с нее результат перевода. Однако почти все такие сервисы на простой GET или POST запрос возвращают не результат перевода, а полную страницу со всем ее содержимым, начиная с DTD. А это нужно далеко не всегда.

Нам известно только два сервиса, которые выдают на запрос только результат перевода, это Яндекс и Microsoft Bing. При этом Яндексом проще проще пользоваться, он с русского и на русский, но этими направлениями все и ограничивается, что сразу является и недостатком. Например, если нужен перевод с украинского на английский, то его нужно делать в два прохода, через промежуточный русский перевод.

У Bing нет такого недостатка, но он не лишен своих собственных:

  • качество перевода с участием русского или украинского языка невысокое и требуют большого обэема работ по правке

  • бесплатное применение Bing имеет ограничения

  • чтобы использовать Bing, нужно иметь идентификатор веб-приложения — appID, который в пинципе можно получить бесплатно, но процесс получения и предварительной регистрации достаточно длителен

Так что с сервисом мы определились — это Яндекс. Определим задачи для библиотеки перевода:

  • Получение языков, с которых и на которые можно переводить, и их допустимых комбинаций

  • Проведение перевода

Нужно учитывать, что из-за того, что для передачи текста Яндекс использует запросы типа GET, объем ограничен приблизительно 2000 символов за один раз. Это не очень много, чуть больше стандартной страницы. Так что добавим еще одну задачу:

  • Обеспечение перевода больших текстов

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

  • Обеспечение кеширования

  • Возможность редактирования сохраненного текста

Исходные коды Яндекс.Переводчика доступны в репозитории Гугла и задокументированы на русском языке.

Языки перевода

Класс Yandex_Translate содержит три метода, названия которых говорят сами за себя:

yandexGetLangsPairs() — получение доступных пар языков FROM->TO

yandexGet_FROM_Langs()

yandexGet_TO_Langs()

Пример (этот пример — полный, ниже подключение файлов, создание экземпляра класса, элементы форматирования вывода и пр. буду опущены.)

include_once 'Yandex_Translate.php';

$pairs = $translator->yandexGetLangsPairs();

print_r($pairs);

Получим вот такие комбинации (нужно следить, потому что они периодически меняются):

[0] => en-ru

[1] => ru-en

[2] => ru-uk

[3] => uk-ru

[4] => pl-ru

[5] => ru-pl

[6] => tr-ru

[7] => ru-tr

[8] => de-ru

[9] => ru-de

[10] => fr-ru

[11] => ru-fr

[12] => it-ru

[13] => es-ru

[14] => ru-es

Как обращалось внимание выше, здесь присутствуют только пары с ru.

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

Перевод

Применяется метод с тремя аргументами: с какого языка, на какой, и сам переводимый текст.

Здесть важное свойство eolSymbol — окончание строки. Если его установить неверно, не будет форматирования выходного текста.

Пример:

$text = file_get_contents('text.txt');

$translatedText = $translator->yandexTranslate('ru', 'uk', $text);

echo $translatedText;

Начало файла text.txt:

Марио Пьюзо Крестный отец

Посвящается Энтони Клири

КНИГА ПЕРВАЯ

За всяким большим состоянием кроется преступление.

Результат выполнения скрипта:

Маріо п’юзо Хрещений батько

Присвячується Ентоні Клірі

ПЕРША КНИГА

За кожним великим станом криється злочин.

В принципе получившийся перевод неплохой, но требует исправления.

Перевод больших текстов

Для перевода больших текстов служит абстрактный класс Big_Text_Translate

Принцип его работы следующий: сначала текст разбивается на предложения с применением разделителя sentensesDelimiter (по умолчанию это точка).

Затем предложения собираются в текстовые фрагменты, размер которых не превышает заданного значения symbolLimit (по умолчанию 2000 знаков).

Текстовые фрагменты готовы для перевода, семантика и форматирование — сохранены. Формированием фрагментов занимается статический метод toBigPieces, на его выходе — массив.

Метод fromBigPieces склеивает переведенные фрагменты обратно в цельный текст.

Пример:

$bigText = file_get_contents('text_big.txt');

$textArray = Big_Text_Translate::toBigPieces($bigText);

$numberOfTextItems = count($textArray);

foreach ($textArray as $key=>$textItem){

//Показываем прогресс перевода

echo 'Переведен фрагмент '.$key.' из '.$numberOfTextItems;

flush();

$translatedItem = $translator->yandexTranslate('ru', 'uk', $textItem);

$translatedArray[$key] = $translatedItem;

}

$translatedBigText = Big_Text_Translate::fromBigPieces($translatedArray);

echo $translatedBigText;

Сергей Вэй
25.02.2012

en2ru.com

Версия для печати

Англо-русский словарь Dict EN-RU
10.10.2013

Abbyy выпустила Android версию TextGrabber + Translator
01.01.2013

Яндекс запускает мобильный сервис Яндекс.Перевод как приложение для iPhone
12.12.2012

Особенности электронного словаря Slovoed
10.12.2012

Новости о переводах...


Англо-русский словарь Dict EN-RU
Abbyy выпустила Android версию TextGrabber + Translator
Яндекс запускает мобильный сервис Яндекс.Перевод как приложение для iPhone
Особенности электронного словаря Slovoed
На YouTube стал доступен перевод русской речи в субтитры
Для iPhone и iPad появился новый переводчик Voice Travel Mate
На Android появилась программа LinguaLeo для изучения английского языка
Система подсказок при поиске в Яндекс становится совершеннее
LINGOAL объединяет веб браузер с изучением английского
Возможности электронных переводчиков
Google Translate для Android научился переводить текст с фотографий
Разговорник для iPhone, iPad и Android без доступа в интернет
Word Lens, мгновенный переводчик для смартфонов
Переводчик Яндекса вышел из бета-версии
Assistant AT-1412 Travel – электронный переводчик

Все статьи...

     
Сертификат Copyright© Aten - Агентство онлайн переводов, 2004 - 2012 Принимаем WebMoney