I paragrafi ripetuti possono essere riutilizzati nella traduzione, ma la chiave della cache non può essere solo il testo originale
"Salva" appare uguale in entrambi i progetti, ma la traduzione, il caso e il contesto possono variare. Usare l'hash originale come unica chiave di cache rende facile riutilizzare la traduzione da un progetto all'altro, o addirittura il mixaggio tra i tenanti. La cache non riguarda solo il tasso di colpi; prima devi definire quali condizioni sono le stesse per il riutilizzo.
La chiave della cache di traduzione è definire quali condizioni sono le stesse per il riutilizzo. La stessa frase "salva" può essere tradotta in modi diversi in progetti diversi, con casi e tipi di caso differenti. Se vengono usati solo hash del testo sorgente come chiavi cache, le traduzioni di un progetto possono essere usate in modo improprio per un altro progetto o addirittura un uso cross-ten.
Questo articolo è scritto per sviluppatori e team di documentazione che devono progettare cache di traduzione. Dopo aver letto questo, saprai quali condizioni dovrebbe contenere una chiave di cache, come utilizzare la serializzazione strutturata per evitare ambiguità di splicing e cos'altro controllare dopo un riscontro nella cache.
Come progettare la chiave della cache di traduzione? Conclusione di una frase
La chiave di cache dovrebbe rappresentare una decisione di traduzione e il riutilizzo dei risultati esistenti è consentito solo quando la lingua di origine, la lingua di destinazione, la versione della terminologia, la versione della politica e l'ambito di utilizzo sono gli stessi.
| la tua situazione | Pratiche consigliate | motivo |
|---|---|---|
| La stessa frase può essere tradotta diversamente in progetti diversi | Includi l'ambito di utilizzo nella chiave di cache | Evita di riutilizzare le traduzioni da un progetto all'altro |
| Più tenant condividono la stessa cache | L'ID tenant immette la chiave ed esegue il controllo delle autorizzazioni durante la query | L'ID tenant può solo isolare la denominazione e non può sostituire il controllo delle autorizzazioni |
| Il glossario è stato rivisto | Le nuove chiavi vengono generate quando le versioni dei termini sono diverse | La decisione sulla terminologia è cambiata, la vecchia cache viene utilizzata solo per scopi retroattivi |
| Necessità di riprodurre stabilmente i risultati | Salva la versione della tua strategia e le informazioni sull'attività effettiva | Lo stesso nome del modello non significa che il comportamento del server non cambierà mai. |
| Colpisci la cache esistente | Controlla lo stato, le attività di origine e i marchi di qualità | Premere il tasto non significa che il risultato possa essere consegnato direttamente |
La chiave della cache dovrebbe rappresentare una decisione di traduzione
Dovrebbero essere considerate almeno le seguenti condizioni:
- Lingua di partenza e Lingua di destinazione
- Versione a termine
- Versione modello o strategia di traduzione
- Ambito di utilizzo
Quando il contesto influenza la traduzione, anche l'identificatore di contesto dovrebbe essere incluso nella chiave di cache.
Avere lo stesso nome di modello non garantisce che il server non cambierà mai. Se hai bisogno di risultati riproducibili in modo riproducibile, dovresti salvare la tua versione della strategia con le informazioni effettive sull'attività, invece di dare per scontato che un nome di modello bloccherà tutto il comportamento.
Di seguito è riportato un esempio sintetico di chiave di cache locale. Non richiama alcuna interfaccia di traduzione, né specifica l'implementazione della cache interna di OmniDoc (Voce prodotto).
Gli esempi utilizzano campioni sintetici per dimostrare i metodi di elaborazione e il codice è stato controllato in un ambiente isolato, ma ciò non rappresenta una garanzia di tutti i file reali o degli effetti del prodotto. Prima di elaborare documenti importanti, conservare gli originali e rivederli rispettando i limiti e gli elementi di accettazione riportati di seguito.
Utilizza la serializzazione strutturata per evitare ambiguità di splicing
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
Quando si utilizza semplicemente text + language + version per la giunzione, i confini del campo non sono chiari ed è facile che si verifichino ambiguità. La serializzazione strutturata chiarisce i nomi dei campi e i limiti dei valori; dopo aver corretto l'ordine delle chiavi e il delimitatore, lo stesso record otterrà byte stabili.
Questo insieme di protocolli è fisso. Quando le regole di serializzazione verranno modificate in futuro, lo spazio dei nomi della cache dovrà essere aggiornato contemporaneamente.
Controlla ancora lo stato disponibile dopo aver premuto
Le voci della cache possono provenire da attività non riuscite, annullate o non riviste e premere il tasto non significa che i risultati possano essere consegnati direttamente.
Ogni voce della cache dovrebbe inoltre registrare le seguenti informazioni:
- Stato
- Tempo di creazione
- Attività di origine
- Marchio di qualità quando necessario
Dopo la revisione della terminologia, la vecchia cache può essere conservata per scopi retroattivi, ma non dovrebbe continuare a essere utilizzata come risultato corrente dalla nuova policy.
| modifica | In questo esempio, generi chiavi diverse? | Motivo |
|---|---|---|
| Gli inquilini sono diversi | Sì | Evitare confusione sull'ambito del riutilizzo |
| Lingue target diverse | Sì | Gli obiettivi di traduzione sono cambiati |
| La terminologia varia nella versione | Sì | Le decisioni terminologiche sono cambiate |
| L'input e la strategia sono gli stessi | No | Permette alle query di avere risultati esistenti |
L'hashing non è la stessa cosa della crittografia o del controllo degli accessi
Non puoi presumere che il testo principale sia desensibilizzato solo perché la chiave della cache è SHA-256. Le frasi brevi comuni possono essere enumerate, e la memorizzazione nei contenuti richiede comunque permessi di accesso e politiche di conservazione.
La chiave di inserimento dell'ID tenant può solo isolare la denominazione e non può sostituire i controlli dei permessi durante le query.
Rimuovere uniformemente spazi, punteggiatura o numeri per migliorare il tasso di colpi può unire testi diversi. Le regole di normalizzazione dovrebbero essere esplicitamente definite e testate con controesempi che cambiano la semantica; non puoi semplicemente guardare quante chiamate vengono salvate.
Per implementazioni correlate, si riferisce a Python hashlib.
Riutilizzo del servizio per la consegna
Se OmniDoc viene utilizzato come punto di ingresso per la traduzione del documento, l'orchestrazione esterna del compito può anche mantenere le versioni di input e i record di accettazione.
Se riutilizzare i risultati esistenti dovrebbe essere deciso dal vostro accordo di lavoro. Questo articolo non deduce se la piattaforma utilizzi la stessa strategia di cache, né garantisce che le invii ripetuti non comportino nuovi compiti o commissioni.
📊 Confronto tra i nuclei
| Metodo | Rischi o benefici chiave | Suggerimento |
|---|---|---|
Cucitura semplice text + language + version | I confini dei campi poco chiari portano facilmente all'ambiguità | Passaggio alla serializzazione strutturata |
| Serializzazione strutturata | I nomi dei campi e i confini dei valori sono chiari, e l'ordine fisso della chiave e l'uscita dei delimitatori sono stabili | Quando si modificano le regole, il namespace della cache viene aggiornato simultaneamente |
| Solo l'hash del testo sorgente viene usato come chiave | L'uso improprio può verificarsi tra progetti o inquilini | Incorporare linguaggio, terminologia, strategia e ambito d'uso |
| Elimina uniformemente spazi, punteggiatura o numeri per migliorare i tassi di successo | Testi con significati diversi possono essere fusi | Definisci esplicitamente le regole e testale con controesempi |
🎯 Quale metodo ti si addice?
Se ......
- Necessità di riutilizzare traduzioni tra più progetti: includere l'ambito di utilizzo nelle chiavi della cache.
- Per più tenant: inserire l'ID tenant nella chiave ed eseguire controlli dei permessi durante le interrogazioni.
- Sperare di tracciare o riprodurre i risultati in seguito: salva la versione della policy e le informazioni effettive sul compito.
- Per migliorare il tasso di colpi: prima definire le regole di normalizzazione e usare controesempi che modificano la semantica.
- Accedi alla cache esistente: prima verifica lo stato, il momento di creazione e la fonte del compito.
❓ Domande Frequenti (FAQ)
1. Va bene usare solo l'hash del testo sorgente per le chiavi della cache?
Non abbastanza. La stessa frase può essere tradotta in modo diverso, in caso e caso, o in contesto tra progetti diversi; l'uso solo dell'hash può portare a una cattiva applicazione della traduzione in altri progetti, o addirittura a un mixaggio cross-ten.
2. Se la chiave della cache usa SHA-256, i contenuti memorizzati nella cache possono essere resi pubblici?
No, non puoi. L'hashing non equivale a crittografia o desensibilizzazione; le frasi brevi comuni possono essere enumerate, e i contenuti memorizzati nella cache richiedono comunque permessi di accesso e politiche di conservazione.
3. Avere lo stesso nome di modello significa che il risultato è sempre lo stesso?
Nessuna garanzia. Avere lo stesso nome di modello non significa che il server rimanga invariato. Quando è richiesta una riproduzione stabile, la versione della policy e le informazioni effettive sul compito devono essere salvate.
4. Dopo che la terminologia è stata rivista, la vecchia cache dovrebbe essere cancellata immediatamente?
Non necessariamente. Le vecchie cache possono essere conservate a scopo retroattivo, ma non devono essere trattate come risultati attuali da nuove strategie.
📝 Riassunto
Il tasso di successo della cache di traduzione è importante, ma prima devi definire quali condizioni sono le stesse prima che il riutilizzo sia permesso. Incorporando linguaggio, terminologia, politiche, ambito e contesto nelle chiavi della cache, combinati con controlli di permessi e controlli di stato, il riutilizzo può essere sia efficiente che affidabile.


