Heim Backend-Entwicklung Python-Tutorial Semantischer Abgleich von Textbezeichnern mithilfe von LASER-Einbettungen in Python

Semantischer Abgleich von Textbezeichnern mithilfe von LASER-Einbettungen in Python

Nov 25, 2024 am 05:33 AM

Semantic Matching of Text Identifiers Using LASER Embeddings in Python

Beim Einsatz von OCR zur Digitalisierung von Finanzberichten stoßen Sie möglicherweise auf verschiedene Ansätze zur Erkennung bestimmter Kategorien in diesen Berichten. Herkömmliche Methoden wie der Levenshtein-Algorithmus können beispielsweise für den String-Abgleich basierend auf der Bearbeitungsentfernung verwendet werden, was ihn effektiv für die Behandlung von nahezu Übereinstimmungen macht, wie z. B. die Korrektur von Tippfehlern oder kleinen Abweichungen im Text.

Die Herausforderung wird jedoch komplexer, wenn Sie mehrere Kategorien in einer einzelnen Zeile eines Berichts erkennen müssen, insbesondere wenn diese Kategorien möglicherweise nicht genau wie erwartet angezeigt werden oder sich semantisch überschneiden könnten.

In diesem Beitrag analysieren wir einen semantischen Matching-Ansatz unter Verwendung der LASER-Einbettungen (Language-Agnostic SEntence Representations) von Facebook und zeigen, wie er diese Aufgabe effektiv bewältigen kann.

Problem

Das Ziel besteht darin, bestimmte Finanzbegriffe (Kategorien) in einer bestimmten Textzeile zu identifizieren. Nehmen wir an, wir haben einen festen Satz vordefinierter Kategorien, die alle möglichen Begriffe von Interesse darstellen, wie zum Beispiel:

["Umsatz", "Betriebsaufwand", "Betriebsgewinn", "Abschreibung", "Zinsen", "Nettogewinn", "Steuer", "Gewinn nach Steuern", "Metrik 1"]

Angenommen eine Eingabezeile wie:

„Betriebsgewinn, Nettogewinn und Gewinn nach Steuern“

Wir wollen herausfinden, welche Bezeichner in dieser Zeile vorkommen.

Semantisches Matching mit LASER

Anstatt uns auf exakte oder unscharfe Textübereinstimmungen zu verlassen, verwenden wir semantische Ähnlichkeit. Dieser Ansatz nutzt LASER-Einbettungen, um die semantische Bedeutung von Text zu erfassen und ihn mithilfe der Kosinusähnlichkeit zu vergleichen.

Durchführung

Vorverarbeitung des Textes

Vor dem Einbetten wird der Text vorverarbeitet, indem er in Kleinbuchstaben umgewandelt und zusätzliche Leerzeichen entfernt wird. Dies sorgt für Einheitlichkeit.

def preprocess(text):
    return text.lower().strip()
Nach dem Login kopieren
Nach dem Login kopieren

Einbetten von Bezeichnern und Eingabezeilen

Der LASER-Encoder generiert normalisierte Einbettungen sowohl für die Liste der Identifikatoren als auch für die Eingabe-/OCR-Zeile.

identifier_embeddings = encoder.encode_sentences(identifiers, normalize_embeddings=True)
ocr_line_embedding = encoder.encode_sentences([ocr_line], normalize_embeddings=True)[0]

Nach dem Login kopieren
Nach dem Login kopieren

Rangfolge der Identifikatoren nach Spezifität

Längere Bezeichner werden priorisiert, indem sie nach der Wortanzahl sortiert werden. Dies hilft bei der Handhabung verschachtelter Übereinstimmungen, bei denen längere Bezeichner möglicherweise kürzere Bezeichner subsumieren (z. B. „Gewinn nach Steuern“ subsumiert „Gewinn“).

ranked_identifiers = sorted(identifiers, key=lambda x: len(x.split()), reverse=True)
ranked_embeddings = encoder.encode_sentences(ranked_identifiers, normalize_embeddings=True)

Nach dem Login kopieren
Nach dem Login kopieren

Ähnlichkeit berechnen

Mithilfe der Kosinusähnlichkeit messen wir, wie semantisch jeder Bezeichner der Eingabezeile ähnelt. Bezeichner mit einer Ähnlichkeit über einem bestimmten Schwellenwert gelten als Übereinstimmungen.

matches = []
threshold = 0.6

for idx, identifier_embedding in enumerate(ranked_embeddings):
    similarity = cosine_similarity([identifier_embedding], [ocr_line_embedding])[0][0]
    if similarity >= threshold:
        matches.append((ranked_identifiers[idx], similarity))

Nach dem Login kopieren

Verschachtelte Übereinstimmungen auflösen

Um mit überlappenden Bezeichnern umzugehen, werden längere Übereinstimmungen priorisiert, um sicherzustellen, dass kürzere Übereinstimmungen darin ausgeschlossen werden.

def preprocess(text):
    return text.lower().strip()
Nach dem Login kopieren
Nach dem Login kopieren

Ergebnisse

Wenn der Code ausgeführt wird, liefert die Ausgabe eine Liste der erkannten Übereinstimmungen zusammen mit ihren Ähnlichkeitswerten. Für die Beispieleingabe:

identifier_embeddings = encoder.encode_sentences(identifiers, normalize_embeddings=True)
ocr_line_embedding = encoder.encode_sentences([ocr_line], normalize_embeddings=True)[0]

Nach dem Login kopieren
Nach dem Login kopieren

Überlegungen zu längeren und komplexen Eingaben

Diese Methode funktioniert gut in strukturierten Finanzberichten mit mehreren Kategorien in einer einzigen Zeile, vorausgesetzt, es gibt nicht zu viele Kategorien oder viel nicht zusammenhängenden Text. Allerdings kann sich die Genauigkeit bei längeren, komplexen Eingaben oder unstrukturiertem benutzergeneriertem Text verschlechtern, da die Einbettungen möglicherweise Schwierigkeiten haben, sich auf relevante Kategorien zu konzentrieren. Bei verrauschten oder unvorhersehbaren Eingaben ist es weniger zuverlässig.

Abschluss

Dieser Beitrag zeigt, wie LASER-Einbettungen ein nützliches Werkzeug zur Erkennung mehrerer Kategorien im Text sein können. Ist es die beste Option? Vielleicht nicht, aber es ist sicherlich eine der Optionen, die es wert sind, in Betracht gezogen zu werden, insbesondere wenn es um komplexe Szenarien geht, bei denen herkömmliche Matching-Techniken möglicherweise nicht ausreichen.

Vollständiger Code

ranked_identifiers = sorted(identifiers, key=lambda x: len(x.split()), reverse=True)
ranked_embeddings = encoder.encode_sentences(ranked_identifiers, normalize_embeddings=True)

Nach dem Login kopieren
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonSemantischer Abgleich von Textbezeichnern mithilfe von LASER-Einbettungen in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

<🎜>: Bubble Gum Simulator Infinity - So erhalten und verwenden Sie Royal Keys
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusionssystem, erklärt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Flüstern des Hexenbaum
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Java-Tutorial
1672
14
PHP-Tutorial
1276
29
C#-Tutorial
1256
24
Python vs. C: Lernkurven und Benutzerfreundlichkeit Python vs. C: Lernkurven und Benutzerfreundlichkeit Apr 19, 2025 am 12:20 AM

Python ist leichter zu lernen und zu verwenden, während C leistungsfähiger, aber komplexer ist. 1. Python -Syntax ist prägnant und für Anfänger geeignet. Durch die dynamische Tippen und die automatische Speicherverwaltung können Sie die Verwendung einfach zu verwenden, kann jedoch zur Laufzeitfehler führen. 2.C bietet Steuerung und erweiterte Funktionen auf niedrigem Niveau, geeignet für Hochleistungsanwendungen, hat jedoch einen hohen Lernschwellenwert und erfordert manuellem Speicher und Typensicherheitsmanagement.

Python und Zeit: Machen Sie das Beste aus Ihrer Studienzeit Python und Zeit: Machen Sie das Beste aus Ihrer Studienzeit Apr 14, 2025 am 12:02 AM

