API Яндекс Лінгвістики під
Після відвідування Yet another Conference 2013 у мене виникла ідея написати API для всіх сервісів яндекс лінгвістики під .NET. Після нетривалого ковтання таких бібліотек на щастя не виявилося. Незважаючи на те, що може вона нікому особливо і не знадобиться, я все ж таки вирішив реалізувати її хоча б для того, щоб попрактикуватися з RestSharp, тестуванням та різними функціями гітхабу (issuers, release, markdown та ін.). Крім того, у процесі реалізації довелося зіткнутися з цікавим алгоритмом порівняння рядків, про який я згадаю у топіці.
Відразу кидаю посилання на вихідні та бінарики на GitHub: Code, Binary
Реалізовані API
- Яндекс.Предиктор.Даний сервіс дозволяє програмам отримувати у вигляді підказок найбільш ймовірне продовження слова або фрази. Предиктор також враховує помилки у вихідному запиті. Це полегшує процес введення тексту, особливо на мобільних пристроях.
- Яндекс.Словник.Даний сервіс дозволяє програмам отримувати докладні словникові статті з машинних словників Яндекса. Статті містять згруповані переклади, інформацію про частини мови, приклади та транскрипцію для англійських слів.
- Яндекс.Переклад.Переклад тексту для більш ніж 30 мов.
- Яндекс.Спеллер.Сервіс перевірки правопису, який допомагає знаходити та виправляти орфографічні помилки. Робота сервісу полягає в використанні орфографічного словника. Наразі Спеллер перевіряє тексти українською, українською та англійською мовами.
Розширена функція підрахунку відстані Дамерау-Левенштейна
У процесі реалізації спеллера мені захотілося, щоб користувачеві відображався як виправлений варіант тексту, а й помилки у ньому. На думку відразу спала думка про відстань Левейштейна. Однак:
- Даний алгоритм не враховує транспозиційних помилок, якими є 80% при наборі тексту (дані з вікіпедії).
- Даний алгоритм він повертаєвідстань, а непозиціїпомилок у новому слові.
Таким чином було реалізовано алгоритм для пошуку наступних помилок у помилковому (word) та коректному (correctedWord) словах:
- Заміна.Приклад: синхрафазатрон -> синхрпрофазпротрон
- Вставка.Приклад: синхрофазотр -> синхрофазотрвін
- Видалення.Приклад: синнхрофаазотрон -> сінхрофазотрон
- Транспозиція.Приклад: синхрофазортон -> синхрофазотрвін
Інтерфейс був реалізований на WinForms з надією, що програма буде запускатися і на Mono. Проте на ньому тестування не проводилось.

А у нас тут можна отримати грант на тестовий період Яндекс.Хмари. Варто лише у полі «секретний пароль» запровадити «Хабр»