Paragraf berulang dapat menggunakan kembali terjemahannya, tetapi kunci cache tidak hanya dapat memiliki teks asli.
"Simpan" terlihat sama di kedua proyek, namun terjemahan, kasus, dan konteksnya mungkin berbeda. Dengan menggunakan hash teks asli sebagai kunci cache unik, mudah untuk menggunakan kembali terjemahan dari satu proyek ke proyek lainnya, atau bahkan menggabungkannya ke seluruh penyewa. Caching bukan hanya tentang hit rate. Anda harus terlebih dahulu menentukan kondisi mana yang sama sebelum penggunaan kembali diperbolehkan.
Kunci dari cache terjemahan adalah menentukan kondisi mana yang sama untuk memungkinkan penggunaan kembali. Kalimat yang sama "simpan" mungkin memiliki terjemahan, kapitalisasi, dan konteks yang berbeda dalam proyek yang berbeda. Jika hanya hash teks sumber yang digunakan sebagai kunci cache, terjemahan dari satu proyek dapat disalahgunakan untuk proyek lain atau bahkan tercampur di antara penyewa.
Artikel ini ditulis untuk pengembang dan tim dokumentasi yang perlu merancang cache terjemahan. Setelah membaca ini, Anda akan mengetahui kondisi apa yang harus dimiliki kunci cache, cara menggunakan serialisasi terstruktur untuk menghindari ambiguitas yang tersambung, dan apa lagi yang harus diperiksa setelah cache ditemukan.
Bagaimana cara mendesain kunci cache terjemahan? Kesimpulan satu kalimat
Kunci cache harus mewakili keputusan terjemahan, dan penggunaan kembali hasil yang ada hanya diperbolehkan jika bahasa sumber, bahasa target, versi terminologi, versi kebijakan, dan cakupan penggunaan sama.
| situasi Anda | Praktik yang direkomendasikan | alasan |
|---|---|---|
| Kalimat yang sama mungkin diterjemahkan secara berbeda di proyek yang berbeda | Sertakan cakupan penggunaan dalam kunci cache | Hindari menggunakan kembali terjemahan dari satu proyek ke proyek lainnya |
| Beberapa penyewa berbagi cache yang sama | ID Penyewa memasukkan kunci dan melakukan pemeriksaan izin selama kueri | ID penyewa hanya dapat mengisolasi penamaan dan tidak dapat menggantikan pemeriksaan izin |
| Glosarium telah direvisi | Kunci baru dihasilkan ketika versi istilah berbeda | Keputusan terminologi telah berubah, cache lama hanya digunakan untuk tujuan surut |
| Perlu mereproduksi hasil secara stabil | Simpan versi strategi Anda dan informasi tugas aktual | Nama model yang sama tidak berarti perilaku server tidak akan pernah berubah. |
| Tekan cache yang ada | Periksa status, tugas sumber, dan tanda kualitas | Menekan tombol bukan berarti hasilnya bisa langsung disampaikan |
Kunci cache harus mewakili keputusan terjemahan
Setidaknya kondisi berikut harus diperhatikan:
- Bahasa sumber dan Bahasa target
- Versi istilah
- Versi model atau strategi terjemahan
- Cakupan penggunaan
Jika konteks memengaruhi terjemahan, pengidentifikasi konteks juga harus disertakan dalam kunci cache.
Memiliki nama model yang sama tidak menjamin server tidak akan pernah berubah. Jika Anda memerlukan hasil yang dapat direproduksi secara berulang, Anda harus menyimpan versi strategi Anda sendiri dengan informasi tugas aktual, daripada berasumsi bahwa satu nama model akan mengunci semua perilaku.
Di bawah ini adalah contoh sintetis dari kunci cache lokal. Itu tidak memanggil antarmuka terjemahan apa pun, juga tidak menentukan implementasi cache internal OmniDoc (Entri Produk).
Contoh menggunakan sampel sintetis untuk mendemonstrasikan metode pemrosesan, dan kode telah diperiksa di lingkungan yang terisolasi, namun ini tidak mewakili jaminan semua file atau efek produk yang sebenarnya. Sebelum memproses dokumen penting, harap simpan dokumen asli dan pelajari sesuai dengan batasan dan item penerimaan di bawah ini.
Gunakan serialisasi terstruktur untuk menghindari ambiguitas yang tersambung
import hashlib
import json
def cache_key(tenant, text, source_lang, target_lang, glossary, policy):
record = {"tenant": tenant, "text": text, "source": source_lang,
"target": target_lang, "glossary": glossary, "policy": policy}
raw = json.dumps(record, ensure_ascii=False, sort_keys=True,
separators=(",", ":")).encode("utf-8")
return hashlib.sha256(raw).hexdigest()
args = ("demo-a", "保存", "zh", "en", "terms-v1", "ui-v1")
first = cache_key(*args)
assert first == cache_key(*args)
assert first != cache_key("demo-b", *args[1:])
assert first != cache_key("demo-a", "保存", "zh", "ja", "terms-v1", "ui-v1")
assert first != cache_key("demo-a", "保存", "zh", "en", "terms-v2", "ui-v1")
assert len(first) == 64
Saat hanya menggunakan text + language + version untuk menyambung, batas bidang tidak jelas dan ambiguitas mudah terjadi. Serialisasi terstruktur memperjelas nama bidang dan batasan nilai; setelah memperbaiki urutan kunci dan pembatas, catatan yang sama akan mendapatkan byte yang stabil.
Kumpulan protokol ini sudah diperbaiki. Ketika aturan serialisasi diubah di masa depan, namespace cache harus ditingkatkan secara bersamaan.
Masih memeriksa status yang tersedia setelah menekan
Entri cache mungkin berasal dari tugas yang gagal, dibatalkan, atau belum ditinjau, dan menekan tombol tidak berarti hasilnya dapat dikirimkan secara langsung.
Setiap entri cache juga harus mencatat informasi berikut:
- Status
- Waktu pembuatan
- Sumber tugas
- Tanda kualitas bila diperlukan
Setelah terminologi direvisi, cache lama dapat dipertahankan untuk tujuan retroaktif, namun tidak boleh terus digunakan sebagai akibat dari kebijakan baru.
| mengubah | Apakah contoh ini menghasilkan kunci yang berbeda? | alasan |
|---|---|---|
| Penyewa yang berbeda | Ya | Hindari kebingungan dalam lingkup penggunaan kembali |
| Bahasa target yang berbeda | Ya | Tujuan terjemahan telah berubah |
| Terminologi berbeda dalam versinya | Ya | Keputusan terminologi telah berubah |
| Masukan dan strateginya sama | Tidak | Memungkinkan kueri memiliki hasil yang sudah ada |
Hashing tidak sama dengan enkripsi atau kontrol akses
Anda tidak bisa berasumsi teks utama sudah desensitisasi hanya karena kunci cache adalah SHA-256. Kalimat pendek yang umum dapat disebutkan, dan menyimpan konten tetap memerlukan izin akses dan kebijakan retensi.
Kunci entri ID penyewa hanya dapat mengisolasi penamaan dan tidak dapat menggantikan pemeriksaan izin selama kueri.
Menghapus spasi, tanda baca, atau angka secara seragam untuk meningkatkan tingkat keberhasilan dapat menggabungkan teks yang berbeda. Aturan normalisasi harus secara eksplisit didefinisikan dan diuji dengan contoh tandingan yang mengubah semantik; Anda tidak bisa hanya melihat berapa banyak panggilan yang tersimpan.
Untuk implementasi terkait, lihat Python hashlib.
Gunakan kembali layanan untuk pengiriman
Jika OmniDoc digunakan sebagai titik masuk terjemahan dokumen, orkestrasi tugas eksternal juga dapat menyimpan versi input dan catatan penerimaan.
Apakah akan menggunakan kembali hasil yang ada harus diputuskan oleh perjanjian tugas Anda. Artikel ini tidak menyimpulkan apakah platform menggunakan strategi caching yang sama, juga tidak menjamin bahwa pengiriman berulang tidak akan menimbulkan tugas atau biaya baru.
📊 Perbandingan Inti
| Metode | Risiko atau imbalan utama | Saran |
|---|---|---|
Jahitan sederhana text + language + version | Batas bidang yang tidak jelas mudah menimbulkan ambiguitas | Beralih ke serialisasi terstruktur |
| Serialisasi terstruktur | Nama bidang dan batas nilai jelas, serta urutan kunci tetap dan output pembatas stabil | Saat memodifikasi aturan, namespace cache ditingkatkan secara bersamaan |
| Hanya hash teks sumber yang digunakan sebagai kunci | Penyalahgunaan dapat terjadi di antara proyek atau penyewa | Menggabungkan bahasa, terminologi, strategi, dan ruang lingkup penggunaan |
| Hapus spasi, tanda baca, atau angka secara seragam untuk meningkatkan tingkat keberhasilan | Teks dengan makna berbeda dapat digabungkan | Definisikan aturan secara eksplisit dan uji dengan contoh tandingan |
🎯 Metode mana yang cocok untukmu?
Jika kamu ......
- Perlu menggunakan ulang terjemahan di berbagai proyek: sertakan ruang lingkup penggunaan dalam kunci cache.
- Untuk beberapa tenant: Masukkan ID tenant ke dalam kunci, dan lakukan pemeriksaan izin selama kueri.
- Berharap dapat melacak atau mereproduksi hasil nanti: Simpan versi kebijakan dan informasi tugas sebenarnya.
- Untuk meningkatkan tingkat keberhasilan: pertama-tama definisikan aturan normalisasi dan gunakan contoh tandingan yang mengubah semantik.
- Tekan cache yang ada: terlebih dahulu periksa status, waktu pembuatan, dan sumber tugas.
❓ Pertanyaan yang Sering Diajukan (FAQ)
1. Apakah boleh hanya menggunakan hash teks sumber untuk kunci cache?
Tidak cukup. Kalimat yang sama dapat diterjemahkan secara berbeda, dalam kasus dan kasus, atau dalam konteks di berbagai proyek; hanya menggunakan hash dapat menyebabkan penerapan terjemahan yang salah ke proyek lain, atau bahkan pencampuran lintas tenant.
2. Jika kunci cache menggunakan SHA-256, apakah konten yang dicache dapat dipublikasikan?
Tidak, kamu tidak bisa. Hashing tidak sama dengan enkripsi atau desensitisasi; frasa pendek umum dapat disebutkan, dan konten yang dicache masih memerlukan izin akses dan kebijakan retensi.
3. Apakah memiliki nama model yang sama berarti hasilnya selalu sama?
Tidak ada jaminan. Memiliki nama model yang sama tidak berarti server tetap tidak berubah. Ketika reproduksi stabil diperlukan, versi kebijakan dan informasi tugas sebenarnya harus disimpan.
4. Setelah terminologi diperbarui, apakah cache lama harus segera dihapus?
Tidak selalu. Cache lama dapat disimpan untuk tujuan retrospektif, tetapi tidak boleh diperlakukan sebagai hasil terkini oleh strategi baru.
📝 Ringkasan
Tingkat keberhasilan cache terjemahan penting, tetapi Anda perlu terlebih dahulu menentukan kondisi mana yang sama sebelum penggunaan ulang diizinkan. Dengan menggabungkan bahasa, terminologi, kebijakan, cakupan, dan konteks ke dalam kunci cache, dikombinasikan dengan pemeriksaan izin dan pemeriksaan status, penggunaan ulang dapat menjadi efisien dan andal.
Rasakan sekarang: Unggah dokumen Anda untuk mulai menerjemahkan, mempertahankan format asli


