Определение языка текста
Есть текст. Нужно определить язык этого текста: русский или украинский. Использовал 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

Приветствую всех, в этой статье я покажу как на 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 комментариев