Перейти к содержимому

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

  • автор:

Определение языка текста

Есть текст. Нужно определить язык этого текста: русский или украинский. Использовал api от яндекс переводчика, но там стоит лимит на один миллион символов в день. 1М это мало. Может кто то знает какие то библиотеки на python3? upd: мне хотя бы узнать, является ли текст украинским.

Отслеживать
12.5k 7 7 золотых знаков 19 19 серебряных знаков 48 48 бронзовых знаков
задан 23 янв 2017 в 20:34
1,066 2 2 золотых знака 15 15 серебряных знаков 32 32 бронзовых знака

Возможно вот эта библиотека подойдет: github.com/CLD2Owners/cld2 , и пример как заставить работать с Python: github.com/mikemccand/chromium-compact-language-detector

23 янв 2017 в 20:57

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

In [65]: from langdetect import detect In [66]: %paste detect('"Зоряні війни" офіційно оголосили назву нового епізоду') ## -- End pasted text -- Out[66]: 'uk' In [67]: %paste detect('Дональд Трамп подписал указ об официальном выходе США из Транстихоокеанского партнерства') ## -- End pasted text -- Out[67]: 'ru' 

Если нужно сделать оценку:

In [78]: from langdetect import detect_langs In [79]: %paste detect_langs('Спробуй вгадати який це "язык"') ## -- End pasted text -- Out[79]: [ru:0.7142865675080949, uk:0.28571330147081586] In [80]: %paste detect_langs('Ты говоришь на "мові"') ## -- End pasted text -- Out[80]: [uk:0.9999979837984605] 

Отслеживать
ответ дан 23 янв 2017 в 21:25
MaxU — stand with Ukraine MaxU — stand with Ukraine
149k 12 12 золотых знаков 59 59 серебряных знаков 132 132 бронзовых знака

Самый простой и быстрый вариант использовать cld2-cffi:

pip3 install cld2-cffi 
import cld2 # текст на Русском details = cld2.detect("Это мой образец текста") print(str(details)) # Вывод: # Detections(is_reliable=True, bytes_found=43, details=(Detection(language_name='RUSSIAN', language_code='ru', percent=97, score=658.0), Detection(language_name='Unknown', language_code='un', percent=0, score=0.0), Detection(language_name='Unknown', language_code='un', percent=0, score=0.0))) # текст на Украинском details = cld2.detect("Це мій зразок тексту") # Вывод: # Detections(is_reliable=True, bytes_found=39, details=(Detection(language_name='UKRAINIAN', language_code='uk', percent=97, score=862.0), Detection(language_name='Unknown', language_code='un', percent=0, score=0.0), Detection(language_name='Unknown', language_code='un', percent=0, score=0.0))) 

API Google Translate перевод текста на Python

API Google Translate перевод текста на Python

Приветствую всех, в этой статье я покажу как на Python можно создать самого простого переводчика с помощью библиотеки Googletrans.

Знакомство

Googletrans — это бесплатная и неограниченная библиотека Python, в которой реализован API Google Translate. Он использует API Google Translate Ajax для вызова методов перевода и определение языка.

  • Максимальное количество символов в одном тексте — 15 КБ.
  • Из-за ограничений веб-версии Google Translate этот API не гарантирует, что библиотека будет работать должным образом.
  • Если вы хотите использовать стабильный API, я настоятельно рекомендую вам использовать официальный API перевода Google.
  • Если вы получаете ошибку HTTP 5xx или ошибки типа #6, вероятно это связано с тем, что Google заблокировал IP-адрес вашего клиента.

Быстрый старт

Установим библиотеку через PyPI (Совместим с Python 3.6+).

pip install googletrans 

Пример кода, который переведет текст hello world на русский

