Рубрики
Без рубрики

Перевод строк в Python с помощью Text Blob

В этом уроке мы будем использовать Text Blob с Python для выполнения перевода строк и слов на различные языки.

Автор оригинала: Luka Čupić.

Вступление

Перевод текста-это сложная компьютерная задача, которую с каждым годом становится все легче и легче решать. Крупные компании, такие как Google, активно работают над улучшением своих услуг по переводу текстов, что позволяет остальным из нас свободно ими пользоваться.

Помимо их большого личного использования, эти сервисы могут быть использованы разработчиками через различные API. Эта статья о Text Blob который использует один из таких API для выполнения перевода текста.

Что такое TextBlob?

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

Внутренне/| TextBlob полагается на API Google Translate. Это означает, что для выполнения переводов требуется активное подключение к Интернету.

Установка TextBlob

Давайте начнем с установки Text Blob using pip , и загрузка корпусов слов, которые ему нужны для работы:

$ pip install -U textblob
$ python -m textblob.download_corpora

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

Использование TextBlob прост и понятен. Мы просто импортируем его, назначаем строку конструктору и затем переводим ее с помощью функции translate() :

from textblob import TextBlob

blob = TextBlob("Buongiorno!")
print(blob.translate(to='en'))

Функция translate() принимает два аргумента – from_lang и to . Параметр from_lang устанавливается автоматически в зависимости от языка, который обнаруживает TextBlob.

В приведенном выше примере используется итальянская фраза Buongiorno , которая переводится на английский как Good morning .

Иногда мы можем захотеть определить язык, чтобы решить, нуждается ли текст в переводе вообще. Для определения языка некоторого текста используется функция Text Blob ‘s detect_language() :

from textblob import TextBlob

blob = TextBlob("Buongiorno!")
if (blob.detect_language() != 'en')
    blob.translate(to='en'))

Примеры перевода и точность

Перевод предложения С английского на хинди

В качестве нашего первого примера мы увидим, насколько хорошо английский язык переведен на хинди:

blob = TextBlob('TextBlob is a great tool for developers')
print(blob.translate(to='hi'))

В результате получается следующее:

डेवलपर्स के लिए एक बढ़िया टूल है

Перевод русской поэзии на хорватский язык

Давайте посмотрим, как TextBlob управляет поэзией. Ниже приводится произведение русского поэта Владимира Маяковского, сначала на русском, а затем на английском языках:

Послушайте!  
Ведь, если звезды зажигают -  
значит - это кому-нибудь нужно?  
Значит - кто-то хочет, чтобы они были?  
Значит - кто-то называет эти плевочки  
жемчужиной?
Listen!  
See, if stars light up  
does it mean that there is someone who needs it?  
Does it mean that someone wants them to exist?  
It means that someone calls these little spits  
magnificent.

Мы скормим оригинальное стихотворение на кириллице Text Blob и посмотрите, как хорошо он переводится на хорватский. Поскольку и русский, и хорватский, и славянский языки, перевод ожидается относительно хорошим:

from textblob import TextBlob

poem = 'Послушайте! Ведь, если звезды зажигают - значит - это кому-нибудь нужно? Значит - кто-то хочет, чтобы они были? Значит - кто-то называет эти плевочки жемчужиной?'

blob = TextBlob(poem)
print(blob.translate(to='hr'))

Запустив приведенный выше код, мы получим следующий вывод (отформатированный для удобства):

Slušati!
Uostalom, ako su zvijezde upaljene
znači li to nekome treba?
Dakle - netko želi da to budu?
Dakle - netko naziva ove pljuvačke
biserom?

Большая часть перевода хороша , за исключением первого слова, которое звучало бы лучше, если бы оно было Slušajte вместо Slušati в вокативе. Хотя и не идеально, вы могли бы понять перевод.

Перевод Массива немецких слов на английский язык

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

from textblob import TextBlob

worter =  ['einer',  'zwei',  'drei',  'vier',  'fünf',  'sechs',  'sieben',  'acht',  'neun',  'zehn']

for w in worter:
	blob = TextBlob(w)
	print(blob.translate(to='en'))

В результате получается:

one
two
three
four
five
six
seven
eight
nine
ten

Выглядит хорошо!

Перевод еды с английского на французский

Наконец, давайте переведем английское слово на французский:

from textblob import TextBlob

blob = TextBlob('An apple')
print(blob.translate(to='fr'))

Французский перевод/| яблоко|/. Приятного аппетита!

Вывод

Перевод – интересная, но сложная компьютерная задача. Глубокое обучение и другие методы искусственного интеллекта становятся все более эффективными в понимании языка и выполнении автоматического перевода. Text Blob – это один из инструментов, доступных разработчикам, который может быть использован для выполнения таких автоматизированных языковых переводов.

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

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