•  cahaya takoreh

MTR: pelbagai terjemahan

membungkus perkhidmatan terjemahan untuk kegunaan dalaman

Semasa menerbitkan laman web, anda mungkin ingin menawarkan terjemahan yang berbeza. Sebilangan orang tidak menyukai penterjemah automatik, saya berpendapat bahawa terjemahan automatik cukup baik, dan lebih baik daripada apa-apa, dan penterjemah automatik semakin progresif dengan kemajuan dalam NLP dan ML.

Perkhidmatan terjemahan biasa adalah google, bing, yandex. Ini menawarkan tahap percuma yang ingin kami bungkus untuk penggunaan peribadi kami sendiri. Ada juga yang kurang dikenali perkhidmatan terjemahan , dan sebahagian daripadanya ditutup semasa menulis ...

Teks cache

Sekiranya kita ingin menyimpan cache terjemahan, kita perlu memisahkan teks yang diminta menjadi rentetan yang lebih kecil sehingga cukup kecil untuk memberikan hits untuk kemungkinan permintaan di masa depan. The pertukaran ialah terjemahan ayat yang lebih kecil mempunyai konteks yang lebih rendah, yang menurunkan kualiti terjemahan.

Bagaimana kita membelah teks masuk sehingga kita dapat menyusun semula yang asli dari teks yang diterjemahkan adalah satu muslihat..atau hack. Kami ingin mencari rentetan yang cukup pelik sehingga perkhidmatan terjemahan meninggalkannya seperti sedia ada dalam keluarannya. Saya telah menemui variasi watak perenggan untuk bekerja pada kebanyakan masa

$this->misc['glue'] = ' ; ¶ ; ';
$this->misc['splitGlue'] = '/\s?;\s?¶\s?;?\s?/';

Theglue tali digunakan untuk menggabungkan semua rentetan (berpisah dari permintaan asal) menjadi satu satu badan untuk permintaan terjemahan hulu yang kami hantarkan kepada cth. google. ThesplitGlue sebaliknya digunakan untuk membagi terjemahan yang diterima menjadi rentetan yang akan kita cache. Kami melihat di sini bahawa pemisahan tali bukan hanya berguna untuk cache, tetapi juga mengurangkan jumlah permintaan, kerana sekiranya permintaan hilir kami melakukan banyak pertanyaan kecil, kami menggunakan mesin kami untuk menggabungkan permintaan hingga ukuran muatan maksimum yang dibenarkan oleh perkhidmatan hulu.

Antara muka

Untuk menyokong pelbagai perkhidmatan secara telus Saya menulis antara muka yang menggunakan api ini

function__construct(
    Mtr &$mtr,
    Client &$gz,
    TextReq &$txtrq,
    LanguageCode &$ld);
functiontranslate($source, $target, $input);
functiongenReq(array$params);
functionpreReq(array &$input);
functiongetLangs();

Oleh itu, perkhidmatan untuk beroperasi harus menawarkan fungsi terjemahan, cara menerjemahkan permintaan, dan memberikan senarai bahasa yang disokong. Dengan senarai bahasa yang disokong, kita dapat membuat matriks sehingga kita tahu berapa banyak perkhidmatan yang menyokong pasangan bahasa tertentu, untuk menguraikan pasangan bahasa kami menukar perwakilan yang dikembalikan oleh perkhidmatan menjadi umumiso639-1.

Pembuatan contoh terjemahan juga memungkinkan untuk mengkonfigurasi pilihan permintaan yang digunakan olehGuzzle contoh pelanggan sehingga kita boleh menggunakan proksi untuk melaksanakan permintaan. Perkhidmatannya adalah cache setelah dihasilkan pada kali pertama, ini berguna kerana beberapa perkhidmatan memerlukan untuk menghasilkan beberapa token awal, dan kami tidak mahu membuatnya semula setiap masa.

Versi Go

Saya juga menulis a versi di golang. Versi PHP akan digunakan dengan mengimportnya dalam proyek PHP anda, sedangkan versi go berfungsi sebagai perkhidmatan mandiri (mikro). Versi go jauh lebih verbose kerana memerlukan pemeriksaan jenis yang ketat dan kerana kami menyokong pencarian beberapa rentetan sekaligus, kami harus mendedahkan api yang berfungsi dengan kombinasi input yang berbeza, dan kekurangan generik go menjadikan pelaksanaannya sangat menyakitkan, tetapi ia menawarkan pemprosesan serentak, dan pada umumnya lebih pantas.

Membersihkan input

Ditambah dengan terjemahan saya juga membina perkhidmatan untuk bersihkan html . Kami memasukkan beberapa teg html dalam senarai putih dan membuang yang lain. Kami juga membuang tanda baca pendua seperti spam dan atribut html yang tidak diketahui, dan membungkus pautan ke tanda tetap yang betul.

Dihoskan sendiri:

Kesimpulannya

Pada masa ini saya fikir saya hanya akan menggunakan penyelesaian yang dihoskan sendiri, yang disediakan oleh joshua atau argos, kerana saya tidak bertujuan untuk terjemahan terbaik, saya ingin menawarkan terjemahan yang dapat dibaca untuk laman web, sehingga dapat dilayari tanpa geseran.

Tanda Pos: