Как определить язык текста?

У меня есть форма, которая позволяет пользователям вводить фрагменты текста. Так как же определить язык введенного текста?

Конкретно эти языки сейчас:

Арабский: هذه هي بعض النصوص العربية

Китайский: 这是一些阿拉伯文字

Японский: これは、いくつかのアラビア語の キ ス ス ト で す

[Редактировать] Обнаружение работает с текстом, который также извлекается через 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.

Другие вопросы по тегам