Um die Effizienz des Lernens von Python in einer begrenzten Zeit zu maximieren, können Sie Pythons DateTime-, Zeit- und Zeitplanmodule verwenden. 1. Das DateTime -Modul wird verwendet, um die Lernzeit aufzuzeichnen und zu planen. 2. Das Zeitmodul hilft, die Studie zu setzen und Zeit zu ruhen. 3. Das Zeitplanmodul arrangiert automatisch wöchentliche Lernaufgaben.

Python vs. C: Erforschung von Leistung und Effizienz erforschen Python vs. C: Erforschung von Leistung und Effizienz erforschen Apr 18, 2025 am 12:20 AM

Python ist in der Entwicklungseffizienz besser als C, aber C ist in der Ausführungsleistung höher. 1. Pythons prägnante Syntax und reiche Bibliotheken verbessern die Entwicklungseffizienz. 2. Die Kompilierungsmerkmale von Compilation und die Hardwarekontrolle verbessern die Ausführungsleistung. Bei einer Auswahl müssen Sie die Entwicklungsgeschwindigkeit und die Ausführungseffizienz basierend auf den Projektanforderungen abwägen.

Python lernen: Ist 2 Stunden tägliches Studium ausreichend? Python lernen: Ist 2 Stunden tägliches Studium ausreichend? Apr 18, 2025 am 12:22 AM

Ist es genug, um Python für zwei Stunden am Tag zu lernen? Es hängt von Ihren Zielen und Lernmethoden ab. 1) Entwickeln Sie einen klaren Lernplan, 2) Wählen Sie geeignete Lernressourcen und -methoden aus, 3) praktizieren und prüfen und konsolidieren Sie praktische Praxis und Überprüfung und konsolidieren Sie und Sie können die Grundkenntnisse und die erweiterten Funktionen von Python während dieser Zeit nach und nach beherrschen.

Python vs. C: Verständnis der wichtigsten Unterschiede Python vs. C: Verständnis der wichtigsten Unterschiede Apr 21, 2025 am 12:18 AM

Python und C haben jeweils ihre eigenen Vorteile, und die Wahl sollte auf Projektanforderungen beruhen. 1) Python ist aufgrund seiner prägnanten Syntax und der dynamischen Typisierung für die schnelle Entwicklung und Datenverarbeitung geeignet. 2) C ist aufgrund seiner statischen Tipp- und manuellen Speicherverwaltung für hohe Leistung und Systemprogrammierung geeignet.

Welches ist Teil der Python Standard Library: Listen oder Arrays? Welches ist Teil der Python Standard Library: Listen oder Arrays? Apr 27, 2025 am 12:03 AM

PythonlistsarePartThestandardlibrary, whilearraysarenot.listarebuilt-in, vielseitig und UNDUSEDFORSPORINGECollections, während dieArrayRay-thearrayModulei und loses und loses und losesaluseduetolimitedFunctionality.

Python: Automatisierung, Skript- und Aufgabenverwaltung Python: Automatisierung, Skript- und Aufgabenverwaltung Apr 16, 2025 am 12:14 AM

Python zeichnet sich in Automatisierung, Skript und Aufgabenverwaltung aus. 1) Automatisierung: Die Sicherungssicherung wird durch Standardbibliotheken wie OS und Shutil realisiert. 2) Skriptschreiben: Verwenden Sie die PSUTIL -Bibliothek, um die Systemressourcen zu überwachen. 3) Aufgabenverwaltung: Verwenden Sie die Zeitplanbibliothek, um Aufgaben zu planen. Die Benutzerfreundlichkeit von Python und die Unterstützung der reichhaltigen Bibliothek machen es zum bevorzugten Werkzeug in diesen Bereichen.

Python für wissenschaftliches Computer: Ein detailliertes Aussehen Python für wissenschaftliches Computer: Ein detailliertes Aussehen Apr 19, 2025 am 12:15 AM

Zu den Anwendungen von Python im wissenschaftlichen Computer gehören Datenanalyse, maschinelles Lernen, numerische Simulation und Visualisierung. 1.Numpy bietet effiziente mehrdimensionale Arrays und mathematische Funktionen. 2. Scipy erweitert die Numpy -Funktionalität und bietet Optimierungs- und lineare Algebra -Tools. 3.. Pandas wird zur Datenverarbeitung und -analyse verwendet. 4.Matplotlib wird verwendet, um verschiedene Grafiken und visuelle Ergebnisse zu erzeugen.

See all articles