from googletrans import Translator translator = Translator() result = translator.translate('hello world', src='en', dest='ru') print(result.text) # Привет мир 
  • translate(text, dest=’en’, src=’auto’)
    • text — Исходный текст для перевода.
    • src — Язык исходного текста
    • dest — Язык для перевода исходного текста.

    Так же можно определить язык текста.

    from googletrans import Translator translator = Translator() r1 = translator.detect('你好') r2 = translator.detect('Привет') print(f'Язык: , достоверность: ') print(f'Язык: , достоверность: ') 
    • detected(lang, confidence)
      • lang — обнаруженный язык
      • confidence — достоверность результата обнаружения

      Языковые коды для перевода

      Так же можно использовать массив для перевода текста

      from googletrans import Translator translator = Translator() translations = translator.translate(['여보세요', 'Hello', 'Ahoj'], dest='ru') for translation in translations: print(translation.origin, ' -> ', translation.text) #여보세요 -> Привет #Hello -> Привет #Ahoj -> Здравствуй 

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

      Argument ‘Topic id’ is null or empty

      Сейчас на форуме

      © Николай Павлов, Planetaexcel, 2006-2023
      info@planetaexcel.ru

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

      ООО «Планета Эксел»
      ИНН 7735603520
      ОГРН 1147746834949
      ИП Павлов Николай Владимирович
      ИНН 633015842586
      ОГРНИП 310633031600071

      Определяем язык текста с помощью cld2+python+php

      cld2 (Compact Language Detection) — библиотека от компании google, написанная на С. Как заявляет google, со второй версии она стала быстрее и детектит большее количество языков. Библиотека может задетектить более 80 языков. Определяет до 3-х языков, использованных в тексте. Например, 800 байт — английский, 200 байт — французский и т.д.

      Библиотека cld2 используется в популярном браузере Chrome (Chromium) для определения языка, с которого нужно перевести сайт.

      Для определения языка по входной строке нам понадобится: cld2, python, php для удобства.

      Установка и сборка cld2 на debian сервере

      aptitude install python2.7-dev mercurial git-svn g++ cd /opt git svn clone http://cld2.googlecode.com/svn/trunk/ cld2 cd /opt/cld2/internal sudo ./compile.sh sudo ./compile_full.sh sudo ./compile_libs.sh cd /opt hg clone https://code.google.com/p/chromium-compact-language-detector/ cd /opt/chromium-compact-language-detector/ sudo ln -s /opt/cld2/internal/libcld2* /usr/lib/ sudo LD_LIBRARY_PATH=/usr/lib ./setup.py build sudo LD_LIBRARY_PATH=/usr/lib python ./setup_full.py build sudo python setup.py install

      На этом сборка либы окончена.

      Можно посмотреть описание метода detect у класса cld2 в python в консоли:

      python -c "import cld2; help(cld2.detect)"

      Использование cld2

      Создаём файл detect_language.py. Файл будет непосредственно взаимодействовать с библиотекой cld2 и выводить результат — язык текста (русский, английский, французский, китайский и т.д.). Содержимое файла detect_language.py:

      from optparse import OptionParser import cld2full def main(): parser = OptionParser("usage: %prog [options] text") parser.add_option("-l", "--hint-language", dest="hint_language", default=None) parser.add_option("-d", "--hint-domain", dest="hint_domain", default=None) (options, args) = parser.parse_args() if len(args) != 1: parser.error("Incorrect number of arguments") text = args[0] result = cld2full.detect(utf8Bytes=text, hintTopLevelDomain=options.hint_domain, hintLanguage=options.hint_language) isReliable, textBytesFound, details = result print details[0][1] if __name__ == "__main__": main()

      Обратите внимание, что этот python-код возвращает только один основной язык, используемый в строке ( print details[0][1] ).

      Я на Питоне не пишу, а пишу на php, поэтому выполнять файл detect_language.py будем из-под php. Т.е. мои парсеры все на php. Пишем php-класс (парсер), который будет запускать через exec python-код и далее работать с результатом.

      Класс назовём Language_Detector_CLD2.

      Исходный код файла Language/Detector/CLD2.php

      supportedLanguageHints)) < $languageHint = null; >// Remove dashes cause it may confuse OptionParser $text = preg_replace('/-/', ' ', $text); $textArg = escapeshellarg($text); $command = 'python detect_language.py ' . $textArg; if ($languageHint) < $command .= ' -l ' . $languageHint; >if ($domainHint) < $command .= ' -d ' . $domainHint; >$code = trim(`$command`); if (!in_array($code, $this->notDetectedCodes)) < return $code; >return '00'; > >

      Распознаём язык строки

      $parser = new Language_Detector_CLD2(); $parser->detect('to recognize the text language', 'ru'); //en $parser->detect('Распознать русский текст. Привет, медвед.'); //ru

      Для более качественного распознавания коротких строк можно передавать второй и третий параметры — $languageHint и $domainHint.

      Например, если вы распознаете язык определенного сайта, то $languageHint — предполагаемый язык можно взять из мета-тегов сайта или хедера accept-charset или accept-encoding. А $domainHint — это tld домена.

      Поисковые запросы , по которым приходили пользователи

      Дата добавления: 10 лет назад

      php python

      Похожий контент:

      • Как получить имена параметров из конструктора класса на php? Решено!
      • Особенности foreach в php 7 2 ответа
      • Ошибка при установке PHP PECL Memcached Решено!
      • DOMDocument Как удалить из html определённый элемент по классу? 0 ответов
      • shell_exec возвращает вывод без STDERR Решено!
      • Не устанавливается php 5.6 на debian 0 комментариев
      • Перевод kohana с php 5 на php 71 комментарий
      • Что говорят SOLID принципы? 0 комментариев
      • PHP 8 — что нового в 8-ой версии php 0 комментариев
      • PHP выполнить shell команду синхронно с timeout 0 комментариев

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *