Python ile Translation API'yi Kullanma

1. Genel Bakış

1e2217da0416d129.png

Translation API, son teknoloji ürünü Nöral Makine Çevirisi kullanarak rastgele dizeleri desteklenen dillere dinamik olarak çevirmek için basit ve programatik bir arayüz sunar. Ayrıca, kaynak dilin bilinmediği durumlarda bir dili algılamak için de kullanılabilir.

Bu eğiticide, Python ile Translation API'yi kullanacaksınız. Ele alınan kavramlar arasında mevcut dillerin nasıl listeleneceği, metnin nasıl çevrileceği ve belirli bir metnin dilinin nasıl algılanacağı yer alır.

Neler öğreneceksiniz?

  • Ortamınızı ayarlama
  • Kullanılabilir diller nasıl listelenir?
  • Metin nasıl çevrilir?
  • Dilleri algılama

Gerekenler

  • Bir Google Cloud projesi
  • Chrome veya Firefox gibi bir tarayıcı
  • Python kullanımı hakkında bilgi

Anket

Bu eğiticiden nasıl yararlanacaksınız?

Yalnızca okuma Okuyun ve alıştırmaları tamamlayın

Python deneyiminizi nasıl değerlendirirsiniz?

Acemi Orta Yeterli

Google Cloud hizmetleriyle ilgili deneyiminizi nasıl değerlendirirsiniz?

Acemi Orta Yeterli

2. Kurulum ve şartlar

Kendi hızınızda ortam kurulumu

  1. Google Cloud Console'da oturum açıp yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın. Gmail veya Google Workspace hesabınız yoksa hesap oluşturmanız gerekir.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • Proje adı, bu projenin katılımcıları için görünen addır. Google API'leri tarafından kullanılmayan bir karakter dizesidir. İstediğiniz zaman güncelleyebilirsiniz.
  • Proje Kimliği, tüm Google Cloud projelerinde benzersizdir ve değiştirilemez (belirlendikten sonra değiştirilemez). Cloud Console, otomatik olarak benzersiz bir dize oluşturur. bunun ne olduğunu umursamıyorsunuz. Çoğu codelab'de proje kimliğinizi (genellikle PROJECT_ID olarak tanımlanır) belirtmeniz gerekir. Oluşturulan kimliği beğenmezseniz rastgele bir kimlik daha oluşturabilirsiniz. Alternatif olarak, kendi ölçümünüzü deneyip mevcut olup olmadığına bakabilirsiniz. Bu adımdan sonra değiştirilemez ve proje süresince kalır.
  • Bilginiz olması açısından, bazı API'lerin kullandığı üçüncü bir değer, yani Proje Numarası daha vardır. Bu değerlerin üçü hakkında daha fazla bilgiyi belgelerde bulabilirsiniz.
  1. Sonraki adımda, Cloud kaynaklarını/API'lerini kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir. Bu codelab'i çalıştırmanın maliyeti, yüksek değildir. Bu eğitim dışında faturalandırmanın tekrarlanmasını önlemek amacıyla kaynakları kapatmak için oluşturduğunuz kaynakları silebilir veya projeyi silebilirsiniz. Yeni Google Cloud kullanıcıları 300 ABD doları değerindeki ücretsiz denemeden yararlanabilir.

Cloud Shell'i başlatma

Google Cloud, dizüstü bilgisayarınızdan uzaktan çalıştırılabilse de bu codelab'de Cloud'da çalışan bir komut satırı ortamı olan Cloud Shell'i kullanacaksınız.

Cloud Shell'i etkinleştirme

  1. Cloud Console'da, Cloud Shell'i etkinleştir 853e55310c205094.png simgesini tıklayın.

55efc1aaa7a4d3ad.png

Cloud Shell'i ilk kez başlatıyorsanız ne olduğunu açıklayan bir ara ekran gösterilir. Ara bir ekran görüntülendiyse Devam'ı tıklayın.

9c92662c6a846a5c.png

Temel hazırlık ve Cloud Shell'e bağlanmak yalnızca birkaç dakika sürer.

9f0e51b578fecce5.png

Gereken tüm geliştirme araçları bu sanal makinede yüklüdür. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud'da çalışarak ağ performansını ve kimlik doğrulamasını büyük ölçüde iyileştirir. Bu codelab'deki çalışmalarınızın tamamı olmasa bile büyük bir kısmı tarayıcıyla yapılabilir.

Cloud Shell'e bağlandıktan sonra kimliğinizin doğrulandığını ve projenin proje kimliğinize ayarlandığını göreceksiniz.

  1. Kimlik doğrulamanızın tamamlandığını onaylamak için Cloud Shell'de aşağıdaki komutu çalıştırın:
gcloud auth list

Komut çıkışı

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. gcloud komutunun projenizi bildiğini onaylamak için Cloud Shell'de aşağıdaki komutu çalıştırın:
gcloud config list project

Komut çıkışı

[core]
project = <PROJECT_ID>

Doğru değilse aşağıdaki komutla ayarlayabilirsiniz:

gcloud config set project <PROJECT_ID>

Komut çıkışı

Updated property [core/project].

3. Ortam kurulumu

Translation API'yi kullanmaya başlamadan önce API'yi etkinleştirmek için Cloud Shell'de aşağıdaki komutu çalıştırın:

gcloud services enable translate.googleapis.com

Aşağıdakine benzer bir tablo görürsünüz:

Operation "operations/..." finished successfully.

Artık Translation API'yi kullanabilirsiniz.

Aşağıdaki ortam değişkenini (uygulamanızda kullanılacak) ayarlayın:

export PROJECT_ID=$(gcloud config get-value core/project)

echo "→ PROJECT_ID: $PROJECT_ID"

Ana dizininize gidin:

cd ~

Bağımlılıkları izole etmek için bir Python sanal ortamı oluşturun:

virtualenv venv-translate

Sanal ortamı etkinleştirin:

source venv-translate/bin/activate

IPython ve Translation API istemci kitaplığını yükleyin:

pip install ipython google-cloud-translate

Aşağıdakine benzer bir tablo görürsünüz:

...
Installing collected packages: ..., ipython, google-cloud-translate
Successfully installed ... google-cloud-translate-3.11.0 ...

Artık Translation API istemci kitaplığını kullanmaya hazırsınız!

Sonraki adımlarda, önceki adımda yüklediğiniz IPython adlı etkileşimli bir Python yorumlayıcısını kullanacaksınız. Cloud Shell'de ipython çalıştırarak oturum başlatın:

ipython

Aşağıdakine benzer bir tablo görürsünüz:

Python 3.9.2 (default, Feb 28 2021, 17:03:44)
Type 'copyright', 'credits' or 'license' for more information
IPython 8.12.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]:

Aşağıdaki kodu IPython oturumunuza kopyalayın:

from os import environ

from google.cloud import translate


PROJECT_ID = environ.get("PROJECT_ID", "")
assert PROJECT_ID
PARENT = f"projects/{PROJECT_ID}"

İlk isteğinizi yapmaya ve desteklenen dilleri listelemeye hazırsınız.

4. Kullanılabilir dilleri listeleme

Bu bölümde, Translation API'de kullanılabilen tüm diller listelenmiştir.

Mevcut dilleri listelemek için aşağıdaki kodu IPython oturumunuza kopyalayın:

def print_supported_languages(display_language_code: str):
    client = translate.TranslationServiceClient()

    response = client.get_supported_languages(
        parent=PARENT,
        display_language_code=display_language_code,
    )

    languages = response.languages
    print(f" Languages: {len(languages)} ".center(60, "-"))
    for language in languages:
        language_code = language.language_code
        display_name = language.display_name
        print(f"{language_code:10}{display_name}")
    

İşlevi çağırın:

print_supported_languages("en")

Aşağıdaki gibi bir sonuç görürsünüz:

---------------------- Languages: 136 ----------------------
af        Afrikaans
ak        Akan
sq        Albanian
am        Amharic
ar        Arabic
...
cy        Welsh
xh        Xhosa
yi        Yiddish
yo        Yoruba
zu        Zulu

Görüntüleme dilinin Fransızca olarak hangi özelliklere sahip olduğuna göz atın:

print_supported_languages("fr")

Aynı listeyi Fransızca adlara göre sıralanmış olarak aşağıdakine benzer şekilde alırsınız:

---------------------- Languages: 136 ----------------------
af        Afrikaans
sq        Albanais
de        Allemand
am        Amharique
en        Anglais
...
vi        Vietnamien
xh        Xhosa
yi        Yiddish
yo        Yorouba
zu        Zoulou

Başka bir dil koduyla deneyebilirsiniz.

Özet

Bu adımda, Translation API'deki mevcut tüm dilleri listelemeyi başardınız. Desteklenen dillerin tam listesini dil desteği sayfasında bulabilirsiniz.

5. Metin çevirme

