Как узнать на каком языке написано сообщение

Обновлено: 07.05.2024

У каждого языка есть свои характерные особенности: длинные или короткие слова, сочетания букв, диакритические знаки над гласными и согласными. Запомните их, и вы сможете понять, на каком языке текст, едва взглянув на него.

Вот некоторые особенности написания латинских букв в разных языках…

Есть много языков, использующих латинский алфавит и не имеющих характерных черт. Вот несколько способов отличить их друг от друга.

Французский, испанский и итальянский

Испанский — единственный из этих языков, где используется ñ (хотя в других языках, не входящих в эту группу, тоже есть такой символ). В итальянском часто встречаются слова è (это) и e (и). На французском это est и et, а на испанском — es и y.

Голландский, немецкий и африкаанс

Из этих трёх языков только в немецком используются Ä/ä, Ö/ö и Ü/ü. Только в голландском часто встречается ij. В африкаанс вместо этого используют y (голландское mij (меня) на африкаанс переводится как my). Немецкие ist (это) и und (и) на голландском и африкаанс — is и en.

Ирландский, шотландский и валлийский

Валлийский сильно отличается от двух других. В нём много ll и ff, а w обозначает гласный звук (например, в cwm). Два гэльских языка (ирландский и шотландский) легко определить по обилию bh, ch, dh, fh, gh, mh, ph, sh и th (и ни одно из этих сочетаний не произносится так, как вы привыкли в английском). Также в обоих языках используются диакритические знаки над гласными, но только в шотландском эти знаки с наклоном влево, например à в слове Gàidhlig.

Финский и эстонский

Если вы видите язык, который во многом напоминает финский, но в нём есть слова, заканчивающиеся на b или g, а также характерные õ, это эстонский.

Албанский и коса

Эти два языка никак не связаны, они звучат по-разному и вообще с разных континентов. Но в обоих есть xh, и если вы ни один из них не знаете, вы можете зайти в тупик, пытаясь их распознать. В албанском используется много ё (как в Tiranë, столице Албании). Очень много. А в коса нет. С другой стороны, коса и зулу выглядят очень похоже, и если вы не уверены, на каком из них текст, просто спросите кого-нибудь.

Китайский и японский

В Японии три системы письма, одна из которых очень похожа на китайскую. Но японцы часто используют символ の, который является грамматической частицей и не существует в китайском языке (китайские иероглифы не могут быть круглыми).



План статьи

  1. Проблемы определения языка
  2. Доступные публичные решения
    • Compact Language Detector 2
    • FastText
  3. Оценка качества
  4. Выводы

1. Проблемы определения языка

Определение языка достаточно старая проблема и многие ее пытаются решать в рамках мультиязычности своих продуктов. Более старые подходы используют решения основанные на н-граммах, когда считается к-во вхождений определенной н-граммы и на основе этого рассчитывается "скор" для каждого языка, после чего выбирается наиболее вероятный язык по нашей модели. Главный недостаток данных моделей в том, что абсолютно не учитывается контекст, поэтому определение языка для схожих языковых групп затрудняется. Но из-за простоты моделей мы получаем в итоге высокую скорость определения, что позволяет экономить ресурсы для высоконагруженных систем. Другой вариант, более современный, – решение на рекуррентных нейронных сетях. Данное решение уже строится не только на н-граммах, а и учитывает контекст, что должно дать прирост в качестве работы.

Сложность создания своего решения упирается в сбор данных для обучения и самом процессе обучения. Самый очевидный выход – обучить модель на статьях википедии, потому что мы точно знаем язык и там очень качественные проверенные тексты, которые относительно легко собрать. А для обучения своей модели нужно потратить достаточно много времени, чтобы собрать датасет, его обработать и потом выбрать лучшую архитектуру. Скорее всего кто-то уже сделал это раньше нас. В следующем блоке мы рассмотрим существующие решения.

2. Доступные публичные решения

Compact Language Detector 2

