Agen Terjemahan: Terjemahan agen menggunakan alur kerja refleksi
Ini adalah demonstrasi Python dari alur kerja agen refleksi untuk terjemahan mesin. Langkah-langkah utamanya adalah:
- Meminta LLM untuk menerjemahkan teks dari
source_language
ke target_language
; - Minta LLM merenungkan terjemahannya untuk menghasilkan saran konstruktif untuk memperbaikinya;
- Gunakan saran untuk meningkatkan terjemahan.
Kemampuan penyesuaian
Dengan menggunakan LLM sebagai jantung mesin penerjemah, sistem ini sangat dapat dikendalikan. Misalnya, dengan mengubah perintah, alur kerja ini akan lebih mudah digunakan dibandingkan sistem terjemahan mesin (MT) tradisional untuk:
- Ubah gaya keluaran, seperti formal/informal.
- Tentukan cara menangani idiom dan istilah khusus seperti nama, istilah teknis, dan akronim. Misalnya, menyertakan glosarium dalam perintah memungkinkan Anda memastikan istilah tertentu (seperti open source, H100, atau GPU) diterjemahkan secara konsisten.
- Tentukan penggunaan bahasa regional tertentu, atau dialek tertentu, untuk melayani audiens target. Misalnya, bahasa Spanyol yang digunakan di Amerika Latin berbeda dengan bahasa Spanyol yang digunakan di Spanyol; Bahasa Prancis yang digunakan di Kanada berbeda dengan yang digunakan di Prancis.
Ini bukan perangkat lunak yang matang , dan merupakan hasil dari Andrew yang bermain-main dengan terjemahan pada akhir pekan beberapa bulan terakhir, ditambah kolaborator (Joaquin Dominguez, Nedelina Teneva, John Santerre) yang membantu memfaktorkan ulang kode.
Menurut evaluasi kami yang menggunakan skor BLEU pada kumpulan data terjemahan tradisional, alur kerja ini terkadang bersaing dengan, namun terkadang juga lebih buruk daripada, penawaran komersial terkemuka. Namun, terkadang kami juga mendapatkan hasil yang fantastis (lebih unggul dari penawaran komersial) dengan pendekatan ini. Kami pikir ini hanyalah sebuah titik awal untuk penerjemahan agen, dan ini adalah arah yang menjanjikan dalam penerjemahan, dengan ruang yang luas untuk perbaikan lebih lanjut, itulah sebabnya kami merilis demonstrasi ini untuk mendorong lebih banyak diskusi, eksperimen, penelitian, dan sumber terbuka. kontribusi.
Jika terjemahan agen dapat menghasilkan hasil yang lebih baik daripada arsitektur tradisional (seperti transformator end-to-end yang memasukkan teks dan langsung mengeluarkan terjemahan) -- yang seringkali lebih cepat/lebih murah untuk dijalankan dibandingkan pendekatan kami di sini -- ini juga menyediakan a mekanisme untuk secara otomatis menghasilkan data pelatihan (korpora teks paralel) yang dapat digunakan untuk melatih lebih lanjut dan meningkatkan algoritma tradisional. (Lihat juga artikel ini di The Batch tentang penggunaan LLM untuk menghasilkan data pelatihan.)
Kritik dan saran untuk memperbaiki hal ini sangat kami harapkan!
Memulai
Untuk memulai dengan translation-agent
, ikuti langkah-langkah berikut:
Instalasi:
- Manajer paket Puisi diperlukan untuk instalasi. Instalasi Puisi Tergantung pada lingkungan Anda, ini mungkin berhasil:
- File .env dengan OPENAI_API_KEY diperlukan untuk menjalankan alur kerja. Lihat file .env.sample sebagai contoh.
git clone https://github.com/andrewyng/translation-agent.git
cd translation-agent
poetry install
poetry shell # activates virtual environment
Penggunaan:
import translation_agent as ta
source_lang , target_lang , country = "English" , "Spanish" , "Mexico"
translation = ta . translate ( source_lang , target_lang , source_text , country )
Lihat example/example_script.py untuk contoh skrip yang akan dicoba.
Lisensi
Agen Terjemahan dirilis di bawah Lisensi MIT . Anda bebas menggunakan, memodifikasi, dan mendistribusikan kode untuk tujuan komersial dan non-komersial.
Ide untuk ekstensi
Berikut adalah ide-ide yang belum sempat kami uji coba, namun kami berharap komunitas sumber terbuka akan melakukannya:
- Coba LLM lainnya. Kami membuat prototipe ini terutama menggunakan gpt-4-turbo. Kami ingin orang lain bereksperimen dengan LLM lain serta pilihan hyperparameter lainnya dan melihat apakah beberapa lebih baik daripada yang lain untuk pasangan bahasa tertentu.
- Penciptaan Glosarium. Apa cara terbaik untuk membuat glosarium secara efisien -- mungkin menggunakan LLM -- istilah terpenting yang ingin kami terjemahkan secara konsisten? Misalnya, banyak bisnis menggunakan istilah khusus yang tidak banyak digunakan di internet dan sehingga LLM tidak mengetahuinya, dan ada juga banyak istilah yang dapat diterjemahkan dengan berbagai cara. Misalnya, “open source” dalam bahasa Spanyol dapat berupa “Código abierto” atau “Fuente abierta”; keduanya baik-baik saja, tetapi lebih baik memilih satu dan tetap menggunakannya untuk satu dokumen.
- Glosarium Penggunaan dan Implementasi. Mengingat glosarium, apa cara terbaik untuk memasukkannya ke dalam prompt?
- Evaluasi dalam berbagai bahasa. Bagaimana kinerjanya bervariasi dalam berbagai bahasa? Apakah ada perubahan yang membuatnya berfungsi lebih baik untuk bahasa sumber atau bahasa target tertentu? (Perhatikan bahwa untuk tingkat kinerja yang sangat tinggi, yang mendekati sistem MT, kami tidak yakin apakah BLEU adalah metrik yang bagus.) Selain itu, kinerjanya pada bahasa sumber daya yang lebih rendah memerlukan studi lebih lanjut.
- Analisis kesalahan. Kami menemukan bahwa menentukan bahasa dan negara/wilayah (misalnya, “Bahasa Spanyol seperti bahasa sehari-hari yang digunakan di Meksiko”) cukup efektif dalam aplikasi kami. Di manakah kelemahan pendekatan yang ada saat ini? Kami juga secara khusus tertarik untuk memahami kinerjanya pada topik khusus (seperti hukum, kedokteran) atau jenis teks khusus (seperti subtitle film) untuk memahami keterbatasannya.
- Evaluasi yang lebih baik. Terakhir, menurut kami evaluasi yang lebih baik (eval) adalah topik penelitian yang besar dan penting. Seperti aplikasi LLM lain yang menghasilkan teks bebas, metrik evaluasi saat ini tampaknya gagal. Misalnya, kami menemukan bahwa bahkan pada dokumen yang alur kerja agen kami mampu menangkap konteks dan terminologi dengan lebih baik, sehingga menghasilkan terjemahan yang lebih disukai oleh penilai manusia dibandingkan penawaran komersial saat ini, evaluasi pada tingkat kalimat (menggunakan kumpulan data FLORES) menghasilkan skor sistem agen yang lebih rendah. di BLEU. Bisakah kita merancang metrik yang lebih baik (mungkin menggunakan LLM untuk mengevaluasi terjemahan?) yang menangkap kualitas terjemahan pada tingkat dokumen yang berkorelasi lebih baik dengan preferensi manusia?
Pekerjaan terkait
Beberapa kelompok penelitian akademis juga mulai melirik terjemahan agen dan berbasis LLM. Kami pikir ini adalah hari-hari awal untuk bidang ini!
- ChatGPT MT: Kompetitif untuk Bahasa Sumber Daya Tinggi (tetapi tidak Rendah) , Robinson dkk. (2023), https://arxiv.org/pdf/2309.07423
- Bagaimana Mendesain Perintah Terjemahan untuk ChatGPT: Sebuah Studi Empiris , Gao dkk. (2023), https://arxiv.org/pdf/2304.02182v2
- Melampaui Terjemahan Manusia: Memanfaatkan Kolaborasi Multi-Agen untuk Menerjemahkan Teks Sastra yang Sangat Panjang , Wu dkk. (2024), https://arxiv.org/pdf/2405.11804