Metni bir dilden diğerine çevirmek için Translation API'yi kullanabilirsiniz. Metin, Nöral Makine Çevirisi (NMT) modeli kullanılarak çevrilir. İstenen dil çeviri çifti için NMT modeli desteklenmiyorsa Sıralı Tabanlı Makine Çevirisi (PBMT) modeli kullanılır. Google Çeviri ve çeviri modelleri hakkında daha fazla bilgi için NMT duyurusu yayınına bakın.

Metni çevirmek için aşağıdaki kodu IPython oturumunuza kopyalayın:

def translate_text(text: str, target_language_code: str) -> translate.Translation:
    client = translate.TranslationServiceClient()

    response = client.translate_text(
        parent=PARENT,
        contents=[text],
        target_language_code=target_language_code,
    )

    return response.translations[0]
    

Aynı metni farklı dillere çevirmek için işlevi çağırın:

text = "Hello World!"
target_languages = ["tr", "de", "es", "it", "el", "zh", "ja", "ko"]

print(f" {text} ".center(50, "-"))
for target_language in target_languages:
    translation = translate_text(text, target_language)
    source_language = translation.detected_language_code
    translated_text = translation.translated_text
    print(f"{source_language}  {target_language} : {translated_text}")
    

Aşağıdaki bilgileri almanız gerekir:

------------------ Hello World! ------------------
en → tr : Selam Dünya!
en → de : Hallo Welt!
en → es : ¡Hola Mundo!
en → it : Ciao mondo!
en → el : Γειά σου Κόσμε!
en → zh : 你好世界!
en → ja : 「こんにちは世界」
en → ko : 안녕하세요 세계!

Özet

Bu adımda, metni birden fazla dile çevirmek için Translation API'yi kullanabildiniz. Metin çevirme hakkında daha fazla bilgi edinin.

6. Dilleri algıla

Bir metin dizesinin dilini algılamak için Translation API'yi de kullanabilirsiniz.

Aşağıdaki kodu IPython oturumunuza kopyalayın:

def detect_language(text: str) -> translate.DetectedLanguage:
    client = translate.TranslationServiceClient()

    response = client.detect_language(parent=PARENT, content=text)

    return response.languages[0]
    

Farklı cümlelerin dilini algılamak için işlevi çağırın:

sentences = [
    "Selam Dünya!",
    "Hallo Welt!",
    "¡Hola Mundo!",
    "Ciao mondo!",
    "Γειά σου Κόσμε!",
    "你好世界",
    "こんにちは世界",
    "안녕하세요 세계!",
]
for sentence in sentences:
    language = detect_language(sentence)
    confidence = language.confidence
    language_code = language.language_code
    print(
        f"Confidence: {confidence:4.0%}",
        f"Language: {language_code:5}",
        sentence,
        sep=" | ",
    )
    

Aşağıdaki bilgileri almanız gerekir:

Confidence: 100% | Language: tr    | Selam Dünya!
Confidence:  80% | Language: de    | Hallo Welt!
Confidence: 100% | Language: es    | ¡Hola Mundo!
Confidence: 100% | Language: it    | Ciao mondo!
Confidence: 100% | Language: el    | Γειά σου Κόσμε!
Confidence: 100% | Language: zh-CN | 你好世界!
Confidence: 100% | Language: ja    | 「こんにちは世界」
Confidence: 100% | Language: ko    | 안녕하세요 세계!

Özet

Bu adımda, Translation API'yi kullanarak bir metin parçasının dilini tespit edebildiniz. Dilleri algılama hakkında daha fazla bilgi edinin.

7. Tebrikler!

1e2217da0416d129.png

Python ile Translation API'yi nasıl kullanacağınızı öğrendiniz.

Temizleme

Geliştirme ortamınızı temizlemek için Cloud Shell'den:

  • Hâlâ IPython oturumunuzdaysanız kabuğa geri dönün: exit
  • Python sanal ortamını kullanmayı bırakın: deactivate
  • Sanal ortam klasörünüzü silin: cd ~ ; rm -rf ./venv-translate

Google Cloud projenizi Cloud Shell'den silmek için:

  • Geçerli proje kimliğinizi alın: PROJECT_ID=$(gcloud config get-value core/project)
  • Silmek istediğiniz projenin bu proje olduğundan emin olun: echo $PROJECT_ID
  • Projeyi silin: gcloud projects delete $PROJECT_ID

Daha fazla bilgi

Lisans

Bu çalışma, Creative Commons Attribution 2.0 Genel Amaçlı Lisans ile lisans altına alınmıştır.