CLD2 – это вероятностная модель на основе машинного обучения (Наивный Баессовский классификатор), которая может определять 83 различных языка для текста в формате UTF-8 или html/xml. Для смешанных языков модель возвращает топ-3 языка, где вероятность расчитывается как приблизительный процент текста от общего числа байт. Если модель не уверена в своем ответе, то возвращает тег "unc".

Данное решение очень простое в использовании. Для начала нужно установить его питоновскую обертку или воспользоваться нашим докером.

Чтобы сделать прогноз, достаточно просто импортировать библиотеку pycld2 и написать одну дополнительную строчку кода:

Ответ детектора – это tuple из трех элементов:

  • определился язык или нет;
  • к-во символов;
  • tuple из трех наиболее вероятных языков, где на первом месте идет полное название,
    на втором – сокращение по стандарту ISO 3166 Codes, на третьем – процент символов пренадлежащих данному языку, на четвертом – к-во байт.

FastText

FastText – это библиотека написанная фейсбуком для эффективного обучения и классификации текстов. В рамках данного проекта фейсбук ресерч представил эмбеддинги для 157 языков, которые показывают state-of-the-art результаты на разных задачах, а также модель для определения языка и другие супервайзд задачи.

Для модели определения языка они использовали данные Wikipedia, Tatoeba and SETimes, а в качестве классификатора – свое решение на фасттексте.

Разработчики фейсбук ресерч предоставляют две модели:

    , которая немного быстрее и точнее второй модели, но весит 128Мб; – сжатая версия оригинальной модели.

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

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

3. Оценка качества

Оценивать качество работы алгоритмов будем на данных из соц.сетей за случайное время, взятых из системы YouScan (приблизительно 500 тысяч упоминаний), поэтому в выборке будет больше русского и английского языков, 43% и 32% соответственно, украинского, испанского и португальского – около 2% каждого, из остальных языков меньше 1%. За правильный таргет мы будем брать разметку через google translate, так как на данный момент гугл очень хорошо справляется не только с переводом, а и с определением языка текстов. Конечно, его разметка неидеальна, но в большинстве случаев ей можно доверять.

Метриками для оценки качества определения языка будут точность, полнота и f1. Давайте их посчитаем и выведем в таблице:


model cld2 ft ans
metrics prec rec f1 prec rec f1 prec rec f1
ar 0.992 0.725 0.838 0.918 0.697 0.793 0.968 0.788 0.869
az 0.95 0.752 0.839 0.888 0.547 0.677 0.914 0.787 0.845
bg 0.529 0.136 0.217 0.286 0.178 0.219 0.408 0.214 0.281
en 0.949 0.844 0.894 0.885 0.869 0.877 0.912 0.925 0.918
es 0.987 0.653 0.786 0.709 0.814 0.758 0.828 0.834 0.831
fr 0.991 0.713 0.829 0.53 0.803 0.638 0.713 0.81 0.758
id 0.763 0.543 0.634 0.481 0.404 0.439 0.659 0.603 0.63
it 0.975 0.466 0.631 0.519 0.778 0.622 0.666 0.752 0.706
ja 0.994 0.899 0.944 0.602 0.842 0.702 0.847 0.905 0.875
ka 0.962 0.995 0.979 0.959 0.905 0.931 0.958 0.995 0.976
kk 0.908 0.653 0.759 0.804 0.584 0.677 0.831 0.713 0.767
ko 0.984 0.886 0.933 0.94 0.704 0.805 0.966 0.91 0.937
ms 0.801 0.578 0.672 0.369 0.101 0.159 0.73 0.586 0.65
pt 0.968 0.753 0.847 0.805 0.771 0.788 0.867 0.864 0.865
ru 0.987 0.809 0.889 0.936 0.933 0.935 0.953 0.948 0.95
sr 0.093 0.114 0.103 0.174 0.103 0.13 0.106 0.16 0.128
th 0.989 0.986 0.987 0.973 0.927 0.95 0.979 0.986 0.983
tr 0.961 0.639 0.768 0.607 0.73 0.663 0.769 0.764 0.767
uk 0.949 0.671 0.786 0.615 0.733 0.669 0.774 0.777 0.775
uz 0.666 0.512 0.579 0.77 0.169 0.278 0.655 0.541 0.592

