Wiederholte Absätze können die Übersetzung wiederverwenden, aber der Cache-Schlüssel kann nicht nur den Originaltext enthalten.
„Speichern“ sieht in beiden Projekten gleich aus, Übersetzung, Groß-/Kleinschreibung und Kontext können jedoch unterschiedlich sein. Durch die Verwendung des ursprünglichen Text-Hashs als eindeutigen Cache-Schlüssel ist es einfach, Übersetzungen von einem Projekt für ein anderes wiederzuverwenden oder sie sogar mandantenübergreifend zu mischen. Beim Caching geht es nicht nur um die Trefferquote. Bevor eine Wiederverwendung zulässig ist, müssen Sie zunächst festlegen, welche Bedingungen gleich sind.
– Wenn nur der Originaltext-Hash als Cache-Schlüssel verwendet wird, kann die Übersetzung eines Projekts leicht für ein anderes Projekt missbraucht oder sogar mandantenübergreifend gemischt werden.
- Ein Cache-Treffer bedeutet nicht, dass das Ergebnis lieferbar ist. Der Eintrag muss den Status und die Quellaufgabe aufzeichnen. Der alte Term-Cache sollte nicht als aktuelles Ergebnis betrachtet werden.
– Hashing ist nicht gleichbedeutend mit Verschlüsselung, für zwischengespeicherte Inhalte sind weiterhin Zugriffsberechtigungen und Aufbewahrungsrichtlinien erforderlich, und die Mandanten-ID kann die Berechtigungsprüfung während der Abfrage nicht ersetzen.
- Normalisierungsregeln sollten klar definiert und mit Gegenbeispielen getestet werden, um eine Zusammenführung nicht identischer Texte zu vermeiden und so die Trefferquote zu verbessern.
Der Schlüssel zum Übersetzungs-Caching besteht darin, zu definieren, welche Bedingungen gleich sind, um eine Wiederverwendung zu ermöglichen. Der gleiche Satz „Speichern"kann in verschiedenen Projekten unterschiedliche Übersetzungen, Groß- und Kleinschreibung und Kontext haben. Wenn ausschließlich Quelltext-Hashes als Cache-Schlüssel verwendet werden, können Übersetzungen aus einem Projekt für ein anderes Projekt missbraucht oder sogar mandantenübergreifend gemischt werden.
Dieser Artikel richtet sich an Entwickler und Dokumentationsteams, die Übersetzungs-Caches entwerfen müssen. Nachdem Sie dies gelesen haben, wissen Sie, welche Bedingungen ein Cache-Schlüssel enthalten sollte, wie Sie strukturierte Serialisierung verwenden, um Mehrdeutigkeiten beim Spleißen zu vermeiden, und was Sie nach einem Cache-Treffer noch überprüfen müssen.
Wie entwerfe ich den Übersetzungs-Cache-Schlüssel? Fazit in einem Satz
Der Cache-Schlüssel sollte eine Übersetzungsentscheidung darstellen und die Wiederverwendung vorhandener Ergebnisse ist nur zulässig, wenn Ausgangssprache, Zielsprache, Terminologieversion, Richtlinienversion und Verwendungsumfang identisch sind.
| Ihre Situation | Empfohlene Praktiken | Grund |
|---|---|---|
| Derselbe Satz kann in verschiedenen Projekten unterschiedlich übersetzt werden | Beziehen Sie den Nutzungsbereich in den Cache-Schlüssel ein | Vermeiden Sie die Wiederverwendung von Übersetzungen von einem Projekt zum anderen |
| Mehrere Mandanten teilen sich denselben Cache | Die Mandanten-ID gibt den Schlüssel ein und führt während der Abfrage eine Berechtigungsprüfung durch | Die Mandanten-ID kann die Benennung nur isolieren und die Berechtigungsprüfung nicht ersetzen |
| Das Glossar wurde überarbeitet | Bei unterschiedlichen Termversionen werden neue Schlüssel generiert | Die Terminologieentscheidung hat sich geändert, der alte Cache wird nur noch für rückwirkende Zwecke verwendet |
| Ergebnisse müssen stabil reproduziert werden | Speichern Sie Ihre eigene Strategieversion und aktuelle Aufgabeninformationen | Der gleiche Modellname bedeutet nicht, dass sich das Serververhalten nie ändern wird. |
| Klicken Sie auf den vorhandenen Cache | Überprüfen Sie Status, Quellaufgaben und Qualitätszeichen | Der Tastendruck bedeutet nicht, dass das Ergebnis direkt geliefert werden kann |
Der Cache-Schlüssel sollte eine Übersetzungsentscheidung darstellen
Zumindest die folgenden Bedingungen sollten berücksichtigt werden:
- Ausgangssprache und Zielsprache
- Termversion
- Modell- oder Übersetzungsstrategieversion
- Nutzungsumfang
Wenn der Kontext die Übersetzung beeinflusst, sollte die Kontextkennung auch im Cache-Schlüssel enthalten sein.
Der gleiche Modellname garantiert nicht, dass sich der Server nie ändert. Wenn Sie reproduzierbare Ergebnisse benötigen, sollten Sie Ihre eigene Version der Strategie mit tatsächlichen Aufgabeninformationen speichern, anstatt davon auszugehen, dass ein einziger Modellname das gesamte Verhalten festlegt.
Unten finden Sie ein synthetisches Beispiel für einen lokalen Cache-Schlüssel. Es ruft keine Übersetzungsschnittstelle auf und gibt auch nicht die interne Cache-Implementierung von OmniDoc (Produktportal) an.
Die Beispiele verwenden synthetische Beispiele, um Verarbeitungsmethoden zu demonstrieren, und der Code wurde in einer isolierten Umgebung überprüft. Dies stellt jedoch keine Garantie für alle echten Dateien oder Produkteffekte dar. Bevor Sie wichtige Dokumente bearbeiten, bewahren Sie bitte die Originale auf und überprüfen Sie sie anhand der unten aufgeführten Grenzen und Annahmepunkte.
Verwenden Sie eine strukturierte Serialisierung, um Mehrdeutigkeiten beim Zusammenfügen zu vermeiden
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
Wenn text + language + version einfach zum Spleißen verwendet wird, sind die Feldgrenzen unklar und es kann leicht zu Mehrdeutigkeiten kommen. Die strukturierte Serialisierung verdeutlicht Feldnamen und Wertgrenzen. Nachdem die Schlüsselreihenfolge und das Trennzeichen festgelegt wurden, erhält derselbe Datensatz stabile Bytes.
Dieser Protokollsatz ist festgelegt. Wenn Serialisierungsregeln in Zukunft geändert werden, sollte gleichzeitig der Cache-Namespace aktualisiert werden.
Überprüfen Sie nach dem Klicken immer noch den verfügbaren Status
Cache-Einträge können von fehlgeschlagenen, abgebrochenen oder nicht überprüften Aufgaben stammen und das Drücken der Taste bedeutet nicht, dass die Ergebnisse direkt geliefert werden können.
Jeder Cache-Eintrag sollte außerdem die folgenden Informationen aufzeichnen:
- Status
- Schöpfungszeit
- Quellaufgaben
- Gütezeichen bei Bedarf
Nach der Überarbeitung der Terminologie kann der alte Cache für rückwirkende Zwecke beibehalten werden, sollte jedoch nicht weiterhin als aktuelles Ergebnis von der neuen Richtlinie verwendet werden.
| ändern | Erzeugt dieses Beispiel unterschiedliche Schlüssel? | Grund |
|---|---|---|
| Verschiedene Mieter | Ja | Vermeiden Sie Verwirrung beim Wiederverwendungsbereich |
| Verschiedene Zielsprachen | Ja | Das Übersetzungsziel hat sich geändert |
| Die Versionen der Terminologie sind unterschiedlich | Ja | Terminologieentscheidungen haben sich geändert |
| Inputs und Strategien sind gleich | NEIN | Abfrage vorhandener Ergebnisse zulassen |
Hashing ist nicht gleichbedeutend mit Verschlüsselung oder Zugriffskontrolle
Nur weil der Cache-Schlüssel SHA-256 ist, heißt das nicht, dass der Text desensibilisiert wurde. Gängige Ausdrücke können aufgezählt werden, und für zwischengespeicherte Inhalte sind weiterhin Zugriffsberechtigungen und Aufbewahrungsrichtlinien erforderlich.
Der Mandanten-ID-Eingabeschlüssel kann nur zur Isolierung der Benennung verwendet werden und kann die Berechtigungsprüfung bei der Abfrage nicht ersetzen.
Das einheitliche Entfernen von Leerzeichen, Satzzeichen oder Zahlen zur Verbesserung der Trefferquote kann dazu führen, dass nicht identische Texte zusammengeführt werden. Normalisierungsregeln sollten klar definiert und mit Gegenbeispielen getestet werden, die die Semantik ändern und nicht nur die Anzahl der gespeicherten Aufrufe.
Informationen zur entsprechenden Implementierung finden Sie unter Python hashlib.
Lassen Sie die Wiederverwendung zur Lieferung dienen
Wenn OmniDoc als Dokumentenübersetzungsportal verwendet wird, kann die äußere Aufgabenorchestrierung auch Eingabeversionen und Abnahmeprotokolle behalten.
Ob vorhandene Ergebnisse wiederverwendet werden sollen, sollte in Ihrer Aufgabenvereinbarung festgelegt werden. Dieser Artikel lässt weder darauf schließen, ob die Plattform dieselbe Caching-Strategie verwendet, noch garantiert er, dass für wiederholte Übermittlungen keine neuen Aufgaben oder Gebühren anfallen.
📊 Kernvergleich
| üben | Hauptrisiken oder Vorteile | Anregung |
|---|---|---|
Einfaches Spleißen text + language + version | Feldgrenzen sind unklar und anfällig für Mehrdeutigkeiten | Verwenden Sie stattdessen die strukturierte Serialisierung |
| Strukturierte Serialisierung | Die Grenzen zwischen Feldnamen und Werten sind klar und die Ausgabe ist stabil, nachdem die Schlüsselreihenfolge und das Trennzeichen festgelegt wurden. | Aktualisieren Sie den Cache-Namespace synchron, wenn Sie Regeln ändern |
| Verwenden Sie als Schlüssel nur Quelltext-Hashes | Kann fälschlicherweise projekt- und mandantenübergreifend wiederverwendet werden | Integrieren Sie Sprache, Terminologie, Strategien und Verwendung |
| Entfernen Sie Leerzeichen, Satzzeichen oder Zahlen einheitlich, um die Trefferquote zu verbessern | Möglichkeit, semantisch unterschiedliche Texte zusammenzuführen | Definieren Sie Regeln explizit und testen Sie sie anhand von Gegenbeispielen |
🎯 Welche Methode ist für Dich geeignet?
wenn du……
– Übersetzungen müssen über mehrere Projekte hinweg wiederverwendet werden: Fügen Sie den Verwendungsbereich in den Cache-Schlüssel ein.
- Für mehrere Mandanten: Geben Sie die Mandanten-ID in den Schlüssel ein und führen Sie bei der Abfrage eine Berechtigungsprüfung durch.
- Möchten Sie die Ergebnisse später nachverfolgen oder reproduzieren können: Speichern Sie die Richtlinienversion und die tatsächlichen Aufgabeninformationen.
- Wenn Sie die Trefferquote verbessern möchten: Definieren Sie zunächst die Normalisierungsregeln und testen Sie diese mit Gegenbeispielen, die die Semantik ändern.
- Greifen Sie auf den vorhandenen Cache zu: Überprüfen Sie zunächst den Status, die Erstellungszeit und die Quellaufgabe.
❓ Häufig gestellte Fragen (FAQ)
1. Ist es in Ordnung, nur Quelltext-Hashing für Cache-Schlüssel zu verwenden?
nicht genug. Derselbe Satz kann in verschiedenen Projekten unterschiedliche Übersetzungen, Großschreibungen oder Kontexte haben. Wenn Sie nur Hashing verwenden, kann die Übersetzung fälschlicherweise in anderen Projekten wiederverwendet oder sogar mandantenübergreifend gemischt werden.
2. Kann der Cache-Inhalt veröffentlicht werden, wenn der Cache-Schlüssel SHA-256 verwendet?
Kippen. Hashing ist nicht gleichbedeutend mit Verschlüsselung oder Desensibilisierung, gängige Phrasen können aufgezählt werden und für zwischengespeicherte Inhalte sind weiterhin Zugriffsberechtigungen und Aufbewahrungsrichtlinien erforderlich.
3. Sind die Ergebnisse gleich, wenn die Modellnamen gleich sind?
Nicht garantiert. Nur weil die Modellnamen gleich sind, heißt das nicht, dass sich der Server nie ändern wird. Wenn eine stabile Reproduktion erforderlich ist, sollten die Richtlinienversion und die tatsächlichen Aufgabeninformationen gespeichert werden.
4. Sollte nach der Überarbeitung der Terminologie der alte Cache sofort gelöscht werden?
unsicher. Der alte Cache kann für rückwirkende Zwecke beibehalten werden, sollte aber nicht weiterhin als aktuelle Ergebnisse von neuen Richtlinien verwendet werden.
📝 Zusammenfassung
Die Trefferquote des Übersetzungscache ist wichtig, es muss jedoch zunächst definiert werden, welche Bedingungen gleich sind, bevor eine Wiederverwendung zulässig ist. Durch die Integration von Sprache, Terminologie, Richtlinien, Nutzungsumfang und Kontext in Cache-Schlüssel sowie Berechtigungsprüfungen und Statusüberprüfungen kann die Wiederverwendung effizient und zuverlässig erfolgen.


