


Semantischer Abgleich von Textbezeichnern mithilfe von LASER-Einbettungen 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()
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]
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)
Ä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))
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()
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]
Ü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)
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!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

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

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen











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.

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 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 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.

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

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.

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.

Zu den wichtigsten Anwendungen von Python in der Webentwicklung gehören die Verwendung von Django- und Flask -Frameworks, API -Entwicklung, Datenanalyse und Visualisierung, maschinelles Lernen und KI sowie Leistungsoptimierung. 1. Django und Flask Framework: Django eignet sich für die schnelle Entwicklung komplexer Anwendungen, und Flask eignet sich für kleine oder hochmobile Projekte. 2. API -Entwicklung: Verwenden Sie Flask oder Djangorestframework, um RESTFUFFUPI zu erstellen. 3. Datenanalyse und Visualisierung: Verwenden Sie Python, um Daten zu verarbeiten und über die Webschnittstelle anzuzeigen. 4. Maschinelles Lernen und KI: Python wird verwendet, um intelligente Webanwendungen zu erstellen. 5. Leistungsoptimierung: optimiert durch asynchrones Programmieren, Caching und Code