4. Выводы

В целом, обе модели дают хороший результат и могут быть использованы для решения задачи определения языка в разных доменах. Главное их преимущество – высокая скорость, которая дает возможность сделать так называемый "ансамбль" и добавить необходимый препроцессинг для повышения качества.

Весь код для воспроизведения экспериментов и тестирований вышеприведенных подходов вы можете найти в нашем репозитории.

Также можете посмотреть тестирование этих решений в другой статье, где сравнивается точность и скорость на 6 западноевропейских языках.



Глобализация наступает. В любой момент Вы можете столкнуться со строкой текста, написанном на языке, который Вы не то что не знаете, но даже идентифицировать его будете не в состоянии.

Впрочем, сделать это, как правило, не сложно. Этот ответ услужливо дадут один-два символа, характерные только для данного языка, и ни для какого другого.

О языках, использующих кириллицу мы в этой статье говорить не будем. Но у тех языков, которые пользуются латинской письменностью, для звуков, которые встречаются только в данном языке, используются уникальные символы или комбинации символов, которые помогут однозначно определить сам неизвестный язык.

Что это за символы?


Ã, ã: это почти наверняка португальский язык. Если, к тому же, язык этот похож на испанский, со 100%-ной вероятностью португальский язык. Пример: São Paulo

Ģ, ģ; Ķ, ķ; Ļ, ļ; Ņ, ņ: латышский язык. Только в этом языке есть четыре согласные буквы с запятыми, расположенными снизу, и это не Ţ / ţ и Ş / ş, как в румынском. Кроме того, над гласными буквами в латышском языке для обозначения его длительности ставят линию: Ā /ā, Ī / ī, Ō / ō, Ū / ū. В другом балтийском языке, литовском, длительность звуков обозначают иначе.

Ř, ř: Этот звук, средний между Р и Ж, существует только в чешском языке. Другая отличительная буква, встречающаяся только в чешском языке Ů / ů. Ну, и наконец, если то и дело встречаются слова, похожие на русские, значит 100% чешский.

Другой славянский язык, польский, имеет уникальный звук, обозначаемый буквой Ł, ł: Łódź. Буква эта похожа на Л, но читается, как английская W, Уодзь. В польском языке слов, похожих на русские еще больше, чем в чешском.

I, ı; İ, i: В турецком тексте Вы встретите оба варианта буквы I, с точкой и без точки. Это два разных звука, Ы и И. Столица Турции – İstanbul, Истанбул. Еще в турецком языке есть буква ğ. Эта буква пишется, но не произносится. Например, Erdoğan – Эрдоан, а не Эрдоган.

Hà Nội là thủ đô của nước Cộng hoà Xã hội chủ nghĩa Việt Nam và cũng là kinh đô của rất nhiều vương triều Việt cổ.

Ханой является столицей Социалистической Республики Вьетнам, а также является столицей многих древних вьетнамских династий.

Ñ, ñ а также перевернутые вопросительный и восклицательный знаки (¡No pasaran!) присутствуют только в испанских текстах. Если слова в тексте вроде бы испанские (или французские), но часто встречаются буквы X / x – это каталанский язык. Эту редчайшую в испанском букву каталонцы используют для обозначения звука Ш.

Кельтские языки (ирландский, шотландский гэльский и валлийский) характеризуются длинными словами. В ирландском и шотландском в тексте часто встречаются двухбуквенные сочетания согласных: bh, ch, dh, fh, gh, mh, ph, sh и th. Только ирландцы и шотландцы знают, как эти сочетания произносятся. Акцентированные гласные используются в обоих языках, но только в шотландском есть акценты, направленные в левую сторону, как, например, à в Gàidhlig.

Как отличить текст на эстонском языке от финского текста? В эстонском языке есть слова, оканчивающиеся на b или g, а также символ õ. Ну, и конечно, если Вам повезло, можно обнаружить самоназвания: у финнов Suomi, у эстонцев – Eesti.

