Как определить язык текста?
У меня есть форма, которая позволяет пользователям вводить фрагменты текста. Так как же определить язык введенного текста?
Конкретно эти языки сейчас:
Арабский: هذه هي بعض النصوص العربية
Китайский: 这是一些阿拉伯文字
Японский: これは、いくつかのアラビア語の キ ス ス ト で す
[Редактировать] Обнаружение работает с текстом, который также извлекается через API (браузер не задействован)
5 ответов
Вы можете выяснить, являются ли символы из арабского, китайского или японского разделов карты Unicode.
Если вы посмотрите на список в Википедии, вы увидите, что у каждого из этих языков есть много разделов карты. Но вы не делаете перевод, поэтому вам не нужно беспокоиться о каждом последнем глифе.
Например, ваш китайский текст начинается (в шестнадцатеричном формате) 0x8FD9 0x662F 0x4E00 - и все это в разделе "Объединенные идеограммы CJK", который является китайским. Вот несколько диапазонов, с которых можно начать:
Арабский (0600–06FF)
японский язык
- Хирагана (3040–309F)
- Катакана (30A0–30FF)
- Канбун (3190–319F)
китайский язык
- Объединенные идеографы CJK (4E00–9FFF)
(Я получил гекс для вашего китайского, используя конвертер китайского в юникод.)
Вы можете использовать API Google Ajax для определения языка фрагмента текста.
Предположительно угадать язык пользователя, чтобы отобразить ответы на соответствующем языке. А как насчет проверки настроек браузера для предпочитаемых языков? Получите это из HTTP-заголовка Accept-Language. Смотрите раздел 14.4 здесь.
Я исследую то же самое для серверной части. На данный момент я нашел https://code.google.com/p/language-detection/. Надеюсь, это кому-нибудь поможет.
Вы можете использовать https://detectlanguage.com/ который представляет собой сборку веб-сервиса для CLD2.