В албанском языке используются буквы c и q, а также сочетание xh. В тексте на албанском языке можно встретить букву ë (например столица Албании Тирана пишется Tiranë). Албанский язык абсолютно не похож ни на один европейский. Самоназвание страны – Shqipëria.

Если Вы знакомы с украинским языком, то без труда прочтете почти любую надпись на словацком языке. Эти языки очень близки.

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

Впрочем, сделать это, как правило, не сложно. Этот ответ услужливо дадут один-два символа, характерные только для данного языка, и ни для какого другого.

О языках, использующих кириллицу, мы в этой статье говорить не будем. Но у тех языков, которые пользуются латинской письменностью, для звуков, которые встречаются только в данном языке, используются уникальные символы или комбинации символов, которые помогут однозначно определить сам неизвестный язык.

Что это за символы?

Ã, ã: это почти наверняка португальский язык. Если, к тому же, язык этот похож на испанский, со 100%-й вероятностью португальский язык. Пример: São Paulo.

Ģ, ģ; Ķ, ķ; Ļ, ļ; Ņ, ņ: латышский язык. Только в этом языке есть четыре согласные буквы с запятыми, расположенными снизу, и это не Ţ / ţ и Ş / ş, как в румынском. Кроме того, над гласными буквами в латышском языке для обозначения его длительности ставят линию: Ā /ā, Ī / ī, Ō / ō, Ū / ū. В другом балтийском языке, литовском, длительность звуков обозначают иначе.

Другой славянский язык, польский, имеет уникальный звук, обозначаемый буквой Ł, ł: Łódź. Буква эта похожа на Л, но читается, как английская W — Уодзь. В польском языке слов, похожих на русские, еще больше, чем в чешском.

I, ı; İ, i: в турецком тексте вы встретите оба варианта буквы I, с точкой и без точки. Это два разных звука — Ы и И, соответственно. Столица Турции — İstanbul, Истанбул. Еще в турецком языке есть буква ğ. Она пишется, но не произносится. Например, Erdoğan — Эрдоан, а не Эрдоган.

Hà Nội là thủ đô của nước Cộng hoà Xã hội chủ nghĩa Việt Nam và cũng là kinh đô của rất nhiều vương triều Việt cổ.

Ханой является столицей Социалистической Республики Вьетнам, а также является столицей многих древних вьетнамских династий.

Ñ, ñ, а также перевернутые вопросительный и восклицательный знаки (¡No pasaran!) присутствуют только в испанских текстах. Если слова в тексте вроде бы испанские (или французские), но часто встречаются буквы X / x — это каталанский язык. Редчайшую в испанском букву каталонцы используют для обозначения звука Ш.

Кельтские языки (ирландский, шотландский гэльский и валлийский) характеризуются длинными словами. В ирландском и шотландском в тексте часто встречаются двухбуквенные сочетания согласных: bh, ch, dh, fh, gh, mh, ph, sh и th. Только ирландцы и шотландцы знают, как эти сочетания произносятся. Акцентированные гласные используются в обоих языках, но только в шотландском есть акценты, направленные в левую сторону, как, например, à в Gàidhlig.

Как отличить текст на эстонском языке от финского текста? В эстонском языке есть слова, оканчивающиеся на b или g, а также символ õ. Ну, и конечно, если вам повезло, можно обнаружить самоназвания: у финнов Suomi, у эстонцев — Eesti.

В албанском языке используются буквы c и q, а также сочетание xh. В тексте на албанском языке можно встретить букву ë (например столица Албании Тирана пишется Tiranë). Албанский язык абсолютно не похож ни на один европейский. Самоназвание страны — Shqipëria.

Если вы знакомы с украинским языком, то без труда прочтете почти любую надпись на словацком языке. Эти языки очень близки.

То, что можно свести в таблицу и классифицировать, можно и запрограммировать. Программу по автоматическому определению языка называют иногда guesser. Такая программа позволяет по введенным нескольким словам текста определить язык, на котором этот текст написан. Естественно, чем больше слов, тем точнее будет определение. Список таких программ можно найти в Интернете. Кроме того, с задачей определения языка, с которого осуществляется перевод иностранных слов, очень часто справляется и переводчик Google.

Читайте также: